Loading src/open_exposure_gateway/api/camara/traffic_influence/v0_10_0/schemas.py +0 −3 Changes for src/open_exposure_gateway/api/camara/traffic_influence/v0_10_0/schemas.py: 0 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -40,9 +40,6 @@ class Config(BaseModel): class SubscriptionRequest(BaseModel): protocol: SubscriptionProtocol sink: str = Field(pattern=r"^https:\/\/.+$") # sinkCredential is a discriminated union (PLAIN/ACCESSTOKEN/REFRESHTOKEN) in the # CAMARA spec; kept generic here since OEG only persists a sink_credential_ref # (never the raw credential) and doesn't branch on credential type. sinkCredential: Optional[dict[str, Any]] = None types: list[SubscriptionEventType] = Field(min_length=1, max_length=1) config: Config Loading src/open_exposure_gateway/application/services/traffic_influence_service.py +0 −5 Changes for src/open_exposure_gateway/application/services/traffic_influence_service.py: 0 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -292,11 +292,6 @@ class TrafficInfluenceService: api_family=_API_FAMILY, sink=request.subscriptionRequest.sink, event_types=list(request.subscriptionRequest.types), sink_credential_ref=( f"secret://oeg/{operation_id}/notification-auth-token" if request.subscriptionRequest.sinkCredential else None ), expires_at=request.subscriptionRequest.config.subscriptionExpireTime, ) ) Loading tests/unit/test_traffic_influence_flows.py +5 −28 Changes for tests/unit/test_traffic_influence_flows.py: 5 added lines, 28 removed lines. Original line number Diff line number Diff line Loading @@ -145,43 +145,20 @@ class TestTrafficInfluenceCreateFlow: response = api_client.post(f"{TI_BASE}/traffic-influences", json=body) assert response.status_code == 201 def test_create_persists_sink_credential_ref_when_supplied( def test_create_persists_callback_registration( self, api_client: TestClient, operation_repo: FakeOperationRepository, callback_registration_repo: FakeCallbackRegistrationRepository, ) -> None: body = { **TI_BODY, "subscriptionRequest": { **SUBSCRIPTION_REQUEST, "sinkCredential": {"credentialType": "ACCESSTOKEN"}, }, } body = {**TI_BODY, "subscriptionRequest": SUBSCRIPTION_REQUEST} response = api_client.post(f"{TI_BASE}/traffic-influences", json=body) operation_id = list(operation_repo.rows)[0] registration = next( row for row in callback_registration_repo.rows.values() if row.operation_id == operation_id ) assert ( registration.sink_credential_ref == f"secret://oeg/{operation_id}/notification-auth-token" ) assert response.status_code == 201 def test_create_without_sink_credential_leaves_ref_unset( self, api_client: TestClient, callback_registration_repo: FakeCallbackRegistrationRepository, ) -> None: body = {**TI_BODY, "subscriptionRequest": SUBSCRIPTION_REQUEST} api_client.post(f"{TI_BASE}/traffic-influences", json=body) registration = next(iter(callback_registration_repo.rows.values())) assert registration.sink_credential_ref is None assert registration.operation_id == operation_id assert registration.sink == SUBSCRIPTION_REQUEST["sink"] assert response.status_code == 201 def test_create_resolves_zone_from_app_instance_id( self, api_client: TestClient, fake_bus: FakeDataBus, fake_srm: FakeSRMClient Loading Loading
src/open_exposure_gateway/api/camara/traffic_influence/v0_10_0/schemas.py +0 −3 Changes for src/open_exposure_gateway/api/camara/traffic_influence/v0_10_0/schemas.py: 0 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -40,9 +40,6 @@ class Config(BaseModel): class SubscriptionRequest(BaseModel): protocol: SubscriptionProtocol sink: str = Field(pattern=r"^https:\/\/.+$") # sinkCredential is a discriminated union (PLAIN/ACCESSTOKEN/REFRESHTOKEN) in the # CAMARA spec; kept generic here since OEG only persists a sink_credential_ref # (never the raw credential) and doesn't branch on credential type. sinkCredential: Optional[dict[str, Any]] = None types: list[SubscriptionEventType] = Field(min_length=1, max_length=1) config: Config Loading
src/open_exposure_gateway/application/services/traffic_influence_service.py +0 −5 Changes for src/open_exposure_gateway/application/services/traffic_influence_service.py: 0 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -292,11 +292,6 @@ class TrafficInfluenceService: api_family=_API_FAMILY, sink=request.subscriptionRequest.sink, event_types=list(request.subscriptionRequest.types), sink_credential_ref=( f"secret://oeg/{operation_id}/notification-auth-token" if request.subscriptionRequest.sinkCredential else None ), expires_at=request.subscriptionRequest.config.subscriptionExpireTime, ) ) Loading
tests/unit/test_traffic_influence_flows.py +5 −28 Changes for tests/unit/test_traffic_influence_flows.py: 5 added lines, 28 removed lines. Original line number Diff line number Diff line Loading @@ -145,43 +145,20 @@ class TestTrafficInfluenceCreateFlow: response = api_client.post(f"{TI_BASE}/traffic-influences", json=body) assert response.status_code == 201 def test_create_persists_sink_credential_ref_when_supplied( def test_create_persists_callback_registration( self, api_client: TestClient, operation_repo: FakeOperationRepository, callback_registration_repo: FakeCallbackRegistrationRepository, ) -> None: body = { **TI_BODY, "subscriptionRequest": { **SUBSCRIPTION_REQUEST, "sinkCredential": {"credentialType": "ACCESSTOKEN"}, }, } body = {**TI_BODY, "subscriptionRequest": SUBSCRIPTION_REQUEST} response = api_client.post(f"{TI_BASE}/traffic-influences", json=body) operation_id = list(operation_repo.rows)[0] registration = next( row for row in callback_registration_repo.rows.values() if row.operation_id == operation_id ) assert ( registration.sink_credential_ref == f"secret://oeg/{operation_id}/notification-auth-token" ) assert response.status_code == 201 def test_create_without_sink_credential_leaves_ref_unset( self, api_client: TestClient, callback_registration_repo: FakeCallbackRegistrationRepository, ) -> None: body = {**TI_BODY, "subscriptionRequest": SUBSCRIPTION_REQUEST} api_client.post(f"{TI_BASE}/traffic-influences", json=body) registration = next(iter(callback_registration_repo.rows.values())) assert registration.sink_credential_ref is None assert registration.operation_id == operation_id assert registration.sink == SUBSCRIPTION_REQUEST["sink"] assert response.status_code == 201 def test_create_resolves_zone_from_app_instance_id( self, api_client: TestClient, fake_bus: FakeDataBus, fake_srm: FakeSRMClient Loading