def test_vk_exec_loop(self): mngr = VKManager("token") mngr.running = True async def raw_request(_, method, **kwargs): self.assertEqual(method, "execute") self.assertEqual(kwargs["code"], "return [API.fake.method({}),];") mngr.running = False return VKResponse(False, (), {"response": ["response"]}) mngr.raw_request = types.MethodType(raw_request, mngr) req = VKRequest("fake.method", {}) mngr.requests_queue.append(req) tasks = [] def ensure(task): _task = asyncio.ensure_future(task, loop=self.loop) tasks.append(_task) return _task self.loop.run_until_complete(mngr._exec_loop()) self.loop.run_until_complete(asyncio.gather(*tasks)) response = self.loop.run_until_complete(req) self.assertFalse(response.error) self.assertEqual(response.response, "response")
def test_vk_startup(self): mngr = VKManager("token") bg_coroutines = [] asyncio_ensure_future = asyncio.ensure_future def ensure(task): _task = asyncio_ensure_future(task) bg_coroutines.append(_task) return _task asyncio.ensure_future = ensure self.loop.run_until_complete(mngr.startup(None)) asyncio.ensure_future = asyncio_ensure_future mngr.running = False self.loop.run_until_complete(bg_coroutines[0]) self.assertEqual(len(bg_coroutines), 1)
def test_vk_exec_loop_error(self): mngr = VKManager("token") mngr.running = True async def raw_request(_, method, **kwargs): self.assertEqual(method, "execute") self.assertEqual( kwargs["code"], 'return [API.users.get({"user_ids": "sdfsdfsdfsdfsdf"}),];') mngr.running = False raw_response = { "response": [False], "execute_errors": [{ "method": "users.get", "error_code": 113, "error_msg": "Invalid user id" }, { "method": "execute", "error_code": 113, "error_msg": "Invalid user id" }] } return VKResponse( True, (("VK_req", raw_response.get("error", "")), ("VK_exe", raw_response.get("execute_errors", ""))), raw_response.get("response", "")) mngr.raw_request = types.MethodType(raw_request, mngr) req = VKRequest("users.get", {"user_ids": "sdfsdfsdfsdfsdf"}) mngr.requests_queue.append(req) logging.disable(logging.ERROR) tasks = [] def ensure(task): _task = asyncio.ensure_future(task, loop=self.loop) tasks.append(_task) return _task self.loop.run_until_complete(mngr._exec_loop()) self.loop.run_until_complete(asyncio.gather(*tasks)) logging.disable(logging.INFO) response = self.loop.run_until_complete(req) self.assertTrue(response.error) self.assertEqual(response.errors[0][0], "VK_req") self.assertEqual(response.response, "")