| 
									
										
										
										
											2022-05-06 11:18:06 -08:00
										 |  |  | from dataclasses import dataclass | 
					
						
							|  |  |  | from uuid import UUID | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-15 23:28:42 +01:00
										 |  |  | from fastapi.testclient import TestClient | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-06 11:18:06 -08:00
										 |  |  | from mealie.repos.repository_factory import AllRepositories | 
					
						
							| 
									
										
										
										
											2022-03-15 23:28:42 +01:00
										 |  |  | from mealie.schema.recipe.recipe import Recipe | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  | from tests.utils import api_routes, random_string | 
					
						
							| 
									
										
										
										
											2022-03-15 23:28:42 +01:00
										 |  |  | from tests.utils.fixture_schemas import TestUser | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-06 11:18:06 -08:00
										 |  |  | @dataclass(slots=True) | 
					
						
							|  |  |  | class SimpleCase: | 
					
						
							|  |  |  |     value: str | 
					
						
							|  |  |  |     is_valid: bool | 
					
						
							| 
									
										
										
										
											2022-03-15 23:28:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-06 11:18:06 -08: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 14:49:41 -08:00
										 |  |  |         response = api_client.get(api_routes.validators_user_name + "?name=" + user.value) | 
					
						
							| 
									
										
										
										
											2022-05-06 11:18:06 -08: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), | 
					
						
							| 
									
										
										
										
											2023-09-23 15:56:34 +00:00
										 |  |  |         SimpleCase(value=f"{random_string()}@example.com", is_valid=True), | 
					
						
							| 
									
										
										
										
											2022-05-06 11:18:06 -08:00
										 |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     for user in emails: | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |         response = api_client.get(api_routes.validators_user_email + "?email=" + user.value) | 
					
						
							| 
									
										
										
										
											2022-05-06 11:18:06 -08:00
										 |  |  |         assert response.status_code == 200 | 
					
						
							|  |  |  |         response_data = response.json() | 
					
						
							|  |  |  |         assert response_data["valid"] == user.is_valid | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-15 23:28:42 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-06 11:18:06 -08: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 14:49:41 -08:00
										 |  |  |         response = api_client.get(api_routes.validators_group + "?name=" + user.value) | 
					
						
							| 
									
										
										
										
											2022-05-06 11:18:06 -08: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 23:28:42 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-06 11:18:06 -08:00
										 |  |  |     for recipe in recipes: | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |         response = api_client.get(api_routes.validators_recipe + f"?group_id={recipe.group}&name={recipe.name}") | 
					
						
							| 
									
										
										
										
											2022-05-06 11:18:06 -08:00
										 |  |  |         assert response.status_code == 200 | 
					
						
							|  |  |  |         response_data = response.json() | 
					
						
							|  |  |  |         assert response_data["valid"] == recipe.is_valid |