fix tenants tests
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
This commit is contained in:
parent
7ce8af6192
commit
0a15cf7452
|
@ -5,6 +5,7 @@ from hmac import compare_digest
|
|||
from django.http import HttpResponseNotFound
|
||||
from django.http.request import urljoin
|
||||
from django.utils.timezone import now
|
||||
from django_tenants.utils import get_public_schema_name
|
||||
from drf_spectacular.utils import OpenApiResponse, extend_schema
|
||||
from rest_framework import permissions
|
||||
from rest_framework.authentication import get_authorization_header
|
||||
|
@ -217,3 +218,8 @@ class SettingsView(RetrieveUpdateAPIView):
|
|||
obj = self.request.tenant
|
||||
self.check_object_permissions(self.request, obj)
|
||||
return obj
|
||||
|
||||
def perform_update(self, serializer):
|
||||
# We need to be in the public schema to actually modify a tenant
|
||||
with Tenant.objects.get(schema_name=get_public_schema_name()):
|
||||
super().perform_update(serializer)
|
||||
|
|
|
@ -14,8 +14,8 @@ TENANTS_API_KEY = generate_id()
|
|||
HEADERS = {"Authorization": f"Bearer {TENANTS_API_KEY}"}
|
||||
|
||||
|
||||
class TestAPI(TenantAPITestCase):
|
||||
"""Test api view"""
|
||||
class TestRecovery(TenantAPITestCase):
|
||||
"""Test recovery endpoints"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
"""Test Settings API"""
|
||||
|
||||
from django.urls import reverse
|
||||
from django_tenants.utils import get_public_schema_name
|
||||
|
||||
from authentik.core.tests.utils import create_test_admin_user
|
||||
from authentik.lib.generators import generate_id
|
||||
|
@ -13,9 +12,13 @@ HEADERS = {"Authorization": f"Bearer {TENANTS_API_KEY}"}
|
|||
|
||||
|
||||
class TestSettingsAPI(TenantAPITestCase):
|
||||
"""Test settings API"""
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.tenant_1 = Tenant.objects.get(schema_name=get_public_schema_name())
|
||||
self.tenant_1 = Tenant.objects.create(
|
||||
name=generate_id(), schema_name="t_" + generate_id().lower()
|
||||
)
|
||||
Domain.objects.create(tenant=self.tenant_1, domain="tenant1.testserver")
|
||||
with self.tenant_1:
|
||||
self.admin_1 = create_test_admin_user()
|
||||
self.tenant_2 = Tenant.objects.create(
|
||||
|
@ -37,6 +40,7 @@ class TestSettingsAPI(TenantAPITestCase):
|
|||
data={
|
||||
"avatars": "tenant_1_mode",
|
||||
},
|
||||
HTTP_HOST="tenant1.testserver",
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
with self.tenant_1:
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
from django.core.management import call_command
|
||||
from django.db import connection, connections
|
||||
from django_tenants.utils import get_public_schema_name
|
||||
from rest_framework.test import APITransactionTestCase
|
||||
|
||||
|
||||
class TenantAPITestCase(APITransactionTestCase):
|
||||
# Overridden to also remove additional schemas we may have created
|
||||
def _fixture_teardown(self):
|
||||
super()._fixture_teardown()
|
||||
for db_name in self._databases_names(include_mirrors=False):
|
||||
connections[db_name].set_schema_to_public()
|
||||
with connections[db_name].cursor() as cursor:
|
||||
cursor.execute(
|
||||
"SELECT nspname FROM pg_catalog.pg_namespace WHERE nspname ~ 't_.*'"
|
||||
|
@ -16,6 +17,7 @@ class TenantAPITestCase(APITransactionTestCase):
|
|||
for row in schemas:
|
||||
schema = row[0]
|
||||
cursor.execute(f"DROP SCHEMA {schema} CASCADE")
|
||||
super()._fixture_teardown()
|
||||
|
||||
def setUp(self):
|
||||
call_command("migrate_schemas", schema="template", tenant=True)
|
||||
|
|
Reference in New Issue