add tests for recovery api

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
This commit is contained in:
Marc 'risson' Schmitt 2024-01-11 20:20:40 +01:00
parent 6e07029f1a
commit 02b51522a8
No known key found for this signature in database
GPG Key ID: 9C3FA22FABF1AA8D
1 changed files with 88 additions and 0 deletions

View File

@ -0,0 +1,88 @@
"""Test Tenant Recovery API"""
from json import loads
from django.urls import reverse
from django_tenants.utils import get_public_schema_name
from authentik.core.models import Token, TokenIntents, User
from authentik.lib.config import CONFIG
from authentik.lib.generators import generate_id
from authentik.tenants.models import Tenant
from authentik.tenants.tests.utils import TenantAPITestCase
TENANTS_API_KEY = generate_id()
HEADERS = {"Authorization": f"Bearer {TENANTS_API_KEY}"}
class TestAPI(TenantAPITestCase):
"""Test api view"""
def setUp(self):
super().setUp()
self.tenant = Tenant.objects.get(schema_name=get_public_schema_name())
self.user: User = User.objects.create_user(username="recovery-test-user")
@CONFIG.patch("outposts.disable_embedded_outpost", True)
@CONFIG.patch("tenants.enabled", True)
@CONFIG.patch("tenants.api_key", TENANTS_API_KEY)
def test_recovery_admin_group(self):
"""Test creation of admin group"""
response = self.client.post(
reverse(
"authentik_api:tenant-create-admin-group",
args=[self.tenant.tenant_uuid],
),
data={"user": self.user.username},
headers=HEADERS,
)
self.assertEqual(response.status_code, 200)
self.assertTrue(self.user.is_superuser)
@CONFIG.patch("outposts.disable_embedded_outpost", True)
@CONFIG.patch("tenants.enabled", True)
@CONFIG.patch("tenants.api_key", TENANTS_API_KEY)
def test_recovery_admin_group_invalid(self):
"""Test invalid creation of admin group"""
response = self.client.post(
reverse(
"authentik_api:tenant-create-admin-group",
args=[self.tenant.tenant_uuid],
),
data={"user": "invalid"},
headers=HEADERS,
)
self.assertEqual(response.status_code, 404)
@CONFIG.patch("outposts.disable_embedded_outpost", True)
@CONFIG.patch("tenants.enabled", True)
@CONFIG.patch("tenants.api_key", TENANTS_API_KEY)
def test_create_key(self):
"""Test creation of a new key"""
response = self.client.post(
reverse(
"authentik_api:tenant-create-recovery-key",
args=[self.tenant.tenant_uuid],
),
data={"user": self.user.username, "duration_days": 365},
headers=HEADERS,
)
self.assertEqual(response.status_code, 200)
body = loads(response.content.decode())
token = Token.objects.get(intent=TokenIntents.INTENT_RECOVERY, user=self.user)
self.assertIn(token.key, body["url"])
self.assertEqual(len(Token.objects.all()), 1)
@CONFIG.patch("outposts.disable_embedded_outpost", True)
@CONFIG.patch("tenants.enabled", True)
@CONFIG.patch("tenants.api_key", TENANTS_API_KEY)
def test_create_key_invalid(self):
"""Test creation of a new key (invalid)"""
response = self.client.post(
reverse(
"authentik_api:tenant-create-recovery-key",
args=[self.tenant.tenant_uuid],
),
data={"user": "invalid", "duration_days": 365},
headers=HEADERS,
)
self.assertEqual(response.status_code, 404)