| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from mealie.core.config import get_app_settings | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @fixture(scope="session") | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  | def admin_token(api_client: TestClient): | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |     settings = get_app_settings() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-15 09:24:24 -06:00
										 |  |  |     form_data = {"username": settings._DEFAULT_EMAIL, "password": settings._DEFAULT_PASSWORD} | 
					
						
							| 
									
										
										
										
											2022-10-18 14:49:41 -08:00
										 |  |  |     return utils.login(form_data, api_client) | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-22 10:14:32 -05:00
										 |  |  | @fixture(scope="module") | 
					
						
							|  |  |  | def admin_user(session: Session, api_client: TestClient): | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |     settings = get_app_settings() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-15 09:24:24 -06:00
										 |  |  |     form_data = {"username": settings._DEFAULT_EMAIL, "password": settings._DEFAULT_PASSWORD} | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert user_data.get("admin") is True | 
					
						
							| 
									
										
										
										
											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, | 
					
						
							| 
									
										
										
										
											2023-11-15 09:24:24 -06:00
										 |  |  |             password=settings._DEFAULT_PASSWORD, | 
					
						
							| 
									
										
										
										
											2022-03-15 23:28:42 +01:00
										 |  |  |             username=user_data.get("username"), | 
					
						
							| 
									
										
										
										
											2025-01-14 09:00:23 -07:00
										 |  |  |             full_name=user_data.get("fullName"), | 
					
						
							| 
									
										
										
										
											2021-11-25 14:17:02 -09:00
										 |  |  |             email=user_data.get("email"), | 
					
						
							|  |  |  |             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 |