def test__handle_command_dispatches_to_command(self): handler = CoroutineMock() handler.return_value = unittest.mock.sentinel.result self.s.register_stateless_command( "node", "Command name", handler, ) req = aioxmpp.IQ( type_=aioxmpp.IQType.SET, from_=TEST_PEER_JID, to=TEST_LOCAL_JID, payload=adhoc_xso.Command( "node", ) ) result = run_coroutine(self.s._handle_command(req)) handler.assert_called_once_with(req) self.assertEqual( result, unittest.mock.sentinel.result, )
def test_starttls(self): self.t = TransportMock(self, self.protocol, with_starttls=True, loop=self.loop) self.assertTrue(self.t.can_starttls()) fut = asyncio.Future() def connection_made(transport): fut.set_result(None) self.protocol.connection_made = connection_made ssl_context = unittest.mock.Mock() post_handshake_callback = CoroutineMock() post_handshake_callback.return_value = None async def late_starttls(): await fut await self.t.starttls(ssl_context, post_handshake_callback) run_coroutine_with_peer( late_starttls(), self.t.run_test( [TransportMock.STARTTLS(ssl_context, post_handshake_callback)])) post_handshake_callback.assert_called_once_with(self.t)
def test_starttls(self): ssl_context = unittest.mock.MagicMock() post_handshake_callback = CoroutineMock() post_handshake_callback.return_value = None self.xmlstream.transport = object() run_coroutine( asyncio.gather( self.xmlstream.starttls(ssl_context, post_handshake_callback), self.xmlstream.run_test([ XMLStreamMock.STARTTLS(ssl_context, post_handshake_callback) ], ))) post_handshake_callback.assert_called_once_with( self.xmlstream.transport)
class TestLazyTask(unittest.TestCase): def setUp(self): self.coro = CoroutineMock() def test_yield_from_able(self): self.coro.return_value = unittest.mock.sentinel.result @asyncio.coroutine def user(fut): return (yield from fut) fut = utils.LazyTask(self.coro) result = run_coroutine(user(fut)) self.assertEqual(result, unittest.mock.sentinel.result) def test_run_coroutine_able(self): self.coro.return_value = unittest.mock.sentinel.result fut = utils.LazyTask(self.coro) result = run_coroutine(fut) self.assertEqual(result, unittest.mock.sentinel.result) def test_async_able(self): self.coro.return_value = unittest.mock.sentinel.result fut = utils.LazyTask(self.coro) result = run_coroutine(asyncio.ensure_future(fut)) self.assertEqual(result, unittest.mock.sentinel.result) def test_runs_only_once_even_if_awaited_concurrently(self): self.coro.return_value = unittest.mock.sentinel.result fut = utils.LazyTask(self.coro) result2 = run_coroutine(asyncio.ensure_future(fut)) result1 = run_coroutine(fut) self.assertEqual(result1, result2) self.assertEqual(result1, unittest.mock.sentinel.result) self.coro.assert_called_once_with() def test_add_done_callback_spawns_task(self): fut = utils.LazyTask(self.coro) cb = unittest.mock.Mock(["__call__"]) with unittest.mock.patch("asyncio.ensure_future") as async_: fut.add_done_callback(cb) async_.assert_called_once_with(unittest.mock.ANY) def test_add_done_callback_works(self): fut = utils.LazyTask(self.coro) cb = unittest.mock.Mock(["__call__"]) fut.add_done_callback(cb) run_coroutine(fut) cb.assert_called_once_with(fut) def test_is_future(self): self.assertTrue(issubclass( utils.LazyTask, asyncio.Future, )) def test_passes_args(self): self.coro.return_value = unittest.mock.sentinel.result fut = utils.LazyTask( self.coro, unittest.mock.sentinel.a1, unittest.mock.sentinel.a2, unittest.mock.sentinel.a3, ) result = run_coroutine(fut) self.assertEqual(result, unittest.mock.sentinel.result) self.coro.assert_called_once_with( unittest.mock.sentinel.a1, unittest.mock.sentinel.a2, unittest.mock.sentinel.a3, )
class TestLazyTask(unittest.TestCase): def setUp(self): self.coro = CoroutineMock() def test_yield_from_able(self): self.coro.return_value = unittest.mock.sentinel.result @asyncio.coroutine def user(fut): return (yield from fut) fut = utils.LazyTask(self.coro) result = run_coroutine(user(fut)) self.assertEqual(result, unittest.mock.sentinel.result) def test_run_coroutine_able(self): self.coro.return_value = unittest.mock.sentinel.result fut = utils.LazyTask(self.coro) result = run_coroutine(fut) self.assertEqual(result, unittest.mock.sentinel.result) def test_async_able(self): self.coro.return_value = unittest.mock.sentinel.result fut = utils.LazyTask(self.coro) result = run_coroutine(asyncio.ensure_future(fut)) self.assertEqual(result, unittest.mock.sentinel.result) def test_runs_only_once_even_if_awaited_concurrently(self): self.coro.return_value = unittest.mock.sentinel.result fut = utils.LazyTask(self.coro) result2 = run_coroutine(asyncio.ensure_future(fut)) result1 = run_coroutine(fut) self.assertEqual(result1, result2) self.assertEqual(result1, unittest.mock.sentinel.result) self.coro.assert_called_once_with() def test_add_done_callback_spawns_task(self): fut = utils.LazyTask(self.coro) cb = unittest.mock.Mock(["__call__"]) with unittest.mock.patch("asyncio.ensure_future") as async_: fut.add_done_callback(cb) async_.assert_called_once_with(unittest.mock.ANY) def test_add_done_callback_works(self): fut = utils.LazyTask(self.coro) cb = unittest.mock.Mock(["__call__"]) fut.add_done_callback(cb) run_coroutine(fut) cb.assert_called_once_with(fut) def test_is_future(self): self.assertTrue(issubclass( utils.LazyTask, asyncio.Future, )) def test_passes_args(self): self.coro.return_value = unittest.mock.sentinel.result fut = utils.LazyTask( self.coro, unittest.mock.sentinel.a1, unittest.mock.sentinel.a2, unittest.mock.sentinel.a3, ) result = run_coroutine(fut) self.assertEqual(result, unittest.mock.sentinel.result) self.coro.assert_called_once_with( unittest.mock.sentinel.a1, unittest.mock.sentinel.a2, unittest.mock.sentinel.a3, )