File size: 1,486 Bytes
bb4b25f
 
 
 
afc114b
 
 
 
 
d454ab0
 
bb4b25f
 
 
 
 
 
 
d454ab0
c8a050e
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import pytest
from app.config import setting
from app.schemas import user, token
from jose import jwt

def test_create_user(client):
    response = client.post("/users/", json={"email": "abdullah@gmail.com", "password": "abdullah1234"})
    new_user = user.UserResponse(**response.json())
    assert response.status_code == 201
    assert new_user.email == "abdullah@gmail.com"

def test_login_user(client,create_test_user):
    response = client.post("/login", data={"username": create_test_user["email"], "password": create_test_user["password"]})
    login_response=token.Token(**response.json())
    payload = jwt.decode(login_response.access_token, setting.secret_key, algorithms=[setting.algorithm])
    id=payload.get("id")
    assert id == create_test_user["id"]
    assert login_response.token_type == "bearer"
    assert response.status_code==200

@pytest.mark.parametrize("email, password, status_code", [
    ("abdullah@gmail.com", "wrongpassword", 403),
    ("wrong@gmail.com",    "abdullah1234",  403),
    ("wrong@gmail.com",    "wrongpassword", 403),
    (None,                 None,            422),
    ("abdullah@gmail.com", None,            422),
    (None,                 "abdullah1234",  422),
    ("abdullah@gmail.com", "abdullah1234",  200),
])
def test_login_parametrized(client, create_test_user, email, password, status_code):
    response = client.post("/login", data={"username": email, "password": password})
    assert response.status_code == status_code