Add normal-user fixture for testing (#20)

This commit is contained in:
Manu
2020-01-19 13:25:17 +01:00
committed by Sebastián Ramírez
parent 44d8a4358b
commit 248ea56c6e
4 changed files with 43 additions and 7 deletions

View File

@@ -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"

View File

@@ -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

View File

@@ -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)

View File

@@ -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)