Mercurial > libervia-pubsub
comparison 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 |
comparison
equal
deleted
inserted
replaced
203:2c46e6664680 | 204:b4bf0a5ce50d |
---|---|
33 def setUp(self): | 33 def setUp(self): |
34 self.client = gateway.GatewayClient(baseURI) | 34 self.client = gateway.GatewayClient(baseURI) |
35 self.client.startService() | 35 self.client.startService() |
36 | 36 |
37 def tearDown(self): | 37 def tearDown(self): |
38 self.client.stopService() | 38 return self.client.stopService() |
39 | 39 |
40 def test_create(self): | 40 def test_create(self): |
41 | 41 |
42 def cb(response): | 42 def cb(response): |
43 self.assertIn('uri', response) | 43 self.assertIn('uri', response) |
91 | 91 |
92 d = self.client.create() | 92 d = self.client.create() |
93 d.addCallback(cb) | 93 d.addCallback(cb) |
94 return d | 94 return d |
95 | 95 |
96 | |
96 def test_subscribeGetNotification(self): | 97 def test_subscribeGetNotification(self): |
97 | 98 |
98 def onNotification(data, headers): | 99 def onNotification(data, headers): |
99 self.client.deferred.callback(None) | 100 self.client.deferred.callback(None) |
100 | 101 |
114 d = self.client.create() | 115 d = self.client.create() |
115 d.addCallback(cb) | 116 d.addCallback(cb) |
116 d.addCallback(cb2) | 117 d.addCallback(cb2) |
117 return defer.gatherResults([d, self.client.deferred]) | 118 return defer.gatherResults([d, self.client.deferred]) |
118 | 119 |
119 def test_subscribeGetDelayedNotification(self): | 120 |
120 | 121 def test_subscribeTwiceGetNotification(self): |
121 def onNotification(data, headers): | |
122 self.client.deferred.callback(None) | |
123 | |
124 def cb(response): | |
125 xmppURI = response['uri'] | |
126 self.assertNot(self.client.deferred.called) | |
127 d = self.client.publish(entry, xmppURI) | |
128 d.addCallback(lambda _: xmppURI) | |
129 return d | |
130 | |
131 def cb2(xmppURI): | |
132 d = self.client.subscribe(xmppURI) | |
133 return d | |
134 | |
135 | |
136 self.client.callback = onNotification | |
137 self.client.deferred = defer.Deferred() | |
138 d = self.client.create() | |
139 d.addCallback(cb) | |
140 d.addCallback(cb2) | |
141 return defer.gatherResults([d, self.client.deferred]) | |
142 | |
143 def test_subscribeGetDelayedNotification2(self): | |
144 """ | |
145 Test that subscribing as second results in a notification being sent. | |
146 """ | |
147 | 122 |
148 def onNotification1(data, headers): | 123 def onNotification1(data, headers): |
149 client1.deferred.callback(None) | 124 d = client1.stopService() |
150 client1.stopService() | 125 d.chainDeferred(client1.deferred) |
151 | 126 |
152 def onNotification2(data, headers): | 127 def onNotification2(data, headers): |
153 client2.deferred.callback(None) | 128 d = client2.stopService() |
154 client2.stopService() | 129 d.chainDeferred(client2.deferred) |
155 | 130 |
156 def cb(response): | 131 def cb(response): |
157 xmppURI = response['uri'] | 132 xmppURI = response['uri'] |
158 self.assertNot(client1.deferred.called) | |
159 self.assertNot(client2.deferred.called) | |
160 d = self.client.publish(entry, xmppURI) | |
161 d.addCallback(lambda _: xmppURI) | |
162 return d | |
163 | |
164 def cb2(xmppURI): | |
165 d = client1.subscribe(xmppURI) | 133 d = client1.subscribe(xmppURI) |
166 d.addCallback(lambda _: xmppURI) | 134 d.addCallback(lambda _: xmppURI) |
167 return d | 135 return d |
168 | 136 |
137 def cb2(xmppURI): | |
138 d = client2.subscribe(xmppURI) | |
139 d.addCallback(lambda _: xmppURI) | |
140 return d | |
141 | |
169 def cb3(xmppURI): | 142 def cb3(xmppURI): |
170 d = client2.subscribe(xmppURI) | 143 d = self.client.publish(entry, xmppURI) |
171 return d | 144 return d |
145 | |
172 | 146 |
173 client1 = gateway.GatewayClient(baseURI, callbackPort=8088) | 147 client1 = gateway.GatewayClient(baseURI, callbackPort=8088) |
174 client1.startService() | 148 client1.startService() |
175 client1.callback = onNotification1 | 149 client1.callback = onNotification1 |
176 client1.deferred = defer.Deferred() | 150 client1.deferred = defer.Deferred() |
177 client2 = gateway.GatewayClient(baseURI, callbackPort=8089) | 151 client2 = gateway.GatewayClient(baseURI, callbackPort=8089) |
178 client2.startService() | 152 client2.startService() |
179 client2.callback = onNotification2 | 153 client2.callback = onNotification2 |
180 client2.deferred = defer.Deferred() | 154 client2.deferred = defer.Deferred() |
181 | 155 |
182 | |
183 d = self.client.create() | 156 d = self.client.create() |
184 d.addCallback(cb) | 157 d.addCallback(cb) |
185 d.addCallback(cb2) | 158 d.addCallback(cb2) |
186 d.addCallback(cb3) | 159 d.addCallback(cb3) |
187 dl = defer.gatherResults([d, client1.deferred, client2.deferred]) | 160 dl = defer.gatherResults([d, client1.deferred, client2.deferred]) |
188 return dl | 161 return dl |
189 | 162 |
190 | 163 |
164 def test_subscribeGetDelayedNotification(self): | |
165 | |
166 def onNotification(data, headers): | |
167 self.client.deferred.callback(None) | |
168 | |
169 def cb(response): | |
170 xmppURI = response['uri'] | |
171 self.assertNot(self.client.deferred.called) | |
172 d = self.client.publish(entry, xmppURI) | |
173 d.addCallback(lambda _: xmppURI) | |
174 return d | |
175 | |
176 def cb2(xmppURI): | |
177 d = self.client.subscribe(xmppURI) | |
178 return d | |
179 | |
180 | |
181 self.client.callback = onNotification | |
182 self.client.deferred = defer.Deferred() | |
183 d = self.client.create() | |
184 d.addCallback(cb) | |
185 d.addCallback(cb2) | |
186 return defer.gatherResults([d, self.client.deferred]) | |
187 | |
188 def test_subscribeGetDelayedNotification2(self): | |
189 """ | |
190 Test that subscribing as second results in a notification being sent. | |
191 """ | |
192 | |
193 def onNotification1(data, headers): | |
194 client1.deferred.callback(None) | |
195 client1.stopService() | |
196 | |
197 def onNotification2(data, headers): | |
198 client2.deferred.callback(None) | |
199 client2.stopService() | |
200 | |
201 def cb(response): | |
202 xmppURI = response['uri'] | |
203 self.assertNot(client1.deferred.called) | |
204 self.assertNot(client2.deferred.called) | |
205 d = self.client.publish(entry, xmppURI) | |
206 d.addCallback(lambda _: xmppURI) | |
207 return d | |
208 | |
209 def cb2(xmppURI): | |
210 d = client1.subscribe(xmppURI) | |
211 d.addCallback(lambda _: xmppURI) | |
212 return d | |
213 | |
214 def cb3(xmppURI): | |
215 d = client2.subscribe(xmppURI) | |
216 return d | |
217 | |
218 client1 = gateway.GatewayClient(baseURI, callbackPort=8088) | |
219 client1.startService() | |
220 client1.callback = onNotification1 | |
221 client1.deferred = defer.Deferred() | |
222 client2 = gateway.GatewayClient(baseURI, callbackPort=8089) | |
223 client2.startService() | |
224 client2.callback = onNotification2 | |
225 client2.deferred = defer.Deferred() | |
226 | |
227 d = self.client.create() | |
228 d.addCallback(cb) | |
229 d.addCallback(cb2) | |
230 d.addCallback(cb3) | |
231 dl = defer.gatherResults([d, client1.deferred, client2.deferred]) | |
232 return dl | |
233 | |
234 | |
191 def test_subscribeNonExisting(self): | 235 def test_subscribeNonExisting(self): |
192 def cb(err): | 236 def cb(err): |
193 self.assertEqual('403', err.status) | 237 self.assertEqual('403', err.status) |
194 | 238 |
195 d = self.client.subscribe('xmpp:%s?node=test' % componentJID) | 239 d = self.client.subscribe('xmpp:%s?node=test' % componentJID) |