Changeset 27:a9704141033a in ralphm-patches for pubsub-create-configure.patch


Ignore:
Timestamp:
Jan 2, 2010, 3:32:52 PM (11 years ago)
Author:
Ralph Meijer <ralphm@…>
Branch:
default
Message:

Ensure all modified code has unittests, add setOptions to PubSubClient?.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pubsub-create-configure.patch

    r21 r27  
    1 diff -r d64e96596c50 -r 8425a88d49f5 wokkel/pubsub.py
    2 --- a/wokkel/pubsub.py  Wed Dec 30 21:41:55 2009 +0100
    3 +++ b/wokkel/pubsub.py  Wed Dec 30 21:42:27 2009 +0100
     1Add support for configuration options in node creation requests
     2
     3diff -r 259252e5664b wokkel/pubsub.py
     4--- a/wokkel/pubsub.py  Sat Jan 02 14:28:16 2010 +0100
     5+++ b/wokkel/pubsub.py  Sat Jan 02 15:27:24 2010 +0100
    46@@ -234,7 +234,7 @@
    57         'optionsSet': ['nodeOrEmpty', 'jid', 'options'],
     
    2628+                        self.options = form
    2729+                    else:
    28 +                        raise BadRequest(text="Unexpected form type %r" %
     30+                        raise BadRequest(text=u"Unexpected form type '%s'" %
    2931+                                              form.formType)
    3032+                else:
     
    4547     def _parse_itemIdentifiers(self, verbElement):
    4648         """
    47 @@ -602,7 +629,8 @@
     49@@ -607,7 +634,8 @@
    4850         pass
    4951 
     
    5557         Create a publish subscribe node.
    5658 
    57 @@ -610,12 +638,20 @@
     59@@ -615,12 +643,20 @@
    5860         @type service: L{JID}
    5961         @param nodeIdentifier: Optional suggestion for the id of the node.
     
    6870 
    6971+        if options:
    70 +            form = data_form.Form(formType='result',
     72+            form = data_form.Form(formType='submit',
    7173+                                  formNamespace=NS_PUBSUB_NODE_CONFIG)
    7274+            form.makeFields(options)
     
    7678             try:
    7779                 new_node = iq.pubsub.create["node"]
    78 @@ -887,8 +923,6 @@
    79              d = self.getNodes(requestor, target)
    80          else:
    81              d = defer.succeed([])
    82 -           
    83 -
    84  
    85          d.addCallback(lambda nodes: [disco.DiscoItem(target, node)
    86                                       for node in nodes])
    87 @@ -998,6 +1032,12 @@
     80@@ -1001,6 +1037,12 @@
    8881         form.typeCheck(fieldDefs, filterUnknown=True)
    8982 
     
    9891         if request.nodeType not in ('leaf', 'collection'):
    9992             raise error.StanzaError('not-acceptable')
    100 diff -r d64e96596c50 -r 8425a88d49f5 wokkel/test/test_pubsub.py
    101 --- a/wokkel/test/test_pubsub.py        Wed Dec 30 21:41:55 2009 +0100
    102 +++ b/wokkel/test/test_pubsub.py        Wed Dec 30 21:42:27 2009 +0100
     93diff -r 259252e5664b wokkel/test/test_pubsub.py
     94--- a/wokkel/test/test_pubsub.py        Sat Jan 02 14:28:16 2010 +0100
     95+++ b/wokkel/test/test_pubsub.py        Sat Jan 02 15:27:24 2010 +0100
    10396@@ -19,7 +19,7 @@
    10497 from wokkel.test.helpers import TestableRequestHandlerMixin, XmlStreamStub
     
    110103 NS_PUBSUB_EVENT = 'http://jabber.org/protocol/pubsub#event'
    111104 NS_PUBSUB_OWNER = 'http://jabber.org/protocol/pubsub#owner'
    112 @@ -271,6 +271,40 @@
     105@@ -271,6 +271,41 @@
    113106         return d
    114107 
     
    141134+        # check that it has a configuration form
    142135+        form = data_form.findForm(children[0], NS_PUBSUB_NODE_CONFIG)
    143 +        self.assertNotIdentical(None, form)
     136+        self.assertEqual('submit', form.formType)
     137+
    144138+
    145139+        response = toResponse(iq, 'result')
     
    151145         """
    152146         Test sending delete request.
    153 @@ -935,6 +969,7 @@
     147@@ -936,6 +971,7 @@
    154148         self.assertEqual(JID('user@example.org'), request.sender)
    155149         self.assertEqual(JID('pubsub.example.org'), request.recipient)
     
    159153 
    160154     def test_fromElementCreateInstant(self):
    161 @@ -955,6 +990,78 @@
     155@@ -956,6 +992,109 @@
    162156         self.assertIdentical(None, request.nodeIdentifier)
    163157 
     
    235229+
    236230+
     231+    def test_fromElementCreateConfigureBadFormType(self):
     232+        """
     233+        The form of a node creation request should have the right type.
     234+        """
     235+
     236+        xml = """
     237+        <iq type='set' to='pubsub.example.org'
     238+                       from='user@example.org'>
     239+          <pubsub xmlns='http://jabber.org/protocol/pubsub'>
     240+            <create node='mynode'/>
     241+            <configure>
     242+              <x xmlns='jabber:x:data' type='result'>
     243+                <field var='FORM_TYPE' type='hidden'>
     244+                  <value>http://jabber.org/protocol/pubsub#node_config</value>
     245+                </field>
     246+                <field var='pubsub#access_model'><value>open</value></field>
     247+                <field var='pubsub#persist_items'><value>0</value></field>
     248+              </x>
     249+            </configure>
     250+          </pubsub>
     251+        </iq>
     252+        """
     253+
     254+        err = self.assertRaises(error.StanzaError,
     255+                                pubsub.PubSubRequest.fromElement,
     256+                                parseXml(xml))
     257+        self.assertEqual('bad-request', err.condition)
     258+        self.assertEqual("Unexpected form type 'result'", err.text)
     259+        self.assertEqual(None, err.appCondition)
     260+
     261+
    237262     def test_fromElementDefault(self):
    238263         """
    239264         Test parsing a request for the default node configuration.
    240 @@ -1741,6 +1848,52 @@
     265@@ -1080,7 +1219,7 @@
     266 
     267     def test_fromElementConfigureSetBadFormType(self):
     268         """
     269-        On a node configuration set request unknown fields should be ignored.
     270+        The form of a node configuraton set request should have the right type.
     271         """
     272 
     273         xml = """
     274@@ -1743,6 +1882,52 @@
    241275         return d
    242276 
     
    291325         """
    292326         A default request should result in
    293 @@ -1774,7 +1927,7 @@
     327@@ -1776,7 +1961,7 @@
    294328             self.assertEqual(NS_PUBSUB_OWNER, element.uri)
    295329             self.assertEqual(NS_PUBSUB_OWNER, element.default.uri)
     
    300334         self.resource.getConfigurationOptions = getConfigurationOptions
    301335         self.resource.default = default
    302 @@ -1903,7 +2056,7 @@
     336@@ -1905,7 +2090,7 @@
    303337             self.assertEqual(NS_PUBSUB_OWNER, element.uri)
    304338             self.assertEqual(NS_PUBSUB_OWNER, element.configure.uri)
Note: See TracChangeset for help on using the changeset viewer.