Fix all integrations
This commit is contained in:
85
core/tests/test_settings_integrity.py
Normal file
85
core/tests/test_settings_integrity.py
Normal file
@@ -0,0 +1,85 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from django.test import RequestFactory, TestCase
|
||||
from django.urls import resolve, reverse
|
||||
|
||||
from core.context_processors import settings_hierarchy_nav
|
||||
from core.security.capabilities import all_scope_keys
|
||||
from core.models import CommandProfile, TaskProject, User
|
||||
|
||||
|
||||
class SettingsIntegrityTests(TestCase):
|
||||
def setUp(self):
|
||||
self.user = User.objects.create_user(
|
||||
username="settings-user",
|
||||
email="settings@example.com",
|
||||
password="x",
|
||||
)
|
||||
self.client.force_login(self.user)
|
||||
self.factory = RequestFactory()
|
||||
|
||||
def test_permissions_page_shows_gateway_capabilities(self):
|
||||
response = self.client.get(reverse("permission_settings"))
|
||||
self.assertEqual(200, response.status_code)
|
||||
self.assertContains(response, "Gateway contacts command")
|
||||
self.assertContains(response, "Gateway help command")
|
||||
self.assertContains(response, "Gateway whoami command")
|
||||
for scope_key in all_scope_keys(configurable_only=True):
|
||||
self.assertContains(response, scope_key)
|
||||
|
||||
def test_capability_registry_excludes_removed_totp_scope(self):
|
||||
self.assertNotIn("gateway.totp", all_scope_keys())
|
||||
|
||||
def test_codex_settings_receives_modules_settings_nav(self):
|
||||
response = self.client.get(reverse("codex_settings"))
|
||||
self.assertEqual(200, response.status_code)
|
||||
settings_nav = response.context.get("settings_nav")
|
||||
self.assertIsNotNone(settings_nav)
|
||||
self.assertEqual("Modules", settings_nav["title"])
|
||||
labels = [str(item["label"]) for item in settings_nav["tabs"]]
|
||||
self.assertIn("Commands", labels)
|
||||
self.assertIn("Task Automation", labels)
|
||||
|
||||
def test_business_plan_inbox_receives_modules_settings_nav(self):
|
||||
response = self.client.get(reverse("business_plan_inbox"))
|
||||
self.assertEqual(200, response.status_code)
|
||||
settings_nav = response.context.get("settings_nav")
|
||||
self.assertIsNotNone(settings_nav)
|
||||
self.assertEqual("Modules", settings_nav["title"])
|
||||
|
||||
def test_tasks_settings_cross_links_commands_and_permissions(self):
|
||||
TaskProject.objects.create(user=self.user, name="Integrity Project")
|
||||
response = self.client.get(reverse("tasks_settings"))
|
||||
self.assertEqual(200, response.status_code)
|
||||
self.assertContains(response, "Task Automation")
|
||||
self.assertContains(response, reverse("command_routing"))
|
||||
self.assertContains(response, reverse("permission_settings"))
|
||||
|
||||
def test_command_routing_cross_links_tasks_and_permissions(self):
|
||||
CommandProfile.objects.create(
|
||||
user=self.user,
|
||||
slug="bp",
|
||||
name="Business Plan",
|
||||
enabled=True,
|
||||
trigger_token=".bp",
|
||||
reply_required=False,
|
||||
exact_match_only=False,
|
||||
)
|
||||
response = self.client.get(reverse("command_routing"))
|
||||
self.assertEqual(200, response.status_code)
|
||||
self.assertContains(response, reverse("tasks_settings"))
|
||||
self.assertContains(response, reverse("permission_settings"))
|
||||
|
||||
def test_settings_nav_includes_codex_approval_route(self):
|
||||
request = self.factory.post(reverse("codex_approval"))
|
||||
request.user = self.user
|
||||
request.resolver_match = resolve(reverse("codex_approval"))
|
||||
settings_nav = settings_hierarchy_nav(request)["settings_nav"]
|
||||
self.assertEqual("Modules", settings_nav["title"])
|
||||
|
||||
def test_settings_nav_includes_translation_preview_route(self):
|
||||
request = self.factory.post(reverse("translation_preview"))
|
||||
request.user = self.user
|
||||
request.resolver_match = resolve(reverse("translation_preview"))
|
||||
settings_nav = settings_hierarchy_nav(request)["settings_nav"]
|
||||
self.assertEqual("Modules", settings_nav["title"])
|
||||
Reference in New Issue
Block a user