def test_get_version(self): event_queue = Queue() settings = XMPPSettings() settings["event_queue"] = event_queue client = RosterClient(settings) dispatcher = EventDispatcher(settings, [client]) self.assertIsNone(client.roster) self.assertTrue(event_queue.empty()) processor = Processor([client]) stream = DummyStream(ElementTree.XML(VERSION_FEATURES), JID("[email protected]/Test")) event = GotFeaturesEvent(stream.features) event.stream = stream event_queue.put(event) dispatcher.dispatch() event = AuthorizedEvent(JID("[email protected]/Test")) event.stream = stream event_queue.put(event) dispatcher.dispatch() self.assertEqual(len(processor.stanzas_sent), 1) stanza = processor.stanzas_sent[0] self.assertEqual(stanza.stanza_type, "get") self.assertIsNone(stanza.to_jid, None) payload = stanza.get_payload(RosterPayload) self.assertEqual(len(payload), 0) self.assertEqual(payload.version, u"") response = stanza.make_result_response() item1 = RosterItem(JID("*****@*****.**")) item2 = RosterItem(JID("*****@*****.**")) payload = RosterPayload([item1, item2], u"VERSION") response.set_payload(payload) processor.uplink_receive(response) self.assertIsNotNone(client.roster) self.assertEqual(len(client.roster), 2) self.assertTrue(JID("*****@*****.**") in client.roster) self.assertTrue(JID("*****@*****.**") in client.roster) self.assertEqual(client.roster.version, u"VERSION") event = event_queue.get_nowait() self.assertIsInstance(event, RosterReceivedEvent) self.assertEqual(event.roster_client, client) self.assertEqual(event.roster, client.roster)
def test_get_error(self): event_queue = Queue() settings = XMPPSettings() settings["event_queue"] = event_queue client = RosterClient(settings) dispatcher = EventDispatcher(settings, [client]) self.assertIsNone(client.roster) self.assertTrue(event_queue.empty()) processor = Processor([client]) stream = DummyStream(ElementTree.XML(EMPTY_FEATURES), JID("[email protected]/Test")) event = AuthorizedEvent(JID("[email protected]/Test")) event.stream = stream event_queue.put(event) dispatcher.dispatch() stanza = processor.stanzas_sent[0] response = stanza.make_error_response("item-not-found") processor.uplink_receive(response) self.assertIsNone(client.roster) event = event_queue.get_nowait() self.assertIsInstance(event, RosterNotReceivedEvent) self.assertEqual(event.roster_client, client) self.assertIsNotNone(event.stanza) self.assertEqual(event.stanza.stanza_id, response.stanza_id)