import pytest import pytest_asyncio from tests.conftest import client @pytest.mark.asyncio async def test_core_views_generic(client): response = await client.get("/") assert response.status_code == 200, ( str(response.url) + " " + str(response.status_code) ) # check GET /wallet: wallet info @pytest.mark.asyncio async def test_get_wallet(client): response = await client.get("wallet") assert response.status_code == 307, ( # redirect not modified str(response.url) + " " + str(response.status_code) ) # check GET /wallet: do not allow redirects, expect code 307 @pytest.mark.asyncio async def test_get_wallet_no_redirect(client): response = await client.get("wallet", follow_redirects=False) assert response.status_code == 307, ( str(response.url) + " " + str(response.status_code) ) # determine the next redirect location request = client.build_request("GET", "wallet") i = 0 while request is not None: response = await client.send(request) request = response.next_request if i == 0: assert response.status_code == 307, ( # first redirect str(response.url) + " " + str(response.status_code) ) elif i == 1: assert response.status_code == 200, ( # then get the actual page str(response.url) + " " + str(response.status_code) ) i += 1 # check GET /wallet: wrong user, expect 204 @pytest.mark.asyncio async def test_get_wallet_with_nonexistent_user(client): response = await client.get("wallet", params={"usr": "1"}) assert response.status_code == 204, ( str(response.url) + " " + str(response.status_code) ) # check GET /wallet: with user @pytest.mark.asyncio async def test_get_wallet_with_user(client, to_user): response = await client.get("wallet", params={"usr": to_user.id}) assert response.status_code == 307, ( str(response.url) + " " + str(response.status_code) ) # determine the next redirect location request = client.build_request("GET", "wallet", params={"usr": to_user.id}) i = 0 while request is not None: response = await client.send(request) request = response.next_request if i == 0: assert response.status_code == 307, ( # first redirect str(response.url) + " " + str(response.status_code) ) elif i == 1: assert response.status_code == 200, ( # then get the actual page str(response.url) + " " + str(response.status_code) ) i += 1 # check GET /wallet: wallet and user @pytest.mark.asyncio async def test_get_wallet_with_user_and_wallet(client, to_user, to_wallet): response = await client.get( "wallet", params={"usr": to_user.id, "wal": to_wallet.id} ) assert response.status_code == 200, ( str(response.url) + " " + str(response.status_code) ) # check GET /wallet: wrong wallet and user, expect 204 @pytest.mark.asyncio async def test_get_wallet_with_user_and_wrong_wallet(client, to_user, to_wallet): response = await client.get("wallet", params={"usr": to_user.id, "wal": "1"}) assert response.status_code == 204, ( str(response.url) + " " + str(response.status_code) )