mirror of
https://github.com/bunny-lab-io/Borealis.git
synced 2025-10-26 17:41:58 -06:00
75 lines
2.6 KiB
Python
75 lines
2.6 KiB
Python
import unittest
|
|
|
|
from Data.Engine.builders.device_auth import (
|
|
DeviceAuthRequestBuilder,
|
|
RefreshTokenRequestBuilder,
|
|
)
|
|
from Data.Engine.domain.device_auth import DeviceAuthErrorCode, DeviceAuthFailure
|
|
|
|
|
|
class DeviceAuthRequestBuilderTests(unittest.TestCase):
|
|
def test_build_successful_request(self) -> None:
|
|
request = (
|
|
DeviceAuthRequestBuilder()
|
|
.with_authorization("Bearer abc123")
|
|
.with_http_method("post")
|
|
.with_htu("https://example.test/api")
|
|
.with_service_context("currentUser")
|
|
.with_dpop_proof("proof")
|
|
.build()
|
|
)
|
|
|
|
self.assertEqual(request.access_token, "abc123")
|
|
self.assertEqual(request.http_method, "POST")
|
|
self.assertEqual(request.htu, "https://example.test/api")
|
|
self.assertEqual(request.service_context, "CURRENTUSER")
|
|
self.assertEqual(request.dpop_proof, "proof")
|
|
|
|
def test_missing_authorization_raises_failure(self) -> None:
|
|
builder = (
|
|
DeviceAuthRequestBuilder()
|
|
.with_http_method("GET")
|
|
.with_htu("/health")
|
|
)
|
|
|
|
with self.assertRaises(DeviceAuthFailure) as ctx:
|
|
builder.build()
|
|
|
|
self.assertEqual(ctx.exception.code, DeviceAuthErrorCode.MISSING_AUTHORIZATION)
|
|
|
|
|
|
class RefreshTokenRequestBuilderTests(unittest.TestCase):
|
|
def test_refresh_request_requires_all_fields(self) -> None:
|
|
request = (
|
|
RefreshTokenRequestBuilder()
|
|
.with_payload({"guid": "de305d54-75b4-431b-adb2-eb6b9e546014", "refresh_token": "tok"})
|
|
.with_http_method("post")
|
|
.with_htu("https://example.test/api")
|
|
.with_dpop_proof("proof")
|
|
.build()
|
|
)
|
|
|
|
self.assertEqual(request.guid.value, "DE305D54-75B4-431B-ADB2-EB6B9E546014")
|
|
self.assertEqual(request.refresh_token, "tok")
|
|
self.assertEqual(request.http_method, "POST")
|
|
self.assertEqual(request.htu, "https://example.test/api")
|
|
self.assertEqual(request.dpop_proof, "proof")
|
|
|
|
def test_refresh_request_missing_guid_raises_failure(self) -> None:
|
|
builder = (
|
|
RefreshTokenRequestBuilder()
|
|
.with_payload({"refresh_token": "tok"})
|
|
.with_http_method("POST")
|
|
.with_htu("https://example.test/api")
|
|
)
|
|
|
|
with self.assertRaises(DeviceAuthFailure) as ctx:
|
|
builder.build()
|
|
|
|
self.assertEqual(ctx.exception.code, DeviceAuthErrorCode.INVALID_CLAIMS)
|
|
self.assertIn("missing guid", ctx.exception.detail)
|
|
|
|
|
|
if __name__ == "__main__": # pragma: no cover - convenience for local runs
|
|
unittest.main()
|