diff idavoll/test/test_gateway.py @ 204:b4bf0a5ce50d

Implement storage facilities for the HTTP gateway. Author: ralphm. Fixes #12. One of the storage facilities is PostgreSQL based, providing persistence.
author Ralph Meijer <ralphm@ik.nu>
date Wed, 16 Jul 2008 06:38:32 +0000
parents e404775b12df
children 274a45d2a5ab
line wrap: on
line diff
--- a/idavoll/test/test_gateway.py	Mon Jul 14 09:16:16 2008 +0000
+++ b/idavoll/test/test_gateway.py	Wed Jul 16 06:38:32 2008 +0000
@@ -35,7 +35,7 @@
         self.client.startService()
 
     def tearDown(self):
-        self.client.stopService()
+        return self.client.stopService()
 
     def test_create(self):
 
@@ -93,6 +93,7 @@
         d.addCallback(cb)
         return d
 
+
     def test_subscribeGetNotification(self):
 
         def onNotification(data, headers):
@@ -116,6 +117,50 @@
         d.addCallback(cb2)
         return defer.gatherResults([d, self.client.deferred])
 
+
+    def test_subscribeTwiceGetNotification(self):
+
+        def onNotification1(data, headers):
+            d = client1.stopService()
+            d.chainDeferred(client1.deferred)
+
+        def onNotification2(data, headers):
+            d = client2.stopService()
+            d.chainDeferred(client2.deferred)
+
+        def cb(response):
+            xmppURI = response['uri']
+            d = client1.subscribe(xmppURI)
+            d.addCallback(lambda _: xmppURI)
+            return d
+
+        def cb2(xmppURI):
+            d = client2.subscribe(xmppURI)
+            d.addCallback(lambda _: xmppURI)
+            return d
+
+        def cb3(xmppURI):
+            d = self.client.publish(entry, xmppURI)
+            return d
+
+
+        client1 = gateway.GatewayClient(baseURI, callbackPort=8088)
+        client1.startService()
+        client1.callback = onNotification1
+        client1.deferred = defer.Deferred()
+        client2 = gateway.GatewayClient(baseURI, callbackPort=8089)
+        client2.startService()
+        client2.callback = onNotification2
+        client2.deferred = defer.Deferred()
+
+        d = self.client.create()
+        d.addCallback(cb)
+        d.addCallback(cb2)
+        d.addCallback(cb3)
+        dl = defer.gatherResults([d, client1.deferred, client2.deferred])
+        return dl
+
+
     def test_subscribeGetDelayedNotification(self):
 
         def onNotification(data, headers):
@@ -179,7 +224,6 @@
         client2.callback = onNotification2
         client2.deferred = defer.Deferred()
 
-
         d = self.client.create()
         d.addCallback(cb)
         d.addCallback(cb2)