Пример #1
0
    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()
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
    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()
Пример #7
0
    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)
Пример #8
0
    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()))
Пример #9
0
    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)
Пример #10
0
    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()))
Пример #11
0
 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()))