Release v0.1.3

This commit is contained in:
2026-06-26 01:39:19 +02:00
parent 02564047e9
commit df701fddd2
29 changed files with 600 additions and 154 deletions

View File

@@ -549,6 +549,46 @@ class ApiSmokeTests(unittest.TestCase):
)
self.assertEqual(invalid_share.status_code, 400, invalid_share.text)
campaign = self.client.post(
"/api/v1/campaigns/new",
headers=headers,
json={"external_id": "bulk-file-share", "name": "Bulk file share"},
)
self.assertEqual(campaign.status_code, 200, campaign.text)
campaign_id = campaign.json()["campaign"]["id"]
bulk_share = self.client.post(
"/api/v1/files/bulk-shares",
headers=headers,
json={
"file_ids": [first_file["id"], second_file["id"], first_file["id"]],
"target_type": "campaign",
"target_id": campaign_id,
"permission": "read",
},
)
self.assertEqual(bulk_share.status_code, 200, bulk_share.text)
self.assertEqual(bulk_share.json()["shared_count"], 2)
self.assertEqual(len(bulk_share.json()["shares"]), 2)
repeated_bulk_share = self.client.post(
"/api/v1/files/bulk-shares",
headers=headers,
json={
"file_ids": [first_file["id"], second_file["id"]],
"target_type": "campaign",
"target_id": campaign_id,
"permission": "read",
},
)
self.assertEqual(repeated_bulk_share.status_code, 200, repeated_bulk_share.text)
self.assertEqual(repeated_bulk_share.json()["shared_count"], 2)
campaign_files = self.client.get("/api/v1/files", headers=headers, params={"campaign_id": campaign_id})
self.assertEqual(campaign_files.status_code, 200, campaign_files.text)
self.assertEqual({item["id"] for item in campaign_files.json()["files"]}, {first_file["id"], second_file["id"]})
download = self.client.get(f"/api/v1/files/{first_file['id']}/download", headers=headers)
self.assertEqual(download.status_code, 200, download.text)
self.assertIn("filename*=UTF-8''report.txt", download.headers.get("content-disposition", ""))
@@ -2187,6 +2227,19 @@ class ApiSmokeTests(unittest.TestCase):
tenant_owner_headers = {"Authorization": f"Bearer {tenant_owner_login.json()['access_token']}"}
self.assertEqual(self.client.get("/api/v1/admin/users", headers=tenant_owner_headers).status_code, 200)
self.assertEqual(self.client.get("/api/v1/admin/tenants", headers=tenant_owner_headers).status_code, 403)
tenant_settings = self.client.get("/api/v1/admin/tenant/settings", headers=tenant_owner_headers)
self.assertEqual(tenant_settings.status_code, 200, tenant_settings.text)
self.assertEqual(tenant_settings.json()["default_locale"], "de")
updated_tenant_settings = self.client.patch(
"/api/v1/admin/tenant/settings",
headers=tenant_owner_headers,
json={"default_locale": "de-AT"},
)
self.assertEqual(updated_tenant_settings.status_code, 200, updated_tenant_settings.text)
self.assertEqual(updated_tenant_settings.json()["default_locale"], "de-AT")
refreshed_tenant_owner = self.client.get("/api/v1/auth/me", headers=tenant_owner_headers)
self.assertEqual(refreshed_tenant_owner.status_code, 200, refreshed_tenant_owner.text)
self.assertEqual(refreshed_tenant_owner.json()["active_tenant"]["default_locale"], "de-AT")
# Global account suspension immediately invalidates all of its tenant
# sessions. Reactivation restores access without changing memberships.
@@ -2242,6 +2295,7 @@ class ApiSmokeTests(unittest.TestCase):
self.assertIn("user.created", actions)
self.assertIn("group.created", actions)
self.assertIn("role.created", actions)
self.assertIn("tenant.settings.updated", actions)