def test_build_empty(self): item = RosterItem(JID("*****@*****.**")) self.assertEqual(item.jid, JID("*****@*****.**")) self.assertIsNone(item.name) self.assertIsNone(item.subscription) self.assertIsNone(item.ask) self.assertFalse(item.approved) self.assertEqual(item.groups, set()) xml = item.as_xml() self.assertEqual(xml.tag, "{jabber:iq:roster}item") self.assertEqual(len(xml), 0) self.assertEqual(xml.get("jid"), u"*****@*****.**") self.assertEqual(xml.get("name"), None) self.assertEqual(xml.get("subscription"), None) self.assertEqual(xml.get("ask"), None) self.assertEqual(xml.get("approved"), None) # check if serializable self.assertTrue(ElementTree.tostring(xml))
def test_set_empty_group(self): element = ElementTree.XML('<item xmlns="jabber:iq:roster"' ' jid="[email protected]"><group/></item>') item = RosterItem.from_xml(element) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.groups, set([u""])) with self.assertRaises(NotAcceptableProtocolError): item.verify_roster_set() with self.assertRaises(NotAcceptableProtocolError): item.verify_roster_set(True)
def test_set_with_remove(self): element = ElementTree.XML('<item xmlns="jabber:iq:roster"' ' jid="[email protected]" subscription="remove"/>') item = RosterItem.from_xml(element) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.subscription, "remove") item.verify_roster_set() item.verify_roster_set(True) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.subscription, "remove")
def test_result_with_remove(self): element = ElementTree.XML('<item xmlns="jabber:iq:roster"' ' jid="[email protected]" subscription="remove"/>') item = RosterItem.from_xml(element) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.subscription, "remove") with self.assertRaises(ValueError): item.verify_roster_result() item.verify_roster_result(True) self.assertEqual(item.jid, JID("[email protected]")) self.assertIsNone(item.subscription)
def test_set_duplicate_group(self): element = ElementTree.XML('<item xmlns="jabber:iq:roster"' ' jid="[email protected]"><group>GROUP1</group>' '<group>GROUP1</group></item>') item = RosterItem.from_xml(element) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.groups, set([u"GROUP1"])) with self.assertRaises(BadRequestProtocolError): item.verify_roster_set() with self.assertRaises(BadRequestProtocolError): item.verify_roster_set(True)
def test_set_with_subscription(self): element = ElementTree.XML('<item xmlns="jabber:iq:roster"' ' jid="[email protected]" subscription="both"/>') item = RosterItem.from_xml(element) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.subscription, "both") with self.assertRaises(BadRequestProtocolError): item.verify_roster_set() item.verify_roster_set(True) self.assertEqual(item.jid, JID("[email protected]")) self.assertIsNone(item.subscription)
def test_build_full(self): item = RosterItem(JID("*****@*****.**"), "NAME", ["G1", "G2"], "from", "subscribe", "true") self.assertEqual(item.jid, JID("*****@*****.**")) self.assertEqual(item.name, "NAME") self.assertEqual(item.subscription, "from") self.assertEqual(item.ask, "subscribe") self.assertTrue(item.approved) self.assertEqual(item.groups, set(["G1", "G2"])) xml = item.as_xml() self.assertEqual(xml.tag, "{jabber:iq:roster}item") self.assertEqual(len(xml), 2) self.assertEqual(xml.get("jid"), u"*****@*****.**") self.assertEqual(xml.get("name"), "NAME") self.assertEqual(xml.get("subscription"), "from") self.assertEqual(xml.get("ask"), "subscribe") self.assertEqual(xml.get("approved"), "true") self.assertEqual(xml[0].tag, "{jabber:iq:roster}group") self.assertEqual(xml[1].tag, "{jabber:iq:roster}group") self.assertEqual(set([xml[0].text, xml[1].text]), set(["G1", "G2"])) # check if serializable self.assertTrue(ElementTree.tostring(xml))
def test_parse_only_jid(self): element = ElementTree.XML('<item xmlns="jabber:iq:roster"' ' jid="[email protected]"/>') item = RosterItem.from_xml(element) self.assertEqual(item.jid, JID("[email protected]")) self.assertIsNone(item.name) self.assertEqual(item.groups, set()) self.assertIsNone(item.subscription) self.assertIsNone(item.ask) self.assertFalse(item.approved) item.verify_roster_result() item.verify_roster_result(True) self.assertEqual(item.jid, JID("[email protected]")) self.assertIsNone(item.name) self.assertEqual(item.groups, set()) self.assertIsNone(item.subscription) self.assertIsNone(item.ask) self.assertFalse(item.approved)
def test_parse_full(self): element = ElementTree.XML('<item xmlns="jabber:iq:roster"' ' jid="[email protected]" name="NAME" subscription="to"' ' ask="subscribe" approved="true">' '<group>GROUP1</group><group>GROUP2</group>' '</item>') item = RosterItem.from_xml(element) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.name, u"NAME") self.assertEqual(item.groups, set(["GROUP1", "GROUP2"])) self.assertEqual(item.subscription, "to") self.assertEqual(item.ask, "subscribe") self.assertTrue(item.approved) item.verify_roster_result() item.verify_roster_result(True) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.name, u"NAME") self.assertEqual(item.groups, set(["GROUP1", "GROUP2"])) self.assertEqual(item.subscription, "to") self.assertEqual(item.ask, "subscribe") self.assertTrue(item.approved)
def test_bad_subscription(self): element = ElementTree.XML('<item xmlns="jabber:iq:roster"' ' jid="[email protected]" name="NAME" subscription="bad"' ' ask="subscribe" approved="true">' '<group>GROUP1</group><group>GROUP2</group>' '</item>') item = RosterItem.from_xml(element) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.name, u"NAME") self.assertEqual(item.groups, set(["GROUP1", "GROUP2"])) self.assertEqual(item.subscription, "bad") self.assertEqual(item.ask, "subscribe") self.assertTrue(item.approved) with self.assertRaises(ValueError): item.verify_roster_result() item.verify_roster_result(True) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.name, u"NAME") self.assertEqual(item.groups, set(["GROUP1", "GROUP2"])) self.assertIsNone(item.subscription) self.assertEqual(item.ask, "subscribe") self.assertTrue(item.approved)
def test_set_full(self): element = ElementTree.XML('<item xmlns="jabber:iq:roster"' ' jid="[email protected]" name="NAME" subscription="to"' ' ask="subscribe" approved="true">' '<group>GROUP1</group><group>GROUP2</group>' '</item>') item = RosterItem.from_xml(element) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.name, "NAME") self.assertEqual(item.groups, set(["GROUP1", "GROUP2"])) self.assertEqual(item.subscription, "to") self.assertEqual(item.ask, "subscribe") self.assertTrue(item.approved) with self.assertRaises(BadRequestProtocolError): item.verify_roster_set() item.verify_roster_set(True) self.assertEqual(item.jid, JID("[email protected]")) self.assertEqual(item.name, "NAME") self.assertEqual(item.groups, set(["GROUP1", "GROUP2"])) self.assertIsNone(item.subscription) self.assertIsNone(item.ask, None) self.assertFalse(item.approved)
def test_parse_empty(self): element = ElementTree.XML('<item xmlns="jabber:iq:roster"/>') with self.assertRaises(BadRequestProtocolError): RosterItem.from_xml(element)