def test_logout(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_handle_logout(token=None): resp = await client.get( "/1/private/us/en/dev_1234/ios/1/0/0/user/logout?accessToken={}". format(token)) assert resp.status == 200 text = await resp.text() jsonresp = json.loads(text) if jsonresp: assert jsonresp["code"] == bumper.RETURN_API_SUCCESS else: assert jsonresp # Add a token to user and test bumper.user_add("testuser") bumper.user_add_device("testuser", "dev_1234") bumper.user_add_token("testuser", "token_1234") # Test loop.run_until_complete(test_handle_logout(token="token_1234")) loop.run_until_complete( client.close()) # Close test server after all tests are done
def test_postLookup(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_handle_lookup(postbody=None): resp = await client.post("/lookup.do", json=postbody) assert resp.status == 200 text = await resp.text() jsonresp = json.loads(text) if jsonresp: assert jsonresp["result"] == "ok" else: assert jsonresp # Test FindBest postbody = {"todo": "FindBest", "service": "EcoMsgNew"} # Test loop.run_until_complete(test_handle_lookup(postbody)) # Test EcoUpdate postbody = {"todo": "FindBest", "service": "EcoUpdate"} # Test loop.run_until_complete(test_handle_lookup(postbody)) loop.run_until_complete( client.close()) # Close test server after all tests are done
def test_checkVersion(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_handle_checkVersion(): resp = await client.get( "/1/private/us/en/dev_1234/ios/1/0/0/common/checkVersion") assert resp.status == 200 text = await resp.text() jsonresp = json.loads(text) if jsonresp: assert jsonresp["code"] == bumper.RETURN_API_SUCCESS else: assert jsonresp # Test loop.run_until_complete(test_handle_checkVersion()) loop.run_until_complete( client.close()) # Close test server after all tests are done
def client(event_loop, app, cookie_jar): from aiohttp.test_utils import TestServer, TestClient _server = TestServer(app, loop=event_loop) _client = TestClient(_server, loop=event_loop, cookie_jar=cookie_jar) event_loop.run_until_complete(_client.start_server()) yield _client event_loop.run_until_complete(_client.close())
def _create_from_app_factory(app_factory, *args, **kwargs): nonlocal test_client, rpc_client app = app_factory(loop, *args, **kwargs) test_client = TestClient(TestServer(app), loop=loop) yield from test_client.start_server() rpc_client = ServerProxy('', loop=loop, client=test_client) return rpc_client
def run(self): try: backend = Backend(graph_path=str(TEST_GRAPH_PATH)) with backend: with loop_context() as loop: app = make_app(backend=backend, debug=True) client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) url = client.make_url("/graph/") self.q.put(url) loop.run_forever() except Exception as e: self.q.put(e)
def test_checkLogin(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_handle_checkLogin(token=None): resp = await client.get( "/1/private/us/en/dev_1234/ios/1/0/0/user/checkLogin?accessToken={}" .format(token)) assert resp.status == 200 text = await resp.text() jsonresp = json.loads(text) if jsonresp: assert jsonresp["code"] == bumper.RETURN_API_SUCCESS assert "accessToken" in jsonresp["data"] if not token: assert jsonresp["data"]["accessToken"] != "token_1234" else: assert jsonresp["data"]["accessToken"] == "token_1234" assert "uid" in jsonresp["data"] assert "username" in jsonresp["data"] else: assert jsonresp # Test loop.run_until_complete(test_handle_checkLogin()) # Add a user to db and test with existing users bumper.user_add("testuser") # Test loop.run_until_complete(test_handle_checkLogin()) # Remove dev from tmpuser bumper.user_remove_device("tmpuser", "dev_1234") # Add a token to user and test bumper.user_add("testuser") bumper.user_add_device("testuser", "dev_1234") bumper.user_add_token("testuser", "token_1234") # Test loop.run_until_complete(test_handle_checkLogin(token="token_1234")) loop.run_until_complete( client.close()) # Close test server after all tests are done
def clients_context(routine, patch_nyms=nyms): with patch('websockets_server.core.server.nyms', patch_nyms): with loop_context() as loopext: app = HXApplication() server = TestServer(app) client1 = TestClient(server, loop=loopext) loopext.run_until_complete(client1.start_server()) client2 = TestClient(server, loop=loopext) try: loopext.run_until_complete(routine(client2, client2, app)) finally: loopext.run_until_complete(client1._server.close()) loopext.run_until_complete(client1.close()) loopext.run_until_complete(client2.close())
def clients_context_num(routine, num=2, patch_nyms=nyms): with patch('websockets_server.core.server.nyms', patch_nyms): with loop_context() as loopext: app = HXApplication() server = TestServer(app) clients = [] for i in range(num): client = TestClient(server, loop=loopext) if i == 0: loopext.run_until_complete(client.start_server()) clients.append(client) try: loopext.run_until_complete(routine(app, *clients)) finally: loopext.run_until_complete(clients[0]._server.close()) for client in clients: loopext.run_until_complete(client.close())
def test_getAuthCode(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_handle_getAuthCode(uid=None, token=None): resp = await client.get( "/1/private/us/en/dev_1234/ios/1/0/0/user/getAuthCode?uid={}&accessToken={}" .format(uid, token)) assert resp.status == 200 text = await resp.text() jsonresp = json.loads(text) if jsonresp: if token: assert jsonresp["code"] == bumper.RETURN_API_SUCCESS assert "authCode" in jsonresp["data"] assert "ecovacsUid" in jsonresp["data"] else: assert jsonresp["code"] == bumper.ERR_TOKEN_INVALID else: assert jsonresp # Test without user or token loop.run_until_complete(test_handle_getAuthCode()) # Add a token to user and test bumper.user_add("testuser") bumper.user_add_device("testuser", "dev_1234") bumper.user_add_token("testuser", "token_1234") # Test loop.run_until_complete( test_handle_getAuthCode(uid="testuser", token="token_1234")) # The above should have added an authcode to token, try again to test with existing authcode # Test loop.run_until_complete( test_handle_getAuthCode(uid="testuser", token="token_1234")) loop.run_until_complete( client.close()) # Close test server after all tests are done
def test_base(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_handle_base(): resp = await client.get("/") assert resp.status == 200 text = await resp.text() assert "Bumper!" in text # Test loop.run_until_complete(test_handle_base()) loop.run_until_complete( client.close()) # Close test server after all tests are done
def go(__param, *args, server_kwargs={}, **kwargs): if isinstance(__param, collections.Callable) and \ not isinstance(__param, (Application, BaseTestServer)): __param = __param(event_loop, *args, **kwargs) kwargs = {} else: assert not args, "args should be empty" if isinstance(__param, Application): server = TestServer(__param, loop=event_loop, **server_kwargs) client = TestClient(server, loop=event_loop, **kwargs) elif isinstance(__param, BaseTestServer): client = TestClient(__param, loop=event_loop, **kwargs) else: raise ValueError("Unknown argument type: %r" % type(__param)) yield from client.start_server() clients.append(client) return client
def test_login(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_handle_login(): resp = await client.get( "/1/private/us/en/dev_1234/ios/1/0/0/user/login") assert resp.status == 200 text = await resp.text() jsonresp = json.loads(text) if jsonresp: assert jsonresp["code"] == bumper.RETURN_API_SUCCESS assert "accessToken" in jsonresp["data"] assert "uid" in jsonresp["data"] assert "username" in jsonresp["data"] else: assert jsonresp # Test loop.run_until_complete(test_handle_login()) # Add a user to db and test with existing users bumper.user_add("testuser") # Test loop.run_until_complete(test_handle_login()) # Add a bot to db that will be added to user bumper.bot_add("sn_123", "did_123", "dev_123", "res_123", "com_123") # Test loop.run_until_complete(test_handle_login()) loop.run_until_complete( client.close()) # Close test server after all tests are done
def test_getUsersAPI(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_handle_getUsersApi(): resp = await client.get("/api/users/user.do") assert resp.status == 200 text = await resp.text() jsonresp = json.loads(text) if jsonresp: assert jsonresp["result"] == "fail" else: assert jsonresp # Test loop.run_until_complete(test_handle_getUsersApi()) loop.run_until_complete( client.close()) # Close test server after all tests are done
def test_getProductIotMap(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_handle_getProductIotMap(): resp = await client.post("/api/pim/product/getProductIotMap") assert resp.status == 200 text = await resp.text() jsonresp = json.loads(text) if jsonresp: assert jsonresp["code"] == bumper.RETURN_API_SUCCESS else: assert jsonresp # Test loop.run_until_complete(test_handle_getProductIotMap()) loop.run_until_complete( client.close()) # Close test server after all tests are done
key=lambda x: datetime.strptime(x["date"], "%Y-%m-%dT%H:%M:%S")) result = current_news result['comments'] = news_comments result['comments_count'] = len(news_comments) return web.Response(text=json.dumps(result)) with loop_context() as loop: app = web.Application() app.add_routes( [web.get('/', all_news), web.get('/news/{news_id}', news_by_id)]) client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://127.0.0.1:8080" async def test_all_news(): resp = await client.get("/") assert resp.status == 200 news = await resp.json(content_type='text/plain') # news = json.loads(text) # id новостей, 3-я новость с датой выше текущей, 5-ая новость удалена checkup_list = [1, 2, 4] # количество комментариев к каждой новости comments_counts = [5, 2, 1] got_news = [] got_comments = [] for x in news['news']: got_news.append(x['id'])
def test_postUsersAPI(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_handle_postUsersApi(postbody=None): resp = await client.post("/api/users/user.do", json=postbody) assert resp.status == 200 text = await resp.text() jsonresp = json.loads(text) if jsonresp: assert jsonresp["result"] == "ok" else: assert jsonresp # Test FindBest postbody = {"todo": "FindBest", "service": "EcoMsgNew"} # Test loop.run_until_complete(test_handle_postUsersApi(postbody)) # Test EcoUpdate postbody = {"todo": "FindBest", "service": "EcoUpdate"} # Test loop.run_until_complete(test_handle_postUsersApi(postbody)) # Test loginByItToken - Uses the authcode bumper.user_add("testuser") bumper.user_add_device("testuser", "dev_1234") bumper.user_add_token("testuser", "token_1234") bumper.user_add_authcode("testuser", "token_1234", "auth_1234") bumper.user_add_bot("testuser", "did_1234") bumper.bot_add("sn_1234", "did_1234", "class_1234", "res_1234", "com_1234") # Test postbody = { "country": "US", "last": "", "realm": "ecouser.net", "resource": "dev_1234", "todo": "loginByItToken", "token": "auth_1234", "userId": "testuser", } loop.run_until_complete(test_handle_postUsersApi(postbody)) # Test GetDeviceList postbody = { "auth": { "realm": "ecouser.net", "resource": "dev_1234", "token": "token_1234", "userid": "testuser", "with": "users", }, "todo": "GetDeviceList", "userid": "testuser", } loop.run_until_complete(test_handle_postUsersApi(postbody)) # Test SetDeviceNick postbody = { "auth": { "realm": "ecouser.net", "resource": "dev_1234", "token": "token_1234", "userid": "testuser", "with": "users", }, "todo": "SetDeviceNick", "nick": "botnick", "did": "did_1234", } loop.run_until_complete(test_handle_postUsersApi(postbody)) # Test AddOneDevice - Same as set nick for some bots postbody = { "auth": { "realm": "ecouser.net", "resource": "dev_1234", "token": "token_1234", "userid": "testuser", "with": "users", }, "todo": "AddOneDevice", "nick": "botnick", "did": "did_1234", } loop.run_until_complete(test_handle_postUsersApi(postbody)) # Test DeleteOneDevice - remove bot postbody = { "auth": { "realm": "ecouser.net", "resource": "dev_1234", "token": "token_1234", "userid": "testuser", "with": "users", }, "todo": "DeleteOneDevice", "did": "did_1234", } loop.run_until_complete(test_handle_postUsersApi(postbody)) loop.run_until_complete( client.close()) # Close test server after all tests are done
async def http_client(http_server): client = TestClient(http_server) asyncio.ensure_future(client.start_server()) await asyncio.sleep(0.01) return client
def test_devmgr(): if os.path.exists("tests/tmp.db"): os.remove("tests/tmp.db") # Remove existing db bumper.db = "tests/tmp.db" # Set db location for testing loop = asyncio.get_event_loop() client = TestClient(TestServer(app), loop=loop) loop.run_until_complete(client.start_server()) root = "http://{}".format(confserver.address) async def test_devmanager(postbody=None, command=False): resp = await client.post("/api/iot/devmanager.do", json=postbody) assert resp.status == 200 text = await resp.text() jsonresp = json.loads(text) if jsonresp: if not command: assert jsonresp["ret"] == "ok" else: if "ret" in jsonresp: if jsonresp["ret"] == "ok": assert jsonresp["resp"] else: assert jsonresp["errno"] else: assert jsonresp # Test PollSCResult postbody = {"td": "PollSCResult"} # Test loop.run_until_complete(test_devmanager(postbody, command=False)) # Test BotCommand bumper.bot_add("sn_1234", "did_1234", "dev_1234", "res_1234", "eco-ng") bumper.bot_set_mqtt("did_1234", True) postbody = {"toId": "did_1234"} # Test return get status command_getstatus_resp = { "id": "resp_1234", "resp": "<ctl ret='ok' status='idle'/>", "ret": "ok" } confserver.helperbot.send_command = mock.MagicMock( return_value=async_return(command_getstatus_resp)) # Test loop.run_until_complete(test_devmanager(postbody, command=True)) # Test return fail timeout command_timeout_resp = { "id": "resp_1234", "errno": "timeout", "ret": "fail" } confserver.helperbot.send_command = mock.MagicMock( return_value=async_return(command_timeout_resp)) # Test loop.run_until_complete(test_devmanager(postbody, command=True)) # Set bot not on mqtt bumper.bot_set_mqtt("did_1234", False) confserver.helperbot.send_command = mock.MagicMock( return_value=async_return(command_getstatus_resp)) # Test loop.run_until_complete(test_devmanager(postbody, command=True)) loop.run_until_complete( client.close()) # Close test server after all tests are done