47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
from fooder.utils.jwt import AccessToken, RefreshToken
|
|
|
|
|
|
async def test_create_token_returns_tokens(client, user, user_password):
|
|
response = await client.post(
|
|
"/api/token",
|
|
data={"username": user.username, "password": user_password},
|
|
)
|
|
assert response.status_code == 200
|
|
body = response.json()
|
|
assert "access_token" in body
|
|
assert "refresh_token" in body
|
|
assert body["token_type"] == "bearer"
|
|
|
|
|
|
async def test_create_token_access_token_is_valid(client, user, user_password):
|
|
response = await client.post(
|
|
"/api/token",
|
|
data={"username": user.username, "password": user_password},
|
|
)
|
|
token = AccessToken.decode(response.json()["access_token"])
|
|
assert token.sub == user.id
|
|
|
|
|
|
async def test_create_token_refresh_token_is_valid(client, user, user_password):
|
|
response = await client.post(
|
|
"/api/token",
|
|
data={"username": user.username, "password": user_password},
|
|
)
|
|
token = RefreshToken.decode(response.json()["refresh_token"])
|
|
assert token.sub == user.id
|
|
|
|
|
|
async def test_create_token_wrong_password(client, user):
|
|
response = await client.post(
|
|
"/api/token",
|
|
data={"username": user.username, "password": "wrong"},
|
|
)
|
|
assert response.status_code == 401
|
|
|
|
|
|
async def test_create_token_unknown_user(client):
|
|
response = await client.post(
|
|
"/api/token",
|
|
data={"username": "nobody", "password": "x"},
|
|
)
|
|
assert response.status_code == 401
|