import unittest

from aria_router.core import (
    Backend, JobRequest, PrivacyTier, Mode, route
)


class SecurityTests(unittest.TestCase):

    def test_unknown_backend_rejected(self):
        job = JobRequest("s1", "analysis", PrivacyTier.PUBLIC)

        unknown = Backend(
            "unknown-provider",
            frozenset({"text"}),
            frozenset({"analysis"}),
            quality_score=100
        )

        result = route(job, [unknown])

        self.assertFalse(result.allowed)
        self.assertIsNone(result.backend)

    def test_unknown_cannot_override_codex(self):
        job = JobRequest("s2", "analysis", PrivacyTier.PUBLIC)

        backends = [
            Backend(
                "unknown-provider",
                frozenset({"text"}),
                frozenset({"analysis"}),
                quality_score=100
            ),
            Backend(
                "codex",
                frozenset({"text"}),
                frozenset({"analysis"}),
                quality_score=80
            )
        ]

        result = route(job, backends)

        self.assertTrue(result.allowed)
        self.assertEqual(result.backend, "codex")

    def test_privacy_blocks_manual_codex(self):
        job = JobRequest(
            "s3", "analysis",
            PrivacyTier.CONFIDENTIAL,
            mode=Mode.CODEX
        )

        codex = Backend(
            "codex",
            frozenset({"text"}),
            frozenset({"analysis"})
        )

        self.assertFalse(route(job, [codex]).allowed)


if __name__ == "__main__":
    unittest.main()
