Mercurial > libervia-pubsub
comparison idavoll/test/test_backend.py @ 220:e59b48f3f636
Add tests for subscription and unsubscription JID checks in [53d2c0019458].
author | Ralph Meijer <ralphm@ik.nu> |
---|---|
date | Sat, 16 Oct 2010 20:54:52 +0200 |
parents | bfc198af5d27 |
children | 698af5d720ad |
comparison
equal
deleted
inserted
replaced
219:bb7103da9879 | 220:e59b48f3f636 |
---|---|
16 from wokkel import iwokkel, pubsub | 16 from wokkel import iwokkel, pubsub |
17 | 17 |
18 from idavoll import backend, error, iidavoll | 18 from idavoll import backend, error, iidavoll |
19 | 19 |
20 OWNER = jid.JID('owner@example.com') | 20 OWNER = jid.JID('owner@example.com') |
21 OWNER_FULL = jid.JID('owner@example.com/home') | |
21 SERVICE = jid.JID('test.example.org') | 22 SERVICE = jid.JID('test.example.org') |
22 NS_PUBSUB = 'http://jabber.org/protocol/pubsub' | 23 NS_PUBSUB = 'http://jabber.org/protocol/pubsub' |
23 | 24 |
24 class BackendTest(unittest.TestCase): | 25 class BackendTest(unittest.TestCase): |
25 | 26 |
30 | 31 |
31 def test_deleteNode(self): | 32 def test_deleteNode(self): |
32 class TestNode: | 33 class TestNode: |
33 nodeIdentifier = 'to-be-deleted' | 34 nodeIdentifier = 'to-be-deleted' |
34 def getAffiliation(self, entity): | 35 def getAffiliation(self, entity): |
35 if entity is OWNER: | 36 if entity.userhostJID() == OWNER: |
36 return defer.succeed('owner') | 37 return defer.succeed('owner') |
37 | 38 |
38 class TestStorage: | 39 class TestStorage: |
39 def __init__(self): | 40 def __init__(self): |
40 self.deleteCalled = [] | 41 self.deleteCalled = [] |
64 self.backend = backend.BackendService(self.storage) | 65 self.backend = backend.BackendService(self.storage) |
65 | 66 |
66 preDeleteCalled = [] | 67 preDeleteCalled = [] |
67 | 68 |
68 self.backend.registerPreDelete(preDelete) | 69 self.backend.registerPreDelete(preDelete) |
69 d = self.backend.deleteNode('to-be-deleted', OWNER) | 70 d = self.backend.deleteNode('to-be-deleted', OWNER_FULL) |
70 d.addCallback(cb) | 71 d.addCallback(cb) |
71 return d | 72 return d |
72 | 73 |
73 | 74 |
74 def test_deleteNodeRedirect(self): | 75 def test_deleteNodeRedirect(self): |
75 uri = 'xmpp:%s?;node=test2' % (SERVICE.full(),) | 76 uri = 'xmpp:%s?;node=test2' % (SERVICE.full(),) |
76 | 77 |
77 class TestNode: | 78 class TestNode: |
78 nodeIdentifier = 'to-be-deleted' | 79 nodeIdentifier = 'to-be-deleted' |
79 def getAffiliation(self, entity): | 80 def getAffiliation(self, entity): |
80 if entity is OWNER: | 81 if entity.userhostJID() == OWNER: |
81 return defer.succeed('owner') | 82 return defer.succeed('owner') |
82 | 83 |
83 class TestStorage: | 84 class TestStorage: |
84 def __init__(self): | 85 def __init__(self): |
85 self.deleteCalled = [] | 86 self.deleteCalled = [] |
135 | 136 |
136 def checkID(nodeIdentifier): | 137 def checkID(nodeIdentifier): |
137 self.assertNotIdentical(None, nodeIdentifier) | 138 self.assertNotIdentical(None, nodeIdentifier) |
138 self.assertIdentical(self.storage.nodeIdentifier, nodeIdentifier) | 139 self.assertIdentical(self.storage.nodeIdentifier, nodeIdentifier) |
139 | 140 |
140 d = self.backend.createNode(None, OWNER) | 141 d = self.backend.createNode(None, OWNER_FULL) |
141 d.addCallback(checkID) | 142 d.addCallback(checkID) |
142 return d | 143 return d |
143 | 144 |
144 class NodeStore: | 145 class NodeStore: |
145 """ | 146 """ |
298 | 299 |
299 def test_setNodeConfiguration(self): | 300 def test_setNodeConfiguration(self): |
300 class testNode: | 301 class testNode: |
301 nodeIdentifier = 'node' | 302 nodeIdentifier = 'node' |
302 def getAffiliation(self, entity): | 303 def getAffiliation(self, entity): |
303 if entity is OWNER: | 304 if entity.userhostJID() == OWNER: |
304 return defer.succeed('owner') | 305 return defer.succeed('owner') |
305 def setConfiguration(self, options): | 306 def setConfiguration(self, options): |
306 self.options = options | 307 self.options = options |
307 | 308 |
308 class testStorage: | 309 class testStorage: |
328 self.storage.backend = self.backend | 329 self.storage.backend = self.backend |
329 | 330 |
330 options = {'pubsub#deliver_payloads': True, | 331 options = {'pubsub#deliver_payloads': True, |
331 'pubsub#persist_items': False} | 332 'pubsub#persist_items': False} |
332 | 333 |
333 d = self.backend.setNodeConfiguration('node', options, OWNER) | 334 d = self.backend.setNodeConfiguration('node', options, OWNER_FULL) |
334 d.addCallback(cb) | 335 d.addCallback(cb) |
335 return d | 336 return d |
336 | 337 |
337 | 338 |
338 def test_publishNoID(self): | 339 def test_publishNoID(self): |
341 """ | 342 """ |
342 class TestNode: | 343 class TestNode: |
343 nodeType = 'leaf' | 344 nodeType = 'leaf' |
344 nodeIdentifier = 'node' | 345 nodeIdentifier = 'node' |
345 def getAffiliation(self, entity): | 346 def getAffiliation(self, entity): |
346 if entity is OWNER: | 347 if entity.userhostJID() == OWNER: |
347 return defer.succeed('owner') | 348 return defer.succeed('owner') |
348 def getConfiguration(self): | 349 def getConfiguration(self): |
349 return {'pubsub#deliver_payloads': True, | 350 return {'pubsub#deliver_payloads': True, |
350 'pubsub#persist_items': False} | 351 'pubsub#persist_items': False} |
351 | 352 |
361 self.storage.backend = self.backend | 362 self.storage.backend = self.backend |
362 | 363 |
363 self.backend.registerNotifier(checkID) | 364 self.backend.registerNotifier(checkID) |
364 | 365 |
365 items = [pubsub.Item()] | 366 items = [pubsub.Item()] |
366 d = self.backend.publish('node', items, OWNER) | 367 d = self.backend.publish('node', items, OWNER_FULL) |
367 return d | 368 return d |
368 | 369 |
369 | 370 |
370 def test_notifyOnSubscription(self): | 371 def test_notifyOnSubscription(self): |
371 """ | 372 """ |
407 self.storage.backend = self.backend | 408 self.storage.backend = self.backend |
408 | 409 |
409 d1 = defer.Deferred() | 410 d1 = defer.Deferred() |
410 d1.addCallback(cb) | 411 d1.addCallback(cb) |
411 self.backend.registerNotifier(d1.callback) | 412 self.backend.registerNotifier(d1.callback) |
412 d2 = self.backend.subscribe('node', OWNER, OWNER) | 413 d2 = self.backend.subscribe('node', OWNER, OWNER_FULL) |
413 return defer.gatherResults([d1, d2]) | 414 return defer.gatherResults([d1, d2]) |
414 | 415 |
415 test_notifyOnSubscription.timeout = 2 | 416 test_notifyOnSubscription.timeout = 2 |
416 | 417 |
417 | 418 |