2022-05-06 19:18:06 +00:00
|
|
|
from dataclasses import dataclass
|
|
|
|
from uuid import UUID
|
|
|
|
|
2022-03-15 22:28:42 +00:00
|
|
|
from fastapi.testclient import TestClient
|
|
|
|
|
2022-05-06 19:18:06 +00:00
|
|
|
from mealie.repos.repository_factory import AllRepositories
|
2022-03-15 22:28:42 +00:00
|
|
|
from mealie.schema.recipe.recipe import Recipe
|
2022-10-18 22:49:41 +00:00
|
|
|
from tests.utils import api_routes, random_string
|
2022-03-15 22:28:42 +00:00
|
|
|
from tests.utils.fixture_schemas import TestUser
|
|
|
|
|
|
|
|
|
2022-05-06 19:18:06 +00:00
|
|
|
@dataclass(slots=True)
|
|
|
|
class SimpleCase:
|
|
|
|
value: str
|
|
|
|
is_valid: bool
|
2022-03-15 22:28:42 +00:00
|
|
|
|
|
|
|
|
2022-05-06 19:18:06 +00:00
|
|
|
def test_validators_username(api_client: TestClient, unique_user: TestUser):
|
|
|
|
users = [
|
|
|
|
SimpleCase(value=unique_user.username, is_valid=False),
|
|
|
|
SimpleCase(value=random_string(), is_valid=True),
|
|
|
|
]
|
|
|
|
|
|
|
|
for user in users:
|
2022-10-18 22:49:41 +00:00
|
|
|
response = api_client.get(api_routes.validators_user_name + "?name=" + user.value)
|
2022-05-06 19:18:06 +00:00
|
|
|
assert response.status_code == 200
|
|
|
|
response_data = response.json()
|
|
|
|
assert response_data["valid"] == user.is_valid
|
|
|
|
|
|
|
|
|
|
|
|
def test_validators_email(api_client: TestClient, unique_user: TestUser):
|
|
|
|
emails = [
|
|
|
|
SimpleCase(value=unique_user.email, is_valid=False),
|
|
|
|
SimpleCase(value=f"{random_string()}@email.com", is_valid=True),
|
|
|
|
]
|
|
|
|
|
|
|
|
for user in emails:
|
2022-10-18 22:49:41 +00:00
|
|
|
response = api_client.get(api_routes.validators_user_email + "?email=" + user.value)
|
2022-05-06 19:18:06 +00:00
|
|
|
assert response.status_code == 200
|
|
|
|
response_data = response.json()
|
|
|
|
assert response_data["valid"] == user.is_valid
|
|
|
|
|
2022-03-15 22:28:42 +00:00
|
|
|
|
2022-05-06 19:18:06 +00:00
|
|
|
def test_validators_group_name(api_client: TestClient, unique_user: TestUser, database: AllRepositories):
|
|
|
|
group = database.groups.get_one(unique_user.group_id)
|
|
|
|
|
|
|
|
groups = [
|
|
|
|
SimpleCase(value=group.name, is_valid=False),
|
|
|
|
SimpleCase(value=random_string(), is_valid=True),
|
|
|
|
]
|
|
|
|
|
|
|
|
for user in groups:
|
2022-10-18 22:49:41 +00:00
|
|
|
response = api_client.get(api_routes.validators_group + "?name=" + user.value)
|
2022-05-06 19:18:06 +00:00
|
|
|
assert response.status_code == 200
|
|
|
|
response_data = response.json()
|
|
|
|
assert response_data["valid"] == user.is_valid
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(slots=True)
|
|
|
|
class RecipeValidators:
|
|
|
|
name: str
|
|
|
|
group: UUID | str
|
|
|
|
is_valid: bool
|
|
|
|
|
|
|
|
|
|
|
|
def test_validators_recipe(api_client: TestClient, random_recipe: Recipe):
|
|
|
|
recipes = [
|
|
|
|
RecipeValidators(name=random_recipe.name, group=random_recipe.group_id, is_valid=False),
|
|
|
|
RecipeValidators(name=random_string(), group=random_recipe.group_id, is_valid=True),
|
|
|
|
RecipeValidators(name=random_string(), group=random_recipe.group_id, is_valid=True),
|
|
|
|
]
|
2022-03-15 22:28:42 +00:00
|
|
|
|
2022-05-06 19:18:06 +00:00
|
|
|
for recipe in recipes:
|
2022-10-18 22:49:41 +00:00
|
|
|
response = api_client.get(api_routes.validators_recipe + f"?group_id={recipe.group}&name={recipe.name}")
|
2022-05-06 19:18:06 +00:00
|
|
|
assert response.status_code == 200
|
|
|
|
response_data = response.json()
|
|
|
|
assert response_data["valid"] == recipe.is_valid
|