diff -r 5a91781194ab wokkel/pubsub.py --- a/wokkel/pubsub.py Mon Mar 23 21:43:25 2009 +0100 +++ b/wokkel/pubsub.py Mon Mar 23 21:50:36 2009 +0100 @@ -605,7 +605,7 @@ pass - def createNode(self, service, nodeIdentifier=None): + def createNode(self, service, nodeIdentifier=None, sender=None): """ Create a publish subscribe node. @@ -617,6 +617,7 @@ request = PubSubRequest('create') request.recipient = service request.nodeIdentifier = nodeIdentifier + request.sender = sender def cb(iq): try: @@ -631,7 +632,7 @@ return d - def deleteNode(self, service, nodeIdentifier): + def deleteNode(self, service, nodeIdentifier, sender=None): """ Delete a publish subscribe node. @@ -643,10 +644,11 @@ request = PubSubRequest('delete') request.recipient = service request.nodeIdentifier = nodeIdentifier + request.sender = sender return request.send(self.xmlstream) - def subscribe(self, service, nodeIdentifier, subscriber): + def subscribe(self, service, nodeIdentifier, subscriber, sender=None): """ Subscribe to a publish subscribe node. @@ -662,6 +664,7 @@ request.recipient = service request.nodeIdentifier = nodeIdentifier request.subscriber = subscriber + request.sender = sender def cb(iq): subscription = iq.pubsub.subscription["subscription"] @@ -681,7 +684,7 @@ return d - def unsubscribe(self, service, nodeIdentifier, subscriber): + def unsubscribe(self, service, nodeIdentifier, subscriber, sender=None): """ Unsubscribe from a publish subscribe node. @@ -696,10 +699,11 @@ request.recipient = service request.nodeIdentifier = nodeIdentifier request.subscriber = subscriber + request.sender = sender return request.send(self.xmlstream) - def publish(self, service, nodeIdentifier, items=None): + def publish(self, service, nodeIdentifier, items=None, sender=None): """ Publish to a publish subscribe node. @@ -714,10 +718,11 @@ request.recipient = service request.nodeIdentifier = nodeIdentifier request.items = items + request.sender = sender return request.send(self.xmlstream) - def items(self, service, nodeIdentifier, maxItems=None): + def items(self, service, nodeIdentifier, maxItems=None, sender=None): """ Retrieve previously published items from a publish subscribe node. @@ -733,6 +738,7 @@ request.nodeIdentifier = nodeIdentifier if maxItems: request.maxItems = str(int(maxItems)) + request.sender = sender def cb(iq): items = [] diff -r 5a91781194ab wokkel/test/test_pubsub.py --- a/wokkel/test/test_pubsub.py Mon Mar 23 21:43:25 2009 +0100 +++ b/wokkel/test/test_pubsub.py Mon Mar 23 21:50:36 2009 +0100 @@ -258,6 +258,22 @@ return d + def test_createNodeWithSender(self): + """ + Test sending create request from a specific JID. + """ + + d = self.protocol.createNode(JID('pubsub.example.org'), 'test', + sender=JID('user@example.org')) + + iq = self.stub.output[-1] + self.assertEquals('user@example.org', iq['from']) + + response = toResponse(iq, 'result') + self.stub.send(response) + return d + + def test_deleteNode(self): """ Test sending delete request. @@ -281,6 +297,22 @@ return d + def test_deleteNodeWithSender(self): + """ + Test sending delete request. + """ + + d = self.protocol.deleteNode(JID('pubsub.example.org'), 'test', + sender=JID('user@example.org')) + + iq = self.stub.output[-1] + self.assertEquals('user@example.org', iq['from']) + + response = toResponse(iq, 'result') + self.stub.send(response) + return d + + def test_publish(self): """ Test sending publish request. @@ -332,6 +364,23 @@ return d + def test_publishWithSender(self): + """ + Test sending publish request from a specific JID. + """ + + item = pubsub.Item() + d = self.protocol.publish(JID('pubsub.example.org'), 'test', [item], + JID('user@example.org')) + + iq = self.stub.output[-1] + self.assertEquals('user@example.org', iq['from']) + + response = toResponse(iq, 'result') + self.stub.send(response) + return d + + def test_subscribe(self): """ Test sending subscription request. @@ -401,6 +450,27 @@ return d + def test_subscribeWithSender(self): + """ + Test sending subscription request from a specific JID. + """ + d = self.protocol.subscribe(JID('pubsub.example.org'), 'test', + JID('user@example.org'), + sender=JID('user@example.org')) + + iq = self.stub.output[-1] + self.assertEquals('user@example.org', iq['from']) + + response = toResponse(iq, 'result') + pubsub = response.addElement((NS_PUBSUB, 'pubsub')) + subscription = pubsub.addElement('subscription') + subscription['node'] = 'test' + subscription['jid'] = 'user@example.org' + subscription['subscription'] = 'subscribed' + self.stub.send(response) + return d + + def test_unsubscribe(self): """ Test sending unsubscription request. @@ -424,6 +494,20 @@ return d + def test_unsubscribeWithSender(self): + """ + Test sending unsubscription request from a specific JID. + """ + d = self.protocol.unsubscribe(JID('pubsub.example.org'), 'test', + JID('user@example.org'), + sender=JID('user@example.org')) + + iq = self.stub.output[-1] + self.assertEquals('user@example.org', iq['from']) + self.stub.send(toResponse(iq, 'result')) + return d + + def test_items(self): """ Test sending items request. @@ -490,6 +574,25 @@ return d + def test_itemsWithSender(self): + """ + Test sending items request from a specific JID. + """ + + d = self.protocol.items(JID('pubsub.example.org'), 'test', + sender=JID('user@example.org')) + + iq = self.stub.output[-1] + self.assertEquals('user@example.org', iq['from']) + + response = toResponse(iq, 'result') + items = response.addElement((NS_PUBSUB, 'pubsub')).addElement('items') + items['node'] = 'test' + + self.stub.send(response) + return d + + class PubSubRequestTest(unittest.TestCase):