✅ Add normal-user fixture for testing (#20)
This commit is contained in:
@@ -51,3 +51,5 @@ FIRST_SUPERUSER = os.getenv("FIRST_SUPERUSER")
|
|||||||
FIRST_SUPERUSER_PASSWORD = os.getenv("FIRST_SUPERUSER_PASSWORD")
|
FIRST_SUPERUSER_PASSWORD = os.getenv("FIRST_SUPERUSER_PASSWORD")
|
||||||
|
|
||||||
USERS_OPEN_REGISTRATION = getenv_boolean("USERS_OPEN_REGISTRATION")
|
USERS_OPEN_REGISTRATION = getenv_boolean("USERS_OPEN_REGISTRATION")
|
||||||
|
|
||||||
|
EMAIL_TEST_USER = "test@example.com"
|
||||||
|
@@ -20,6 +20,18 @@ def test_get_users_superuser_me(superuser_token_headers):
|
|||||||
assert current_user["email"] == config.FIRST_SUPERUSER
|
assert current_user["email"] == config.FIRST_SUPERUSER
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_users_normal_user_me(normal_user_token_headers):
|
||||||
|
server_api = get_server_api()
|
||||||
|
r = requests.get(
|
||||||
|
f"{server_api}{config.API_V1_STR}/users/me", headers=normal_user_token_headers
|
||||||
|
)
|
||||||
|
current_user = r.json()
|
||||||
|
assert current_user
|
||||||
|
assert current_user["is_active"] is True
|
||||||
|
assert current_user["is_superuser"] is False
|
||||||
|
assert current_user["email"] == config.EMAIL_TEST_USER
|
||||||
|
|
||||||
|
|
||||||
def test_create_user_new_email(superuser_token_headers):
|
def test_create_user_new_email(superuser_token_headers):
|
||||||
server_api = get_server_api()
|
server_api = get_server_api()
|
||||||
username = random_lower_string()
|
username = random_lower_string()
|
||||||
@@ -71,16 +83,13 @@ def test_create_user_existing_username(superuser_token_headers):
|
|||||||
assert "_id" not in created_user
|
assert "_id" not in created_user
|
||||||
|
|
||||||
|
|
||||||
def test_create_user_by_normal_user():
|
def test_create_user_by_normal_user(normal_user_token_headers):
|
||||||
server_api = get_server_api()
|
server_api = get_server_api()
|
||||||
username = random_lower_string()
|
username = random_lower_string()
|
||||||
password = random_lower_string()
|
password = random_lower_string()
|
||||||
user_in = UserCreate(email=username, password=password)
|
|
||||||
user = crud.user.create(db_session, user_in=user_in)
|
|
||||||
user_token_headers = user_authentication_headers(server_api, username, password)
|
|
||||||
data = {"email": username, "password": password}
|
data = {"email": username, "password": password}
|
||||||
r = requests.post(
|
r = requests.post(
|
||||||
f"{server_api}{config.API_V1_STR}/users/", headers=user_token_headers, json=data
|
f"{server_api}{config.API_V1_STR}/users/", headers=normal_user_token_headers, json=data
|
||||||
)
|
)
|
||||||
assert r.status_code == 400
|
assert r.status_code == 400
|
||||||
|
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from app.core import config
|
||||||
from app.tests.utils.utils import get_server_api, get_superuser_token_headers
|
from app.tests.utils.utils import get_server_api, get_superuser_token_headers
|
||||||
|
from app.tests.utils.user import authentication_token_from_email
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
@@ -11,3 +13,8 @@ def server_api():
|
|||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
def superuser_token_headers():
|
def superuser_token_headers():
|
||||||
return get_superuser_token_headers()
|
return get_superuser_token_headers()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="module")
|
||||||
|
def normal_user_token_headers():
|
||||||
|
return authentication_token_from_email(config.EMAIL_TEST_USER)
|
||||||
|
@@ -3,8 +3,8 @@ import requests
|
|||||||
from app import crud
|
from app import crud
|
||||||
from app.core import config
|
from app.core import config
|
||||||
from app.db.session import db_session
|
from app.db.session import db_session
|
||||||
from app.models.user import UserCreate
|
from app.models.user import UserCreate, UserUpdate
|
||||||
from app.tests.utils.utils import random_lower_string
|
from app.tests.utils.utils import get_server_api, random_lower_string
|
||||||
|
|
||||||
|
|
||||||
def user_authentication_headers(server_api, email, password):
|
def user_authentication_headers(server_api, email, password):
|
||||||
@@ -23,3 +23,21 @@ def create_random_user():
|
|||||||
user_in = UserCreate(username=email, email=email, password=password)
|
user_in = UserCreate(username=email, email=email, password=password)
|
||||||
user = crud.user.create(db_session=db_session, user_in=user_in)
|
user = crud.user.create(db_session=db_session, user_in=user_in)
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
|
def authentication_token_from_email(email):
|
||||||
|
"""
|
||||||
|
Return a valid token for the user with given email.
|
||||||
|
|
||||||
|
If the user doesn't exist it is created first.
|
||||||
|
"""
|
||||||
|
password = random_lower_string()
|
||||||
|
user = crud.user.get_by_email(db_session, email=email)
|
||||||
|
if not user:
|
||||||
|
user_in = UserCreate(username=email, email=email, password=password)
|
||||||
|
user = crud.user.create(db_session=db_session, user_in=user_in)
|
||||||
|
else:
|
||||||
|
user_in = UserUpdate(password=password)
|
||||||
|
user = crud.user.update(db_session, user=user, user_in=user_in)
|
||||||
|
|
||||||
|
return user_authentication_headers(get_server_api(), email, password)
|
||||||
|
Reference in New Issue
Block a user