diff idavoll/test/test_backend.py @ 222:698af5d720ad

Reshape Idavoll as a PubSubResource. PubSubResource is Wokkel's newer interface for building (parts of) XMPP publish-subscribe services and replaces the old interface of PubSubService. It is more flexible for adding new protocol, allows for node-as-code (providing a specific backend per node), and permits accepting requests for different entities (virtual hosts or PEP-like settings). This moves over the current backend to use the new interface, so new code for previously unsupported protocol can be added down the line.
author Ralph Meijer <ralphm@ik.nu>
date Sat, 16 Oct 2010 21:03:38 +0200
parents e59b48f3f636
children 0eafdced5f24
line wrap: on
line diff
--- a/idavoll/test/test_backend.py	Sat Oct 16 20:56:51 2010 +0200
+++ b/idavoll/test/test_backend.py	Sat Oct 16 21:03:38 2010 +0200
@@ -447,11 +447,11 @@
 
 
 
-class PubSubServiceFromBackendTest(unittest.TestCase):
+class PubSubResourceFromBackendTest(unittest.TestCase):
 
-    def test_interfaceIBackend(self):
-        s = backend.PubSubServiceFromBackend(BaseTestBackend())
-        self.assertTrue(verifyObject(iwokkel.IPubSubService, s))
+    def test_interface(self):
+        resource = backend.PubSubResourceFromBackend(BaseTestBackend())
+        self.assertTrue(verifyObject(iwokkel.IPubSubResource, resource))
 
 
     def test_preDelete(self):
@@ -477,13 +477,14 @@
             d1.callback(None)
 
         d1 = defer.Deferred()
-        s = backend.PubSubServiceFromBackend(TestBackend())
-        s.serviceJID = SERVICE
-        s.notifyDelete = notifyDelete
-        self.assertTrue(verifyObject(iwokkel.IPubSubService, s))
-        self.assertNotIdentical(None, s.backend.preDeleteFn)
+        resource = backend.PubSubResourceFromBackend(TestBackend())
+        resource.serviceJID = SERVICE
+        resource.pubsubService = pubsub.PubSubService()
+        resource.pubsubService.notifyDelete = notifyDelete
+        self.assertTrue(verifyObject(iwokkel.IPubSubResource, resource))
+        self.assertNotIdentical(None, resource.backend.preDeleteFn)
         data = {'nodeIdentifier': 'test'}
-        d2 = s.backend.preDeleteFn(data)
+        d2 = resource.backend.preDeleteFn(data)
         return defer.DeferredList([d1, d2], fireOnOneErrback=1)
 
 
@@ -512,14 +513,15 @@
             d1.callback(None)
 
         d1 = defer.Deferred()
-        s = backend.PubSubServiceFromBackend(TestBackend())
-        s.serviceJID = SERVICE
-        s.notifyDelete = notifyDelete
-        self.assertTrue(verifyObject(iwokkel.IPubSubService, s))
-        self.assertNotIdentical(None, s.backend.preDeleteFn)
+        resource = backend.PubSubResourceFromBackend(TestBackend())
+        resource.serviceJID = SERVICE
+        resource.pubsubService = pubsub.PubSubService()
+        resource.pubsubService.notifyDelete = notifyDelete
+        self.assertTrue(verifyObject(iwokkel.IPubSubResource, resource))
+        self.assertNotIdentical(None, resource.backend.preDeleteFn)
         data = {'nodeIdentifier': 'test',
                 'redirectURI': uri}
-        d2 = s.backend.preDeleteFn(data)
+        d2 = resource.backend.preDeleteFn(data)
         return defer.DeferredList([d1, d2], fireOnOneErrback=1)
 
 
@@ -535,14 +537,19 @@
         def cb(e):
             self.assertEquals('unexpected-request', e.condition)
 
-        s = backend.PubSubServiceFromBackend(TestBackend())
-        d = s.unsubscribe(OWNER, SERVICE, 'test', OWNER)
+        resource = backend.PubSubResourceFromBackend(TestBackend())
+        request = pubsub.PubSubRequest()
+        request.sender = OWNER
+        request.recipient = SERVICE
+        request.nodeIdentifier = 'test'
+        request.subscriber = OWNER
+        d = resource.unsubscribe(request)
         self.assertFailure(d, StanzaError)
         d.addCallback(cb)
         return d
 
 
-    def test_getNodeInfo(self):
+    def test_getInfo(self):
         """
         Test retrieving node information.
         """
@@ -560,8 +567,8 @@
             self.assertIn('meta-data', info)
             self.assertEquals({'pubsub#persist_items': True}, info['meta-data'])
 
-        s = backend.PubSubServiceFromBackend(TestBackend())
-        d = s.getNodeInfo(OWNER, SERVICE, 'test')
+        resource = backend.PubSubResourceFromBackend(TestBackend())
+        d = resource.getInfo(OWNER, SERVICE, 'test')
         d.addCallback(cb)
         return d
 
@@ -577,12 +584,12 @@
                          "label": "Deliver payloads with event notifications"}
             }
 
-        s = backend.PubSubServiceFromBackend(TestBackend())
-        options = s.getConfigurationOptions()
+        resource = backend.PubSubResourceFromBackend(TestBackend())
+        options = resource.getConfigurationOptions()
         self.assertIn("pubsub#persist_items", options)
 
 
-    def test_getDefaultConfiguration(self):
+    def test_default(self):
         class TestBackend(BaseTestBackend):
             def getDefaultConfiguration(self, nodeType):
                 options = {"pubsub#persist_items": True,
@@ -594,7 +601,11 @@
         def cb(options):
             self.assertEquals(True, options["pubsub#persist_items"])
 
-        s = backend.PubSubServiceFromBackend(TestBackend())
-        d = s.getDefaultConfiguration(OWNER, SERVICE, 'leaf')
+        resource = backend.PubSubResourceFromBackend(TestBackend())
+        request = pubsub.PubSubRequest()
+        request.sender = OWNER
+        request.recipient = SERVICE
+        request.nodeType = 'leaf'
+        d = resource.default(request)
         d.addCallback(cb)
         return d