| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | import json | 
					
						
							| 
									
										
										
										
											2024-08-12 17:09:30 +02:00
										 |  |  | from collections.abc import Generator | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | from uuid import UUID | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  | from pytest import fixture | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | from sqlalchemy.orm import Session | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | from starlette.testclient import TestClient | 
					
						
							| 
									
										
										
										
											2023-09-14 09:09:05 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-26 13:12:16 -06:00
										 |  |  | from mealie.db.db_setup import session_context | 
					
						
							|  |  |  | from mealie.db.models.users.users import AuthMethod | 
					
						
							|  |  |  | from mealie.repos.all_repositories import get_repositories | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | from tests import utils | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  | from tests.utils import api_routes | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  | from tests.utils.factories import random_string | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | def build_unique_user(session: Session, group: str, api_client: TestClient) -> utils.TestUser: | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |     group = group or random_string(12) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     registration = utils.user_registration_factory() | 
					
						
							| 
									
										
										
										
											2024-02-11 10:47:37 -06:00
										 |  |  |     response = api_client.post("/api/users/register", json=registration.model_dump(by_alias=True)) | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |     assert response.status_code == 201 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     form_data = {"username": registration.username, "password": registration.password} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |     token = utils.login(form_data, api_client) | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  |     user_data = api_client.get(api_routes.users_self, headers=token).json() | 
					
						
							|  |  |  |     assert token is not None | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |     user_id = user_data.get("id") | 
					
						
							|  |  |  |     group_id = user_data.get("groupId") | 
					
						
							|  |  |  |     household_id = user_data.get("householdId") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if not isinstance(user_id, UUID): | 
					
						
							|  |  |  |         user_id = UUID(user_id) | 
					
						
							|  |  |  |     if not isinstance(group_id, UUID): | 
					
						
							|  |  |  |         group_id = UUID(group_id) | 
					
						
							|  |  |  |     if not isinstance(household_id, UUID): | 
					
						
							|  |  |  |         household_id = UUID(household_id) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |     return utils.TestUser( | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |         _group_id=group_id, | 
					
						
							|  |  |  |         _household_id=household_id, | 
					
						
							|  |  |  |         user_id=user_id, | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |         email=user_data.get("email"), | 
					
						
							| 
									
										
										
										
											2022-03-15 23:28:42 +01:00
										 |  |  |         username=user_data.get("username"), | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |         password=registration.password, | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |         token=token, | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |         repos=get_repositories(session, group_id=group_id, household_id=household_id), | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @fixture(scope="module") | 
					
						
							|  |  |  | def h2_user(session: Session, admin_token, api_client: TestClient, unique_user: utils.TestUser): | 
					
						
							|  |  |  |     """Another user in the same group as `unique_user`, but in a different household""" | 
					
						
							|  |  |  |     group = api_client.get(api_routes.groups_self, headers=unique_user.token).json() | 
					
						
							|  |  |  |     household_name = random_string(12) | 
					
						
							|  |  |  |     api_client.post( | 
					
						
							|  |  |  |         api_routes.admin_households, | 
					
						
							|  |  |  |         json={ | 
					
						
							|  |  |  |             "name": household_name, | 
					
						
							|  |  |  |             "groupId": group["id"], | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         headers=admin_token, | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |     ) | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |     user_data = { | 
					
						
							|  |  |  |         "fullName": utils.random_string(), | 
					
						
							|  |  |  |         "username": utils.random_string(), | 
					
						
							|  |  |  |         "email": utils.random_email(), | 
					
						
							|  |  |  |         "password": "useruser", | 
					
						
							|  |  |  |         "group": group["name"], | 
					
						
							|  |  |  |         "household": household_name, | 
					
						
							|  |  |  |         "admin": False, | 
					
						
							|  |  |  |         "tokens": [], | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     response = api_client.post(api_routes.users, json=user_data, headers=admin_token) | 
					
						
							|  |  |  |     assert response.status_code == 201 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Log in as this user | 
					
						
							|  |  |  |     form_data = {"username": user_data["email"], "password": "useruser"} | 
					
						
							|  |  |  |     token = utils.login(form_data, api_client) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     self_response = api_client.get(api_routes.users_self, headers=token) | 
					
						
							|  |  |  |     assert self_response.status_code == 200 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     data = json.loads(self_response.text) | 
					
						
							|  |  |  |     user_id = data["id"] | 
					
						
							|  |  |  |     household_id = data["householdId"] | 
					
						
							|  |  |  |     group_id = data["groupId"] | 
					
						
							|  |  |  |     assert user_id | 
					
						
							|  |  |  |     assert group_id | 
					
						
							|  |  |  |     assert household_id | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if not isinstance(user_id, UUID): | 
					
						
							|  |  |  |         user_id = UUID(user_id) | 
					
						
							|  |  |  |     if not isinstance(group_id, UUID): | 
					
						
							|  |  |  |         group_id = UUID(group_id) | 
					
						
							|  |  |  |     if not isinstance(household_id, UUID): | 
					
						
							|  |  |  |         household_id = UUID(household_id) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try: | 
					
						
							|  |  |  |         yield utils.TestUser( | 
					
						
							|  |  |  |             user_id=user_id, | 
					
						
							|  |  |  |             _group_id=group_id, | 
					
						
							|  |  |  |             _household_id=household_id, | 
					
						
							|  |  |  |             token=token, | 
					
						
							|  |  |  |             email=user_data["email"], | 
					
						
							|  |  |  |             username=user_data["username"], | 
					
						
							|  |  |  |             password=user_data["password"], | 
					
						
							|  |  |  |             repos=get_repositories(session, group_id=group_id, household_id=household_id), | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |     finally: | 
					
						
							|  |  |  |         # TODO: Delete User after test | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  | @fixture(scope="module") | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | def g2_user(session: Session, admin_token, api_client: TestClient): | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |     group = random_string(12) | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |     # Create the user | 
					
						
							|  |  |  |     create_data = { | 
					
						
							|  |  |  |         "fullName": utils.random_string(), | 
					
						
							|  |  |  |         "username": utils.random_string(), | 
					
						
							|  |  |  |         "email": utils.random_email(), | 
					
						
							|  |  |  |         "password": "useruser", | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |         "group": group, | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |         "household": "Family", | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |         "admin": False, | 
					
						
							|  |  |  |         "tokens": [], | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |     api_client.post(api_routes.admin_groups, json={"name": group}, headers=admin_token) | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |     response = api_client.post(api_routes.users, json=create_data, headers=admin_token) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert response.status_code == 201 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Log in as this user | 
					
						
							|  |  |  |     form_data = {"username": create_data["email"], "password": "useruser"} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |     token = utils.login(form_data, api_client) | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  |     self_response = api_client.get(api_routes.users_self, headers=token) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert self_response.status_code == 200 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     user_id = json.loads(self_response.text).get("id") | 
					
						
							|  |  |  |     group_id = json.loads(self_response.text).get("groupId") | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |     household_id = json.loads(self_response.text).get("householdId") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if not isinstance(user_id, UUID): | 
					
						
							|  |  |  |         user_id = UUID(user_id) | 
					
						
							|  |  |  |     if not isinstance(group_id, UUID): | 
					
						
							|  |  |  |         group_id = UUID(group_id) | 
					
						
							|  |  |  |     if not isinstance(household_id, UUID): | 
					
						
							|  |  |  |         household_id = UUID(household_id) | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  |     try: | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |         yield utils.TestUser( | 
					
						
							|  |  |  |             user_id=user_id, | 
					
						
							|  |  |  |             _group_id=group_id, | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |             _household_id=household_id, | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |             token=token, | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |             email=create_data["email"],  # type: ignore | 
					
						
							|  |  |  |             username=create_data.get("username"),  # type: ignore | 
					
						
							|  |  |  |             password=create_data.get("password"),  # type: ignore | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |             repos=get_repositories(session, group_id=group_id, household_id=household_id), | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |     finally: | 
					
						
							|  |  |  |         # TODO: Delete User after test | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @fixture(scope="module") | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | def unique_user(session: Session, api_client: TestClient): | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |     registration = utils.user_registration_factory() | 
					
						
							| 
									
										
										
										
											2024-02-11 10:47:37 -06:00
										 |  |  |     response = api_client.post("/api/users/register", json=registration.model_dump(by_alias=True)) | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |     assert response.status_code == 201 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     form_data = {"username": registration.username, "password": registration.password} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |     token = utils.login(form_data, api_client) | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  |     user_data = api_client.get(api_routes.users_self, headers=token).json() | 
					
						
							|  |  |  |     assert token is not None | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |     assert (user_id := user_data.get("id")) is not None | 
					
						
							|  |  |  |     assert (group_id := user_data.get("groupId")) is not None | 
					
						
							|  |  |  |     assert (household_id := user_data.get("householdId")) is not None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if not isinstance(user_id, UUID): | 
					
						
							|  |  |  |         user_id = UUID(user_id) | 
					
						
							|  |  |  |     if not isinstance(group_id, UUID): | 
					
						
							|  |  |  |         group_id = UUID(group_id) | 
					
						
							|  |  |  |     if not isinstance(household_id, UUID): | 
					
						
							|  |  |  |         household_id = UUID(household_id) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |     try: | 
					
						
							|  |  |  |         yield utils.TestUser( | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |             _group_id=group_id, | 
					
						
							|  |  |  |             _household_id=household_id, | 
					
						
							|  |  |  |             user_id=user_id, | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |             email=user_data.get("email"), | 
					
						
							| 
									
										
										
										
											2022-03-15 23:28:42 +01:00
										 |  |  |             username=user_data.get("username"), | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |             password=registration.password, | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |             token=token, | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |             repos=get_repositories(session, group_id=group_id, household_id=household_id), | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |         ) | 
					
						
							|  |  |  |     finally: | 
					
						
							|  |  |  |         # TODO: Delete User after test | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  | @fixture(scope="module") | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | def user_tuple(session: Session, admin_token, api_client: TestClient) -> Generator[list[utils.TestUser], None, None]: | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |     group_name = utils.random_string() | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |     # Create the user | 
					
						
							|  |  |  |     create_data_1 = { | 
					
						
							|  |  |  |         "fullName": utils.random_string(), | 
					
						
							|  |  |  |         "username": utils.random_string(), | 
					
						
							|  |  |  |         "email": utils.random_email(), | 
					
						
							|  |  |  |         "password": "useruser", | 
					
						
							|  |  |  |         "group": group_name, | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |         "household": "Family", | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |         "admin": False, | 
					
						
							|  |  |  |         "tokens": [], | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     create_data_2 = { | 
					
						
							|  |  |  |         "fullName": utils.random_string(), | 
					
						
							|  |  |  |         "username": utils.random_string(), | 
					
						
							|  |  |  |         "email": utils.random_email(), | 
					
						
							|  |  |  |         "password": "useruser", | 
					
						
							|  |  |  |         "group": group_name, | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |         "household": "Family", | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |         "admin": False, | 
					
						
							|  |  |  |         "tokens": [], | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |     api_client.post(api_routes.admin_groups, json={"name": group_name}, headers=admin_token) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |     users_out = [] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     for usr in [create_data_1, create_data_2]: | 
					
						
							|  |  |  |         response = api_client.post(api_routes.users, json=usr, headers=admin_token) | 
					
						
							|  |  |  |         assert response.status_code == 201 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Log in as this user | 
					
						
							|  |  |  |         form_data = {"username": usr["email"], "password": "useruser"} | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |         token = utils.login(form_data, api_client) | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |         response = api_client.get(api_routes.users_self, headers=token) | 
					
						
							|  |  |  |         assert response.status_code == 200 | 
					
						
							|  |  |  |         user_data = json.loads(response.text) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |         user_id = user_data.get("id") | 
					
						
							|  |  |  |         group_id = user_data.get("groupId") | 
					
						
							|  |  |  |         household_id = user_data.get("householdId") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if not isinstance(user_id, UUID): | 
					
						
							|  |  |  |             user_id = UUID(user_id) | 
					
						
							|  |  |  |         if not isinstance(group_id, UUID): | 
					
						
							|  |  |  |             group_id = UUID(group_id) | 
					
						
							|  |  |  |         if not isinstance(household_id, UUID): | 
					
						
							|  |  |  |             household_id = UUID(household_id) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |         users_out.append( | 
					
						
							|  |  |  |             utils.TestUser( | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |                 _group_id=group_id, | 
					
						
							|  |  |  |                 _household_id=household_id, | 
					
						
							|  |  |  |                 user_id=user_id, | 
					
						
							| 
									
										
										
										
											2022-03-15 23:28:42 +01:00
										 |  |  |                 username=user_data.get("username"), | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |                 email=user_data.get("email"), | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |                 password="useruser", | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |                 token=token, | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |                 repos=get_repositories(session, group_id=group_id, household_id=household_id), | 
					
						
							| 
									
										
										
										
											2021-12-11 19:12:08 -09:00
										 |  |  |             ) | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try: | 
					
						
							|  |  |  |         yield users_out | 
					
						
							|  |  |  |     finally: | 
					
						
							|  |  |  |         pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | @fixture(scope="module") | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  | def user_token(admin_token, api_client: TestClient): | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |     # Create the user | 
					
						
							|  |  |  |     create_data = { | 
					
						
							|  |  |  |         "fullName": utils.random_string(), | 
					
						
							|  |  |  |         "username": utils.random_string(), | 
					
						
							|  |  |  |         "email": utils.random_email(), | 
					
						
							|  |  |  |         "password": "useruser", | 
					
						
							|  |  |  |         "group": "Home", | 
					
						
							|  |  |  |         "admin": False, | 
					
						
							|  |  |  |         "tokens": [], | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     response = api_client.post(api_routes.users, json=create_data, headers=admin_token) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert response.status_code == 201 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Log in as this user | 
					
						
							|  |  |  |     form_data = {"username": create_data["email"], "password": "useruser"} | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |     return utils.login(form_data, api_client) | 
					
						
							| 
									
										
										
										
											2023-02-26 13:12:16 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @fixture(scope="module") | 
					
						
							|  |  |  | def ldap_user(): | 
					
						
							|  |  |  |     # Create an LDAP user directly instead of using TestClient since we don't have | 
					
						
							|  |  |  |     # a LDAP service set up | 
					
						
							|  |  |  |     with session_context() as session: | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |         db = get_repositories(session, group_id=None, household_id=None) | 
					
						
							| 
									
										
										
										
											2023-02-26 13:12:16 -06:00
										 |  |  |         user = db.users.create( | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 "username": utils.random_string(10), | 
					
						
							|  |  |  |                 "password": "mealie_password_not_important", | 
					
						
							|  |  |  |                 "full_name": utils.random_string(10), | 
					
						
							|  |  |  |                 "email": utils.random_string(10), | 
					
						
							|  |  |  |                 "admin": False, | 
					
						
							|  |  |  |                 "auth_method": AuthMethod.LDAP, | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |     yield user | 
					
						
							|  |  |  |     with session_context() as session: | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  |         db = get_repositories(session, group_id=None, household_id=None) | 
					
						
							| 
									
										
										
										
											2023-02-26 13:12:16 -06:00
										 |  |  |         db.users.delete(user.id) |