comparison idavoll/test/test_gateway.py @ 187:69cdd8c6a431

Make sure second subscribers through HTTP also get a notification of the last item.
author Ralph Meijer <ralphm@ik.nu>
date Thu, 17 Apr 2008 16:02:22 +0000
parents 365fd3e4daf8
children 48245777acea
comparison
equal deleted inserted replaced
186:365fd3e4daf8 187:69cdd8c6a431
27 #baseURI = "http://pubsub-test.ik.nu/" 27 #baseURI = "http://pubsub-test.ik.nu/"
28 baseURI = "http://localhost:8086/" 28 baseURI = "http://localhost:8086/"
29 componentJID = "test.ik.nu" 29 componentJID = "test.ik.nu"
30 30
31 class GatewayTest(unittest.TestCase): 31 class GatewayTest(unittest.TestCase):
32 timeout = 2
32 33
33 def setUp(self): 34 def setUp(self):
34 self.client = gateway.GatewayClient(baseURI) 35 self.client = gateway.GatewayClient(baseURI)
35 self.client.startService() 36 self.client.startService()
36 37
138 d = self.client.create() 139 d = self.client.create()
139 d.addCallback(cb) 140 d.addCallback(cb)
140 d.addCallback(cb2) 141 d.addCallback(cb2)
141 return defer.gatherResults([d, self.client.deferred]) 142 return defer.gatherResults([d, self.client.deferred])
142 143
144 def test_subscribeGetDelayedNotification2(self):
145 """
146 Test that subscribing as second results in a notification being sent.
147 """
148
149 def onNotification1(data, headers):
150 client1.deferred.callback(None)
151 client1.stopService()
152
153 def onNotification2(data, headers):
154 client2.deferred.callback(None)
155 client2.stopService()
156
157 def cb(response):
158 xmppURI = response['uri']
159 self.assertNot(client1.deferred.called)
160 self.assertNot(client2.deferred.called)
161 d = self.client.publish(entry, xmppURI)
162 d.addCallback(lambda _: xmppURI)
163 return d
164
165 def cb2(xmppURI):
166 d = client1.subscribe(xmppURI)
167 d.addCallback(lambda _: xmppURI)
168 return d
169
170 def cb3(xmppURI):
171 d = client2.subscribe(xmppURI)
172 return d
173
174 client1 = gateway.GatewayClient(baseURI, callbackPort=8088)
175 client1.startService()
176 client1.callback = onNotification1
177 client1.deferred = defer.Deferred()
178 client2 = gateway.GatewayClient(baseURI, callbackPort=8089)
179 client2.startService()
180 client2.callback = onNotification2
181 client2.deferred = defer.Deferred()
182
183
184 d = self.client.create()
185 d.addCallback(cb)
186 d.addCallback(cb2)
187 d.addCallback(cb3)
188 dl = defer.gatherResults([d, client1.deferred, client2.deferred])
189 return dl
190
191
143 def test_subscribeNonExisting(self): 192 def test_subscribeNonExisting(self):
144 def cb(err): 193 def cb(err):
145 self.assertEqual('404', err.status) 194 self.assertEqual('404', err.status)
146 195
147 d = self.client.subscribe('xmpp:%s?node=test' % componentJID) 196 d = self.client.subscribe('xmpp:%s?node=test' % componentJID)