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