Exemplo n.º 1
0
    def test_from_exception_with_application_condition(self):
        @stanza.Error.as_application_condition
        class Foo(xso.XSO):
            TAG = ("uri:foo", "test_from_exception_with_application_condition")

        obj = Foo()

        exc = errors.XMPPAuthError(errors.ErrorCondition.NOT_AUTHORIZED,
                                   application_defined_condition=obj)

        err = stanza.Error.from_exception(exc)

        self.assertIs(
            err.application_condition,
            obj,
        )
Exemplo n.º 2
0
    async def handle_roster_push(self, iq):
        if iq.from_ and iq.from_ != self.client.local_jid.bare():
            raise errors.XMPPAuthError(errors.ErrorCondition.FORBIDDEN)

        request = iq.payload

        async with self.__roster_lock:
            for item in request.items:
                if item.subscription == "remove":
                    try:
                        old_item = self.items.pop(item.jid)
                    except KeyError:
                        pass
                    else:
                        self._remove_from_groups(old_item, old_item.groups)
                        self.on_entry_removed(old_item)
                else:
                    self._update_entry(item)

            self.version = request.ver
Exemplo n.º 3
0
    def handle_roster_push(self, iq):
        if iq.from_ and iq.from_ != self.client.local_jid.bare():
            raise errors.XMPPAuthError((namespaces.stanzas, "forbidden"))

        request = iq.payload

        with (yield from self.__roster_lock):
            for item in request.items:
                if item.subscription == "remove":
                    try:
                        old_item = self.items.pop(item.jid)
                    except KeyError:
                        pass
                    else:
                        self._remove_from_groups(old_item, old_item.groups)
                        self.on_entry_removed(old_item)
                else:
                    self._update_entry(item)

            self.version = request.ver
Exemplo n.º 4
0
    def handle_roster_push(self, iq):
        if iq.from_:
            raise errors.XMPPAuthError((namespaces.stanzas, "forbidden"))

        request = iq.payload

        for item in request.items:
            if item.subscription == "remove":
                try:
                    old_item = self.items.pop(item.jid)
                except KeyError:
                    pass
                else:
                    for group in old_item.groups:
                        groupset = self.groups[group]
                        groupset.remove(old_item)
                        if not groupset:
                            del self.groups[group]
                    self.on_entry_removed(old_item)
            else:
                self._update_entry(item)

        self.version = request.ver