def test_noElement(self): """ When None is passed as element, None is returned. """ element = None form = data_form.findForm(element, 'myns') self.assertIdentical(None, form)
def test_noForm(self): """ When no child element is a form, None is returned. """ element = domish.Element((None, 'test')) form = data_form.findForm(element, 'myns') self.assertIdentical(None, form)
def _parse_iq(self, iq): cmd = getCommandElement(iq) form = data_form.findForm(cmd, formNamespace=collab.COLLAB_NS) if not form: raise ValueError('No Collab forms') return form.getValues()
def test_otherFormTypeCancel(self): """ Cancelled forms with another FORM_TYPE are ignored. """ element = domish.Element((None, 'test')) cancelledForm = data_form.Form('cancel', formNamespace='otherns') element.addChild(cancelledForm.toElement()) form = data_form.findForm(element, 'myns') self.assertIdentical(None, form)
def test_otherFormType(self): """ Forms with other FORM_TYPEs are ignored. """ element = domish.Element((None, 'test')) otherForm = data_form.Form('submit', formNamespace='otherns') element.addChild(otherForm.toElement()) form = data_form.findForm(element, 'myns') self.assertIdentical(None, form)
def test_noFormTypeCancel(self): """ Cancelled forms don't have a FORM_TYPE field, the first is returned. """ element = domish.Element((None, 'test')) cancelledForm = data_form.Form('cancel') element.addChild(cancelledForm.toElement()) form = data_form.findForm(element, 'myns') self.assertEqual('cancel', form.formType)
def _parse_optionsWithSubscribe(self, verbElement): for element in verbElement.parent.elements(): if element.name == "options" and element.uri == NS_PUBSUB: form = data_form.findForm(element, NS_PUBSUB_SUBSCRIBE_OPTIONS) if form is not None: if form.formType != "submit": raise BadRequest(text=u"Unexpected form type '%s'" % form.formType) else: form = data_form.Form("submit", formNamespace=NS_PUBSUB_SUBSCRIBE_OPTIONS) self.options = form
def _parse_default(self, verbElement): """ Parse node type out of a request for the default node configuration. """ form = data_form.findForm(verbElement, NS_PUBSUB_NODE_CONFIG) if form is not None and form.formType == 'submit': values = form.getValues() self.nodeType = values.get('pubsub#node_type', 'leaf') else: self.nodeType = 'leaf'
def _parse_default(self, verbElement): """ Parse node type out of a request for the default node configuration. """ form = data_form.findForm(verbElement, NS_PUBSUB_NODE_CONFIG) if form is not None and form.formType == "submit": values = form.getValues() self.nodeType = values.get("pubsub#node_type", "leaf") else: self.nodeType = "leaf"
def test_ConfigureCollabNodeLoadBalancerPage(self): p = pages.ConfigureCollabNodeLoadBalancerPage() el = yield p.renderToElement(self.cmd_in, None) cmd = Command.fromElement(el) self.assertTrue(cmd.actions is not None) self.assertTrue(cmd.form is not None) form = data_form.findForm(cmd.toElement(), collab.COLLAB_NS) self.assertTrue(form is not None) self.assertTrue('frequency' in form.fields) self.assertEquals(form.fields['frequency'].fieldType, 'text-single')
def _parse_optionsWithSubscribe(self, verbElement): for element in verbElement.parent.elements(): if element.name == 'options' and element.uri == NS_PUBSUB: form = data_form.findForm(element, NS_PUBSUB_SUBSCRIBE_OPTIONS) if form is not None: if form.formType != 'submit': raise BadRequest(text=u"Unexpected form type '%s'" % form.formType) else: form = data_form.Form( 'submit', formNamespace=NS_PUBSUB_SUBSCRIBE_OPTIONS) self.options = form
def _parse_configure(self, verbElement): """ Parse options out of a request for setting the node configuration. """ form = data_form.findForm(verbElement, NS_PUBSUB_NODE_CONFIG) if form is not None: if form.formType in ("submit", "cancel"): self.options = form else: raise BadRequest(text=u"Unexpected form type '%s'" % form.formType) else: raise BadRequest(text="Missing configuration form")
def _parse_options(self, verbElement): """ Parse options form out of a subscription options request. """ form = data_form.findForm(verbElement, NS_PUBSUB_SUBSCRIBE_OPTIONS) if form is not None: if form.formType in ("submit", "cancel"): self.options = form else: raise BadRequest(text=u"Unexpected form type '%s'" % form.formType) else: raise BadRequest(text="Missing options form")
def test_addUser(self): d = self.protocol.addUser(u'*****@*****.**', u'secret') iq = self.stub.output[-1] self.assertEqual(u'example.com', iq.getAttribute(u'to')) self.assertEqual(u'set', iq.getAttribute(u'type')) self.assertEqual(protocols.NS_COMMANDS, iq.command.uri) self.failIf(iq.command is None) self.assertEqual(protocols.NODE_ADMIN_ADD_USER, iq.command.getAttribute('node')) self.assertEqual('execute', iq.command.getAttribute('action')) response = toResponse(iq, u'result') response['to'] = \ self.protocol.xmlstream.factory.authenticator.jid.full() command = response.addElement((protocols.NS_COMMANDS, u'command')) command[u'node'] = protocols.NODE_ADMIN_ADD_USER command[u'status'] = u'executing' command[u'sessionid'] = u'sid-0' form = data_form.Form(u'form') form_type = data_form.Field(u'hidden', var=u'FORM_TYPE', value=protocols.NODE_ADMIN) userjid = data_form.Field(u'jid-single', var=u'accountjid', required=True) password = data_form.Field(u'text-private', var=u'password', required=True) password_verify = data_form.Field(u'text-private', var=u'password-verify', required=True) form.addField(form_type) form.addField(userjid) form.addField(password) form.addField(password_verify) command.addContent(form.toElement()) self.stub.send(response) iq = self.stub.output[-1] self.assertEqual(u'set', iq.getAttribute(u'type')) self.assertEqual(protocols.NS_COMMANDS, iq.command.uri) self.assertEqual(protocols.NODE_ADMIN_ADD_USER, iq.command.getAttribute(u'node')) self.assertEqual(u'sid-0', iq.command.getAttribute(u'sessionid')) form = data_form.findForm(iq.command, protocols.NODE_ADMIN) self.assertEqual(u'submit', form.formType) self.failUnless(u'accountjid' in form.fields) self.assertEqual(u'*****@*****.**', form.fields['accountjid'].value) self.failUnless(u'password' in form.fields) self.assertEqual(u'secret', form.fields['password'].value) self.failUnless(u'password-verify' in form.fields) self.assertEqual(u'secret', form.fields['password-verify'].value)
def _parse_configureOrNone(self, verbElement): """ Parse optional node configuration form in create request. """ for element in verbElement.parent.elements(): if element.uri == NS_PUBSUB and element.name == "configure": form = data_form.findForm(element, NS_PUBSUB_NODE_CONFIG) if form is not None: if form.formType != "submit": raise BadRequest(text=u"Unexpected form type '%s'" % form.formType) else: form = data_form.Form("submit", formNamespace=NS_PUBSUB_NODE_CONFIG) self.options = form
def test_InplaceConfigurePubsubNodePage(self): p = pages.InplaceConfigurePubsubNodePage(self.getPSNodes) el = yield p.renderToElement(self.cmd_in, None) cmd = Command.fromElement(el) self.assertTrue(self.getPSNodes.called) self.assertTrue(cmd.actions is not None) self.assertTrue(cmd.form is not None) form = data_form.findForm(cmd.toElement(), collab.COLLAB_NS) self.assertTrue(form is not None) self.assertTrue('name' in form.fields) self.assertEquals(form.fields['name'].fieldType, 'list-single')
def test_UnregisterMachinePage(self): p = pages.UnregisterMachinePage(self.getRegistered) el = yield p.renderToElement(self.cmd_in, None) cmd = Command.fromElement(el) self.assertTrue(self.getRegistered.called) self.assertTrue(cmd.actions is not None) self.assertTrue(cmd.form is not None) form = data_form.findForm(cmd.toElement(), collab.COLLAB_NS) self.assertTrue(form is not None) self.assertTrue('machines' in form.fields) self.assertEquals(form.fields['machines'].fieldType, 'list-multi')
def _parse_configure(self, verbElement): """ Parse options out of a request for setting the node configuration. """ form = data_form.findForm(verbElement, NS_PUBSUB_NODE_CONFIG) if form is not None: if form.formType in ('submit', 'cancel'): self.options = form else: raise BadRequest(text=u"Unexpected form type '%s'" % form.formType) else: raise BadRequest(text="Missing configuration form")
def _parse_options(self, verbElement): """ Parse options form out of a subscription options request. """ form = data_form.findForm(verbElement, NS_PUBSUB_SUBSCRIBE_OPTIONS) if form is not None: if form.formType in ('submit', 'cancel'): self.options = form else: raise BadRequest(text=u"Unexpected form type '%s'" % form.formType) else: raise BadRequest(text="Missing options form")
def test_addUser(self): self.protocol.addUser(u'*****@*****.**', u'secret') iq = self.stub.output[-1] self.assertEqual(u'example.com', iq.getAttribute(u'to')) self.assertEqual(u'set', iq.getAttribute(u'type')) self.assertEqual(protocols.NS_COMMANDS, iq.command.uri) self.failIf(iq.command is None) self.assertEqual(protocols.NODE_ADMIN_ADD_USER, iq.command.getAttribute('node')) self.assertEqual('execute', iq.command.getAttribute('action')) response = toResponse(iq, u'result') response['to'] = \ self.protocol.xmlstream.factory.authenticator.jid.full() command = response.addElement((protocols.NS_COMMANDS, u'command')) command[u'node'] = protocols.NODE_ADMIN_ADD_USER command[u'status'] = u'executing' command[u'sessionid'] = u'sid-0' form = data_form.Form(u'form') form_type = data_form.Field(u'hidden', var=u'FORM_TYPE', value=protocols.NODE_ADMIN) userjid = data_form.Field(u'jid-single', var=u'accountjid', required=True) password = data_form.Field(u'text-private', var=u'password', required=True) password_verify = data_form.Field(u'text-private', var=u'password-verify', required=True) form.addField(form_type) form.addField(userjid) form.addField(password) form.addField(password_verify) command.addContent(form.toElement()) self.stub.send(response) iq = self.stub.output[-1] self.assertEqual(u'set', iq.getAttribute(u'type')) self.assertEqual(protocols.NS_COMMANDS, iq.command.uri) self.assertEqual(protocols.NODE_ADMIN_ADD_USER, iq.command.getAttribute(u'node')) self.assertEqual(u'sid-0', iq.command.getAttribute(u'sessionid')) form = data_form.findForm(iq.command, protocols.NODE_ADMIN) self.assertEqual(u'submit', form.formType) self.failUnless(u'accountjid' in form.fields) self.assertEqual(u'*****@*****.**', form.fields['accountjid'].value) self.failUnless(u'password' in form.fields) self.assertEqual(u'secret', form.fields['password'].value) self.failUnless(u'password-verify' in form.fields) self.assertEqual(u'secret', form.fields['password-verify'].value)
def _parse_configureOrNone(self, verbElement): """ Parse optional node configuration form in create request. """ for element in verbElement.parent.elements(): if element.uri == NS_PUBSUB and element.name == 'configure': form = data_form.findForm(element, NS_PUBSUB_NODE_CONFIG) if form is not None: if form.formType != 'submit': raise BadRequest(text=u"Unexpected form type '%s'" % form.formType) else: form = data_form.Form('submit', formNamespace=NS_PUBSUB_NODE_CONFIG) self.options = form
def test_CreateCollabNodePage(self): p = pages.CreateCollabNodePage(self.getRegistered, self.getComponents) el = yield p.renderToElement(self.cmd_in, None) cmd = Command.fromElement(el) self.assertTrue(self.getRegistered.called) self.assertTrue(self.getComponents.called) self.assertTrue(cmd.actions is not None) self.assertTrue(cmd.form is not None) form = data_form.findForm(cmd.toElement(), collab.COLLAB_NS) self.assertTrue(form is not None) self.assertTrue('component' in form.fields) self.assertTrue('machine' in form.fields) self.assertEquals(form.fields['component'].fieldType, 'list-single') self.assertEquals(form.fields['machine'].fieldType, 'list-single')
def test_ConfigurePubsubNodeSubscribersPage(self): p = pages.ConfigurePubsubNodeSubscribersPage(self.getSubs) p._getOptions = Mock(return_value=[]) testState = {'name': 'george', 'admins': [], 'publishers': []} el = yield p.renderToElement(self.cmd_in, testState) cmd = Command.fromElement(el) self.assertTrue(self.getSubs.called) self.assertTrue(p._getOptions.called) self.assertTrue(cmd.actions is not None) self.assertTrue(cmd.form is not None) form = data_form.findForm(cmd.toElement(), collab.COLLAB_NS) self.assertTrue(form is not None) self.assertTrue('subscribers' in form.fields) self.assertEquals(form.fields['subscribers'].fieldType, 'list-multi')
def test_sendAnnouncement(self): self.protocol.sendAnnouncement(u'Hello world') iq = self.stub.output[-1] self.assertEqual(u'example.com', iq.getAttribute(u'to')) self.assertEqual(u'set', iq.getAttribute(u'type')) self.assertEqual(protocols.NS_COMMANDS, iq.command.uri) self.failIf(iq.command is None) self.assertEqual(protocols.NODE_ADMIN_ANNOUNCE, iq.command.getAttribute('node')) self.assertEqual('execute', iq.command.getAttribute('action')) response = toResponse(iq, u'result') response['to'] = \ self.protocol.xmlstream.factory.authenticator.jid.full() command = response.addElement((protocols.NS_COMMANDS, u'command')) command[u'node'] = protocols.NODE_ADMIN_ANNOUNCE command[u'status'] = u'executing' command[u'sessionid'] = u'sid-0' form = data_form.Form(u'form') form_type = data_form.Field(u'hidden', var=u'FORM_TYPE', value=protocols.NODE_ADMIN) subject = data_form.Field(u'text-single', var=u'subject') body = data_form.Field(u'text-multi', var=u'body') form.addField(form_type) form.addField(subject) form.addField(body) command.addContent(form.toElement()) self.stub.send(response) iq = self.stub.output[-1] self.assertEqual(u'set', iq.getAttribute(u'type')) self.assertEqual(protocols.NS_COMMANDS, iq.command.uri) self.assertEqual(protocols.NODE_ADMIN_ANNOUNCE, iq.command.getAttribute(u'node')) self.assertEqual(u'sid-0', iq.command.getAttribute(u'sessionid')) form = data_form.findForm(iq.command, protocols.NODE_ADMIN) self.assertEqual(u'submit', form.formType) self.failUnless(u'subject' in form.fields) self.assertEqual(u'Announce', form.fields['subject'].value) self.failUnless(u'body' in form.fields) self.assertEqual(u'Hello world', form.fields['body'].value)
def formReceived(iq): command = iq.command sessionid = command['sessionid'] form = data_form.findForm(command, NODE_ADMIN) response = IQ(self.xmlstream, 'set') response['to'] = iq['from'] response['id'] = iq['id'] command = response.addElement((NS_COMMANDS, 'command')) command['node'] = NODE_ADMIN_DELETE_USER command['sessionid'] = sessionid form.formType = 'submit' form.fields['accountjids'].values = userjids command.addChild(form.toElement()) d = response.send() d.addCallbacks(resultReceived, error) return d
def formReceived(iq): command = iq.command sessionid = command["sessionid"] form = data_form.findForm(command, NODE_ADMIN) response = IQ(self.xmlstream, "set") response["to"] = iq["from"] response["id"] = iq["id"] command = response.addElement((NS_COMMANDS, "command")) command["node"] = NODE_ADMIN_DELETE_USER command["sessionid"] = sessionid form.formType = "submit" form.fields["accountjids"].values = userjids command.addChild(form.toElement()) d = response.send() d.addCallbacks(resultReceived, error) return d
def test_deleteUsers(self): self.protocol.deleteUsers(u'*****@*****.**') iq = self.stub.output[-1] self.assertEqual(u'example.com', iq.getAttribute(u'to')) self.assertEqual(u'set', iq.getAttribute(u'type')) self.assertEqual(protocols.NS_COMMANDS, iq.command.uri) self.failIf(iq.command is None) self.assertEqual(protocols.NODE_ADMIN_DELETE_USER, iq.command.getAttribute('node')) self.assertEqual('execute', iq.command.getAttribute('action')) response = toResponse(iq, u'result') response['to'] = \ self.protocol.xmlstream.factory.authenticator.jid.full() command = response.addElement((protocols.NS_COMMANDS, u'command')) command[u'node'] = protocols.NODE_ADMIN_DELETE_USER command[u'status'] = u'executing' command[u'sessionid'] = u'sid-0' form = data_form.Form(u'form') form_type = data_form.Field(u'hidden', var=u'FORM_TYPE', value=protocols.NODE_ADMIN) userjids = data_form.Field(u'jid-multi', var=u'accountjids') form.addField(form_type) form.addField(userjids) command.addContent(form.toElement()) self.stub.send(response) iq = self.stub.output[-1] self.assertEqual(u'set', iq.getAttribute(u'type')) self.assertEqual(protocols.NS_COMMANDS, iq.command.uri) self.assertEqual(protocols.NODE_ADMIN_DELETE_USER, iq.command.getAttribute(u'node')) self.assertEqual(u'sid-0', iq.command.getAttribute(u'sessionid')) form = data_form.findForm(iq.command, protocols.NODE_ADMIN) self.assertEqual(u'submit', form.formType) self.failUnless(u'accountjids' in form.fields) self.assertEqual([u'*****@*****.**'], form.fields['accountjids'].values)
def formReceived(iq): command = iq.command sessionid = command['sessionid'] form = data_form.findForm(command, NODE_ADMIN) #from twisted.words.protocols.jabber.xmlstream import toResponse #response = toResponse(iq, 'set') response = IQ(self.xmlstream, 'set') response['to'] = iq['from'] response['id'] = iq['id'] command = response.addElement((NS_COMMANDS, 'command')) command['node'] = NODE_ADMIN_ANNOUNCE command['sessionid'] = sessionid form.formType = 'submit' form.fields['subject'].value = subject form.fields['body'].value = body command.addChild(form.toElement()) d = response.send() d.addCallbacks(resultReceived, error) return d
def formReceived(iq): command = iq.command sessionid = command["sessionid"] form = data_form.findForm(command, NODE_ADMIN) # from twisted.words.protocols.jabber.xmlstream import toResponse # response = toResponse(iq, 'set') response = IQ(self.xmlstream, "set") response["to"] = iq["from"] response["id"] = iq["id"] command = response.addElement((NS_COMMANDS, "command")) command["node"] = NODE_ADMIN_ANNOUNCE command["sessionid"] = sessionid form.formType = "submit" form.fields["subject"].value = subject form.fields["body"].value = body command.addChild(form.toElement()) d = response.send() d.addCallbacks(resultReceived, error) return d
def test_findForm(self): element = domish.Element((None, 'test')) theForm = data_form.Form('submit', formNamespace='myns') element.addChild(theForm.toElement()) form = data_form.findForm(element, 'myns') self.assertEqual('myns', form.formNamespace)
def cb(iq): form = data_form.findForm(iq.pubsub.options, NS_PUBSUB_SUBSCRIBE_OPTIONS) form.typeCheck() return form
def cb(response): form = data_form.findForm(response.query, NS_MUC_CONFIG) return form
def cb(response): form = data_form.findForm(response.query, NS_MUC_REGISTER) return form
def test_noFormType(self): element = domish.Element((None, 'test')) otherForm = data_form.Form('submit') element.addChild(otherForm.toElement()) form = data_form.findForm(element, 'myns') self.assertIdentical(None, form)