def test_noHeaders(self): """ A stanza without headers results in an empty dictionary. """ stanza = parseXml("""<message/>""") headers = shim.extractHeaders(stanza) self.assertEquals({}, headers)
def test_headers(self): """ A stanza with headers results in a dictionary with those headers. """ xml = """<message> <headers xmlns='http://jabber.org/protocol/shim'> <header name='Collection'>node1</header> <header name='Urgency'>high</header> </headers> </message>""" stanza = parseXml(xml) headers = shim.extractHeaders(stanza) self.assertEquals({'Urgency': ['high'], 'Collection': ['node1']}, headers)
def test_headersRepeated(self): """ Some headers may appear repeatedly. Make sure all values are extracted. """ xml = """<message> <headers xmlns='http://jabber.org/protocol/shim'> <header name='Collection'>node1</header> <header name='Urgency'>high</header> <header name='Collection'>node2</header> </headers> </message>""" stanza = parseXml(xml) headers = shim.extractHeaders(stanza) self.assertEquals({'Urgency': ['high'], 'Collection': ['node1', 'node2']}, headers)
def _onEvent(self, message): try: sender = jid.JID(message["from"]) recipient = jid.JID(message["to"]) except KeyError: return actionElement = None for element in message.event.elements(): if element.uri == NS_PUBSUB_EVENT: actionElement = element if not actionElement: return eventHandler = getattr(self, "_onEvent_%s" % actionElement.name, None) if eventHandler: headers = shim.extractHeaders(message) eventHandler(sender, recipient, actionElement, headers) message.handled = True