chore: add fixture to setup user perms for api tests

ref: #776 #730 #735
This commit is contained in:
2025-05-29 08:55:04 +09:30
parent f53531fbbd
commit 79b8cdd26b

View File

@ -13,8 +13,12 @@ from django.test import (
from access.models.tenant import Tenant
from settings.models.app_settings import AppSettings
User = django.contrib.auth.get_user_model()
@pytest.fixture(scope="session", autouse = True)
def load_sqlite_fixture(django_db_setup, django_db_blocker):
"""
@ -566,6 +570,38 @@ def organization_two(django_db_blocker):
@pytest.fixture( scope = 'class')
def organization_three(django_db_blocker):
item = None
with django_db_blocker.unblock():
random_str = datetime.datetime.now(tz=datetime.timezone.utc)
item = Tenant.objects.create(
name = 'org three from global' + str(random_str)
)
yield item
with django_db_blocker.unblock():
item.delete()
@pytest.fixture( scope = 'class')
def permission():
from django.contrib.auth.models import (
Permission,
)
yield Permission
@pytest.fixture
def recursearray() -> dict[dict, str, any]:
"""Recursive dict lookup
@ -756,3 +792,179 @@ def user(django_db_blocker):
with django_db_blocker.unblock():
user.delete()
@pytest.fixture( scope = 'class')
def api_user_permissions( django_db_blocker,
content_type,
model,
organization_one,
organization_two,
organization_three,
permission,
):
with django_db_blocker.unblock():
random_str = datetime.datetime.now(tz=datetime.timezone.utc)
app_settings = AppSettings.objects.get(
owner_organization = None
)
app_settings.global_organization = organization_three
app_settings.save()
add_permissions = permission.objects.get(
codename = 'add_' + model._meta.model_name,
content_type = content_type.objects.get(
app_label = model._meta.app_label,
model = model._meta.model_name,
)
)
add_team = Team.objects.create(
team_name = 'add_team' + str(random_str),
organization = organization_one,
)
add_team.permissions.set([add_permissions])
add_user = User.objects.create_user(username="test_user_add" + str(random_str), password="password")
TeamUsers.objects.create(
team = add_team,
user = add_user
)
change_permissions = permission.objects.get(
codename = 'change_' + model._meta.model_name,
content_type = content_type.objects.get(
app_label = model._meta.app_label,
model = model._meta.model_name,
)
)
change_team = Team.objects.create(
team_name = 'change_team' + str(random_str),
organization = organization_one,
)
change_team.permissions.set([change_permissions])
change_user = User.objects.create_user(username="test_user_change" + str(random_str), password="password")
TeamUsers.objects.create(
team = change_team,
user = change_user
)
delete_permissions = permission.objects.get(
codename = 'delete_' + model._meta.model_name,
content_type = content_type.objects.get(
app_label = model._meta.app_label,
model = model._meta.model_name,
)
)
delete_team = Team.objects.create(
team_name = 'delete_team' + str(random_str),
organization = organization_one,
)
delete_team.permissions.set([delete_permissions])
delete_user = User.objects.create_user(username="test_user_delete" + str(random_str), password="password")
TeamUsers.objects.create(
team = delete_team,
user = delete_user
)
view_permissions = permission.objects.get(
codename = 'view_' + model._meta.model_name,
content_type = content_type.objects.get(
app_label = model._meta.app_label,
model = model._meta.model_name,
)
)
view_team = Team.objects.create(
team_name = 'view_team' + str(random_str),
organization = organization_one,
)
view_team.permissions.set([view_permissions])
view_user = User.objects.create_user(username="test_user_view" + str(random_str), password="password")
TeamUsers.objects.create(
team = view_team,
user = view_user
)
different_organization_user = User.objects.create_user(username="test_diff_org_user" + str(random_str), password="password")
different_organization_team = Team.objects.create(
team_name = 'diff_org_team' + str(random_str),
organization = organization_two,
)
different_organization_team.permissions.set([
view_permissions,
add_permissions,
change_permissions,
delete_permissions,
])
TeamUsers.objects.create(
team = different_organization_team,
user = different_organization_user
)
yield {
'app_settings': app_settings,
'tenancy': {
'different': organization_two,
'global': organization_three,
'user': organization_one
},
'user': {
'add': add_user,
'change': change_user,
'delete': delete_user,
'different_tenancy': different_organization_user,
'view': view_user,
}
}
add_team.delete()
add_user.delete()
change_team.delete()
change_user.delete()
delete_team.delete()
delete_user.delete()
view_team.delete()
view_user.delete()
different_organization_team.delete()
different_organization_user.delete()