from __future__ import annotations import unittest from unittest.mock import patch from fastapi import HTTPException from app.main import verify_automation_token class AutomationTokenTest(unittest.TestCase): def test_token_is_optional_when_not_configured(self) -> None: with patch("app.main.settings_service.automation_remote_token", return_value=""): verify_automation_token() def test_accepts_supported_token_locations(self) -> None: with patch("app.main.settings_service.automation_remote_token", return_value="secret"): verify_automation_token(x_automation_token="secret") verify_automation_token(authorization="Bearer secret") verify_automation_token(automation_token="secret") def test_rejects_missing_or_invalid_token_when_configured(self) -> None: with patch("app.main.settings_service.automation_remote_token", return_value="secret"): with self.assertRaises(HTTPException) as missing: verify_automation_token() self.assertEqual(missing.exception.status_code, 401) with self.assertRaises(HTTPException) as invalid: verify_automation_token(x_automation_token="wrong") self.assertEqual(invalid.exception.status_code, 401) if __name__ == "__main__": unittest.main()