def test_unregister_feature_removes_the_feature(self): n = disco_service.Node() n.register_feature("uri:foo") n.register_feature("uri:bar") cb = unittest.mock.Mock() n.on_info_changed.connect(cb) self.assertSetEqual({"uri:foo", "uri:bar", namespaces.xep0030_info}, set(n.iter_features())) n.unregister_feature("uri:foo") cb.assert_called_with() cb.mock_calls.clear() self.assertSetEqual({"uri:bar", namespaces.xep0030_info}, set(n.iter_features())) n.unregister_feature("uri:bar") self.assertSetEqual({namespaces.xep0030_info}, set(n.iter_features())) cb.assert_called_with() cb.mock_calls.clear()
def test_unregister_identity_prohibits_removal_of_last_identity(self): n = disco_service.Node() cb = unittest.mock.Mock() n.on_info_changed.connect(cb) n.register_identity("client", "pc", names={ structs.LanguageTag.fromstr("en"): "test identity", structs.LanguageTag.fromstr("de"): "Testidentität", }) cb = unittest.mock.Mock() n.on_info_changed.connect(cb) with self.assertRaisesRegex(ValueError, "cannot remove last identity"): n.unregister_identity( "client", "pc", ) self.assertFalse(cb.mock_calls)
def test_unregister_feature_prohibts_removal_of_nonexistant_feature(self): n = disco_service.Node() cb = unittest.mock.Mock() n.on_info_changed.connect(cb) with self.assertRaises(KeyError): n.unregister_feature("uri:foo") self.assertFalse(cb.mock_calls)
def test_register_feature_prohibits_registration_of_xep0030_features(self): n = disco_service.Node() cb = unittest.mock.Mock() n.on_info_changed.connect(cb) with self.assertRaisesRegex(ValueError, "feature already claimed"): n.register_feature(namespaces.xep0030_info) self.assertFalse(cb.mock_calls)
def test_unregister_feature_prohibts_removal_of_xep0030_features(self): n = disco_service.Node() cb = unittest.mock.Mock() n.on_info_changed.connect(cb) with self.assertRaises(KeyError): n.unregister_feature(namespaces.xep0030_info) self.assertSetEqual({namespaces.xep0030_info}, set(n.iter_features())) self.assertFalse(cb.mock_calls)
def test_register_identity_defines_identity(self): n = disco_service.Node() cb = unittest.mock.Mock() n.on_info_changed.connect(cb) n.register_identity("client", "pc") self.assertSetEqual({ ("client", "pc", None, None), }, set(n.iter_identities())) cb.assert_called_with()
def test_register_feature_prohibits_duplicate_registration(self): n = disco_service.Node() cb = unittest.mock.Mock() n.on_info_changed.connect(cb) n.register_feature("uri:bar") cb.mock_calls.clear() with self.assertRaisesRegex(ValueError, "feature already claimed"): n.register_feature("uri:bar") self.assertSetEqual({"uri:bar", namespaces.xep0030_info}, set(n.iter_features())) self.assertFalse(cb.mock_calls)
def test_register_identity_prohibits_duplicate_registration(self): n = disco_service.Node() cb = unittest.mock.Mock() n.on_info_changed.connect(cb) n.register_identity("client", "pc") cb.assert_called_with() cb.mock_calls.clear() with self.assertRaisesRegex(ValueError, "identity already claimed"): n.register_identity("client", "pc") self.assertFalse(cb.mock_calls) self.assertSetEqual({ ("client", "pc", None, None), }, set(n.iter_identities()))
def test_unregister_identity_prohibits_removal_of_undeclared_identity( self): n = disco_service.Node() n.register_identity("client", "pc", names={ structs.LanguageTag.fromstr("en"): "test identity", structs.LanguageTag.fromstr("de"): "Testidentität", }) cb = unittest.mock.Mock() n.on_info_changed.connect(cb) with self.assertRaises(KeyError): n.unregister_identity("foo", "bar") self.assertFalse(cb.mock_calls)
def test_unregister_identity_removes_identity(self): n = disco_service.Node() n.register_identity("client", "pc", names={ structs.LanguageTag.fromstr("en"): "test identity", structs.LanguageTag.fromstr("de"): "Testidentität", }) n.register_identity("foo", "bar") self.assertSetEqual( { ("client", "pc", structs.LanguageTag.fromstr("en"), "test identity"), ("client", "pc", structs.LanguageTag.fromstr("de"), "Testidentität"), ("foo", "bar", None, None), }, set(n.iter_identities())) cb = unittest.mock.Mock() n.on_info_changed.connect(cb) n.unregister_identity("foo", "bar") cb.assert_called_with() self.assertSetEqual( { ("client", "pc", structs.LanguageTag.fromstr("en"), "test identity"), ("client", "pc", structs.LanguageTag.fromstr("de"), "Testidentität"), }, set(n.iter_identities()))
def test_init(self): n = disco_service.Node() self.assertSequenceEqual([], list(n.iter_identities())) self.assertSetEqual({namespaces.xep0030_info}, set(n.iter_features())) self.assertSequenceEqual([], list(n.iter_items()))