示例#1
0
 def test_initiate_success(self):
     state, payload = self._run_test(self.sm.initiate("foo", b"bar"), [
         XMLStreamMock.Send(nonza.SASLAuth(mechanism="foo", payload=b"bar"),
                            response=XMLStreamMock.Receive(
                                nonza.SASLSuccess()))
     ])
     self.assertEqual(state, "success")
     self.assertIsNone(payload)
示例#2
0
    def test_no_termination_on_missing_action(self):
        obj = self.Cls()

        with self.assertRaises(asyncio.TimeoutError):
            run_coroutine(self.xmlstream.run_test([
                XMLStreamMock.Send(obj),
            ], ),
                          timeout=0.05)
示例#3
0
 def test_initiate_challenge(self):
     state, payload = self._run_test(self.sm.initiate("foo", b"bar"), [
         XMLStreamMock.Send(nonza.SASLAuth(mechanism="foo", payload=b"bar"),
                            response=XMLStreamMock.Receive(
                                nonza.SASLChallenge(payload=b"baz")))
     ])
     self.assertEqual(state, "challenge")
     self.assertEqual(payload, b"baz")
示例#4
0
    def test_response_success(self):
        self.sm._state = "challenge"

        state, payload = self._run_test(self.sm.respond(b"bar"), [
            XMLStreamMock.Send(nonza.SASLResponse(payload=b"bar"),
                               response=XMLStreamMock.Receive(
                                   nonza.SASLSuccess()))
        ])
        self.assertEqual(state, "success")
        self.assertIsNone(payload)
示例#5
0
    def test_response_challenge(self):
        self.sm._state = "challenge"

        state, payload = self._run_test(self.sm.respond(b"bar"), [
            XMLStreamMock.Send(nonza.SASLResponse(payload=b"bar"),
                               response=XMLStreamMock.Receive(
                                   nonza.SASLChallenge(payload=b"baz")))
        ])
        self.assertEqual(state, "challenge")
        self.assertEqual(payload, b"baz")
示例#6
0
    def test_initiate_failure(self):
        with self.assertRaises(aiosasl.SASLFailure) as ctx:
            self._run_test(self.sm.initiate("foo", b"bar"), [
                XMLStreamMock.Send(
                    nonza.SASLAuth(mechanism="foo", payload=b"bar"),
                    response=XMLStreamMock.Receive(
                        nonza.SASLFailure(condition=(namespaces.sasl,
                                                     "not-authorized"))))
            ])

        self.assertEqual("not-authorized", ctx.exception.opaque_error)
示例#7
0
    def test_send_xso(self):
        obj = self.Cls()

        def handler(obj):
            self.xmlstream.send_xso(obj)

        self.xmlstream.stanza_parser.add_class(self.Cls, handler)
        run_coroutine(
            self.xmlstream.run_test([
                XMLStreamMock.Send(obj),
            ],
                                    stimulus=XMLStreamMock.Receive(obj)))
示例#8
0
    def test_abort_return_on_aborted_error(self):
        self.sm._state = "challenge"

        state, payload = self._run_test(self.sm.abort(), [
            XMLStreamMock.Send(
                nonza.SASLAbort(),
                response=XMLStreamMock.Receive(
                    nonza.SASLFailure(condition=(namespaces.sasl, "aborted"))))
        ])

        self.assertEqual(state, "failure")
        self.assertIsNone(payload)
示例#9
0
    def test_abort_reject_non_failure(self):
        self.sm._state = "challenge"

        with self.assertRaisesRegex(aiosasl.SASLFailure,
                                    "unexpected non-failure") as ctx:
            self._run_test(self.sm.abort(), [
                XMLStreamMock.Send(nonza.SASLAbort(),
                                   response=XMLStreamMock.Receive(
                                       nonza.SASLSuccess()))
            ])

        self.assertEqual("aborted", ctx.exception.opaque_error)
示例#10
0
    def test_response_failure(self):
        self.sm._state = "challenge"

        with self.assertRaises(aiosasl.SASLFailure) as ctx:
            self._run_test(self.sm.respond(b"bar"), [
                XMLStreamMock.Send(
                    nonza.SASLResponse(payload=b"bar"),
                    response=XMLStreamMock.Receive(
                        nonza.SASLFailure(condition=(namespaces.sasl,
                                                     "credentials-expired"))))
            ])

        self.assertEqual("credentials-expired", ctx.exception.opaque_error)
示例#11
0
    def test_abort_re_raise_other_errors(self):
        self.sm._state = "challenge"

        with self.assertRaises(aiosasl.SASLFailure) as ctx:
            self._run_test(self.sm.abort(), [
                XMLStreamMock.Send(
                    nonza.SASLAbort(),
                    response=XMLStreamMock.Receive(
                        nonza.SASLFailure(condition=(namespaces.sasl,
                                                     "mechanism-too-weak"))))
            ])

        self.assertEqual("mechanism-too-weak", ctx.exception.opaque_error)