mealie/tests/integration_tests/test_validators.py
Flightkick bb9afd86c1
fix: Use reserved example.com as bogus instead of email.com domain. (#2551)
`email.com` is not a reserved domain, incorrect configuration could result in unintentional effects.
`example.com` is reserved by IANA for bogus purposes, see RFC 6761.
2023-09-23 07:56:34 -08:00

78 lines
2.6 KiB
Python

from dataclasses import dataclass
from uuid import UUID
from fastapi.testclient import TestClient
from mealie.repos.repository_factory import AllRepositories
from mealie.schema.recipe.recipe import Recipe
from tests.utils import api_routes, random_string
from tests.utils.fixture_schemas import TestUser
@dataclass(slots=True)
class SimpleCase:
value: str
is_valid: bool
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:
response = api_client.get(api_routes.validators_user_name + "?name=" + user.value)
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()}@example.com", is_valid=True),
]
for user in emails:
response = api_client.get(api_routes.validators_user_email + "?email=" + user.value)
assert response.status_code == 200
response_data = response.json()
assert response_data["valid"] == user.is_valid
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:
response = api_client.get(api_routes.validators_group + "?name=" + user.value)
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),
]
for recipe in recipes:
response = api_client.get(api_routes.validators_recipe + f"?group_id={recipe.group}&name={recipe.name}")
assert response.status_code == 200
response_data = response.json()
assert response_data["valid"] == recipe.is_valid