mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-08-02 20:15:24 +02:00
feat: Add Households to Mealie (#3970)
This commit is contained in:
parent
0c29cef17d
commit
eb170cc7e5
315 changed files with 6975 additions and 3577 deletions
|
@ -0,0 +1,87 @@
|
|||
from uuid import uuid4
|
||||
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from tests.utils import api_routes
|
||||
from tests.utils.factories import random_bool
|
||||
from tests.utils.fixture_schemas import TestUser
|
||||
|
||||
|
||||
def get_permissions_payload(user_id: str, can_manage=None) -> dict:
|
||||
return {
|
||||
"user_id": user_id,
|
||||
"can_manage": random_bool() if can_manage is None else can_manage,
|
||||
"can_invite": random_bool(),
|
||||
"can_organize": random_bool(),
|
||||
}
|
||||
|
||||
|
||||
def test_set_member_permissions(api_client: TestClient, user_tuple: list[TestUser]):
|
||||
usr_1, usr_2 = user_tuple
|
||||
|
||||
# Set Acting User
|
||||
acting_user = usr_1.repos.users.get_one(usr_1.user_id)
|
||||
assert acting_user
|
||||
acting_user.can_manage = True
|
||||
usr_1.repos.users.update(acting_user.id, acting_user)
|
||||
|
||||
payload = get_permissions_payload(str(usr_2.user_id))
|
||||
|
||||
# Test
|
||||
response = api_client.put(api_routes.households_permissions, json=payload, headers=usr_1.token)
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_set_member_permissions_unauthorized(api_client: TestClient, unique_user: TestUser):
|
||||
database = unique_user.repos
|
||||
|
||||
# Setup
|
||||
user = database.users.get_one(unique_user.user_id)
|
||||
assert user
|
||||
user.can_manage = False
|
||||
database.users.update(user.id, user)
|
||||
|
||||
payload = get_permissions_payload(str(user.id))
|
||||
payload = {
|
||||
"user_id": str(user.id),
|
||||
"can_manage": True,
|
||||
"can_invite": True,
|
||||
"can_organize": True,
|
||||
}
|
||||
|
||||
# Test
|
||||
response = api_client.put(api_routes.households_permissions, json=payload, headers=unique_user.token)
|
||||
assert response.status_code == 403
|
||||
|
||||
|
||||
def test_set_member_permissions_other_household(
|
||||
api_client: TestClient,
|
||||
unique_user: TestUser,
|
||||
h2_user: TestUser,
|
||||
):
|
||||
database = unique_user.repos
|
||||
|
||||
user = database.users.get_one(unique_user.user_id)
|
||||
assert user
|
||||
user.can_manage = True
|
||||
database.users.update(user.id, user)
|
||||
|
||||
payload = get_permissions_payload(str(h2_user.user_id))
|
||||
response = api_client.put(api_routes.households_permissions, json=payload, headers=unique_user.token)
|
||||
assert response.status_code == 403
|
||||
|
||||
|
||||
def test_set_member_permissions_no_user(
|
||||
api_client: TestClient,
|
||||
unique_user: TestUser,
|
||||
):
|
||||
database = unique_user.repos
|
||||
|
||||
user = database.users.get_one(unique_user.user_id)
|
||||
assert user
|
||||
user.can_manage = True
|
||||
database.users.update(user.id, user)
|
||||
|
||||
payload = get_permissions_payload(str(uuid4()))
|
||||
response = api_client.put(api_routes.households_permissions, json=payload, headers=unique_user.token)
|
||||
assert response.status_code == 404
|
Loading…
Add table
Add a link
Reference in a new issue