From 169d22ad72651f7a65909719ef7f7cf216dcdd63 Mon Sep 17 00:00:00 2001 From: Luna Date: Sat, 16 Mar 2019 20:31:28 -0300 Subject: [PATCH] test_admin_api.test_users: add impl for test_create_delete - admin_api.users: fix bug --- litecord/blueprints/admin_api/users.py | 2 +- tests/test_admin_api/test_users.py | 64 ++++++++++++++++++++++++-- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/litecord/blueprints/admin_api/users.py b/litecord/blueprints/admin_api/users.py index ee8843d..6f309d6 100644 --- a/litecord/blueprints/admin_api/users.py +++ b/litecord/blueprints/admin_api/users.py @@ -35,7 +35,7 @@ async def _create_user(): j = validate(await request.get_json(), USER_CREATE) - user_id = await create_user(j['username'], j['email'], j['password']) + user_id, _ = await create_user(j['username'], j['email'], j['password']) return jsonify( await app.storage.get_user(user_id) diff --git a/tests/test_admin_api/test_users.py b/tests/test_admin_api/test_users.py index dd300f5..3ad51f7 100644 --- a/tests/test_admin_api/test_users.py +++ b/tests/test_admin_api/test_users.py @@ -17,21 +17,75 @@ along with this program. If not, see . """ +import secrets + import pytest from tests.common import login +async def _search(test_cli, *, username='', discrim='', token=None): + if token is None: + token = await login('admin', test_cli) + + query_string = { + 'username': username, + 'discriminator': discrim + } + + return await test_cli.get('/api/v6/admin/users', headers={ + 'Authorization': token + }, query_string=query_string) + + @pytest.mark.asyncio async def test_list_users(test_cli): """Try to list as many users as possible.""" - token = await login('admin', test_cli) - # NOTE: replace here if admin username changes - resp = await test_cli.get('/api/v6/admin/users?username=big_girl', headers={ - 'Authorization': token - }) + resp = await _search(test_cli, username='big_girl') assert resp.status_code == 200 rjson = await resp.json assert isinstance(rjson, list) assert rjson + + +@pytest.mark.asyncio +async def test_create_delete(test_cli): + """Create a user. Then delete them.""" + token = await login('admin', test_cli) + + genned = secrets.token_hex(7) + + resp = await test_cli.post('/api/v6/admin/users', headers={ + 'Authorization': token + }, json={ + 'username': genned, + 'email': f'{genned}@{genned}.com', + 'password': genned, + }) + + assert resp.status_code == 200 + rjson = await resp.json + assert isinstance(rjson, dict) + assert rjson['username'] == genned + + genned_uid = rjson['id'] + + # check if side-effects went through with a search + resp = await _search(test_cli, username=genned, token=token) + + assert resp.status_code == 200 + rjson = await resp.json + assert isinstance(rjson, list) + assert rjson[0]['id'] == genned_uid + + # delete + resp = await test_cli.delete(f'/api/v6/admin/users/{genned_uid}', headers={ + 'Authorization': token + }) + + assert resp.status_code == 200 + rjson = await resp.json + assert isinstance(rjson, dict) + assert rjson['new']['id'] == genned_uid + assert rjson['old']['id'] == rjson['new']['id']