test_automation_token.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. from __future__ import annotations
  2. import unittest
  3. from unittest.mock import patch
  4. from fastapi import HTTPException
  5. from app.main import verify_automation_token
  6. class AutomationTokenTest(unittest.TestCase):
  7. def test_token_is_optional_when_not_configured(self) -> None:
  8. with patch("app.main.settings_service.automation_remote_token", return_value=""):
  9. verify_automation_token()
  10. def test_accepts_supported_token_locations(self) -> None:
  11. with patch("app.main.settings_service.automation_remote_token", return_value="secret"):
  12. verify_automation_token(x_automation_token="secret")
  13. verify_automation_token(authorization="Bearer secret")
  14. verify_automation_token(automation_token="secret")
  15. def test_rejects_missing_or_invalid_token_when_configured(self) -> None:
  16. with patch("app.main.settings_service.automation_remote_token", return_value="secret"):
  17. with self.assertRaises(HTTPException) as missing:
  18. verify_automation_token()
  19. self.assertEqual(missing.exception.status_code, 401)
  20. with self.assertRaises(HTTPException) as invalid:
  21. verify_automation_token(x_automation_token="wrong")
  22. self.assertEqual(invalid.exception.status_code, 401)
  23. if __name__ == "__main__":
  24. unittest.main()