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)
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)
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")
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)
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")
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)
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)))
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)
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)
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)
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)