Changeset 10:a5e3c32d23ca for wokkel
- Timestamp:
- Jan 3, 2008, 10:58:54 AM (15 years ago)
- Branch:
- default
- Convert:
- svn:b33ecbfc-034c-dc11-8662-000475d9059e/trunk@34
- Location:
- wokkel
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
wokkel/iwokkel.py
r6 r10 1 # Copyright (c) 2003-200 7Ralph Meijer1 # Copyright (c) 2003-2008 Ralph Meijer 2 2 # See LICENSE for details. 3 3 … … 191 191 """ 192 192 193 def unsubscribe(service, nodeIdentifier, subscriber): 194 """ 195 Unsubscribe from a node with a given JID. 196 197 @param service: The publish-subscribe service entity. 198 @type service: L{jid.JID} 199 @param nodeIdentifier: Identifier of the node to unsubscribe from. 200 @type nodeIdentifier: L{unicode} 201 @param subscriber: JID to unsubscribe from the node. 202 @type subscriber: L{jid.JID} 203 @rtype: L{defer.Deferred} 204 """ 205 193 206 def publish(service, nodeIdentifier, items=[]): 194 207 """ -
wokkel/pubsub.py
r7 r10 1 1 # -*- test-case-name: wokkel.test.test_pubsub -*- 2 2 # 3 # Copyright (c) 2003-200 7Ralph Meijer3 # Copyright (c) 2003-2008 Ralph Meijer 4 4 # See LICENSE for details. 5 5 … … 78 78 79 79 80 81 80 class SubscriptionPending(Exception): 82 81 """ … … 146 145 self.addChild(payload) 147 146 147 148 148 class PubSubRequest(xmlstream.IQ): 149 149 """ … … 168 168 169 169 def send(self, to): 170 destination = unicode(to) 170 """ 171 Send out request. 172 173 Extends L{xmlstream.IQ.send} by requiring the C{to} parameter to be 174 a L{JID} instance. 175 176 @param to: Entity to send the request to. 177 @type to: L{JID} 178 """ 179 destination = to.full() 171 180 return xmlstream.IQ.send(self, destination) 181 172 182 173 183 class CreateNode(PubSubRequest): … … 178 188 if node: 179 189 self.command["node"] = node 190 180 191 181 192 class DeleteNode(PubSubRequest): … … 185 196 self.command["node"] = node 186 197 198 187 199 class Subscribe(PubSubRequest): 188 200 verb = 'subscribe' … … 193 205 self.command["jid"] = subscriber.full() 194 206 207 208 class Unsubscribe(PubSubRequest): 209 verb = 'unsubscribe' 210 211 def __init__(self, xs, node, subscriber): 212 PubSubRequest.__init__(self, xs) 213 self.command["node"] = node 214 self.command["jid"] = subscriber.full() 215 216 195 217 class Publish(PubSubRequest): 196 218 verb = 'publish' … … 208 230 209 231 return item 232 210 233 211 234 class PubSubClient(XMPPHandler): … … 270 293 return request.send(service).addCallback(cb) 271 294 295 def unsubscribe(self, service, nodeIdentifier, subscriber): 296 request = Unsubscribe(self.xmlstream, nodeIdentifier, subscriber) 297 return request.send(service) 298 272 299 def publish(self, service, nodeIdentifier, items=[]): 273 300 request = Publish(self.xmlstream, nodeIdentifier) … … 276 303 277 304 return request.send(service) 305 278 306 279 307 class PubSubService(XMPPHandler, IQHandlerMixin): -
wokkel/test/test_pubsub.py
r6 r10 1 # Copyright (c) 2003-200 7Ralph Meijer1 # Copyright (c) 2003-2008 Ralph Meijer 2 2 # See LICENSE for details. 3 3 … … 12 12 13 13 from wokkel import pubsub 14 from wokkel.test.helpers import XmlStreamStub 15 16 try: 17 from twisted.words.protocols.jabber.xmlstream import toResponse 18 except ImportError: 19 from wokkel.compat import toResponse 20 21 NS_PUBSUB = 'http://jabber.org/protocol/pubsub' 22 NS_PUBSUB_ERRORS = 'http://jabber.org/protocol/pubsub#errors' 23 24 class PubSubClientTest(unittest.TestCase): 25 26 def setUp(self): 27 self.stub = XmlStreamStub() 28 self.protocol = pubsub.PubSubClient() 29 self.protocol.xmlstream = self.stub.xmlstream 30 31 def test_unsubscribe(self): 32 """ 33 Test sending unsubscription request. 34 """ 35 d = self.protocol.unsubscribe(JID('pubsub.example.org'), 'test', 36 JID('user@example.org')) 37 38 iq = self.stub.output[-1] 39 self.assertEquals('pubsub.example.org', iq.getAttribute('to')) 40 self.assertEquals('set', iq.getAttribute('type')) 41 self.assertEquals('pubsub', iq.pubsub.name) 42 self.assertEquals(NS_PUBSUB, iq.pubsub.uri) 43 children = list(domish.generateElementsQNamed(iq.pubsub.children, 44 'unsubscribe', NS_PUBSUB)) 45 self.assertEquals(1, len(children)) 46 child = children[0] 47 self.assertEquals('test', child['node']) 48 self.assertEquals('user@example.org', child['jid']) 49 50 self.stub.send(toResponse(iq, 'result')) 51 return d 52 14 53 15 54 class PubSubServiceTest(unittest.TestCase): … … 28 67 iq['to'] = 'pubsub.example.org' 29 68 iq['type'] = 'set' 30 iq.addElement(( 'http://jabber.org/protocol/pubsub', 'pubsub'))69 iq.addElement((NS_PUBSUB, 'pubsub')) 31 70 iq.pubsub.addElement('publish') 32 71 handler.handleRequest(iq) … … 47 86 iq['from'] = 'user@example.org' 48 87 iq['to'] = 'pubsub.example.org' 49 iq.addElement(( 'http://jabber.org/protocol/pubsub', 'pubsub'))88 iq.addElement((NS_PUBSUB, 'pubsub')) 50 89 iq.pubsub.addElement('publish') 51 90 iq.pubsub.publish['node'] = 'test' … … 62 101 iq['to'] = 'pubsub.example.org' 63 102 iq['type'] = 'get' 64 iq.addElement(( 'http://jabber.org/protocol/pubsub', 'pubsub'))103 iq.addElement((NS_PUBSUB, 'pubsub')) 65 104 iq.pubsub.addElement('options') 66 105 handler.handleRequest(iq) … … 69 108 self.assertEquals('feature-not-implemented', e.condition) 70 109 self.assertEquals('unsupported', e.appCondition.name) 71 self.assertEquals('http://jabber.org/protocol/pubsub#errors', 72 e.appCondition.uri) 110 self.assertEquals(NS_PUBSUB_ERRORS, e.appCondition.uri)
Note: See TracChangeset
for help on using the changeset viewer.