Commit c7a47dbf authored by George Papathanail's avatar George Papathanail
Browse files

fix(traffic-influence): adapt to tenant-scoped SRM client and Keycloak caller context

parent c4b28c1f
Loading
Loading
Loading
Loading
Loading
+3 −1
Changes for src/open_exposure_gateway/application/services/traffic_influence_service.py: 3 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -134,6 +134,7 @@ class TrafficInfluenceService:
    async def _resolve_zone_id(
        self,
        request: PostTrafficInfluence,
        app_provider_id: str,
        x_correlator: Optional[str],
    ) -> str | None:
        if request.edgeCloudZoneId is not None:
@@ -151,6 +152,7 @@ class TrafficInfluenceService:
            return zones[0].id
        if request.appInstanceId is not None:
            instances = await self.srm_client.get_app_instances(
                app_provider_id=app_provider_id,
                app_id=None,
                app_instance_id=request.appInstanceId,
                region=None,
@@ -222,7 +224,7 @@ class TrafficInfluenceService:
        # edgeCloudRegion has no SRM field of its own (srm/canonical-parameters-schema.md
        # has no "region" concept); it's resolved locally to a zone before the command
        # is built, same zones lookup EAM already uses.
        zone_id = await self._resolve_zone_id(request, x_correlator)
        zone_id = await self._resolve_zone_id(request, app_provider_id, x_correlator)

        command = build_activate_command(
            request=request,
+13 −5
Changes for tests/unit/test_traffic_influence_flows.py: 13 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ def registered_app(app_registration_repo: FakeAppRegistrationRepository) -> None
    app_registration_repo.rows[TI_APP_REGISTRATION_ID] = AppRegistration(
        app_registration_id=TI_APP_REGISTRATION_ID,
        app_id=UUID(TI_BODY["appId"]),
        tenant_id="placeholder",
        tenant_id="test_tenant",
        name="traffic-influence-app",
        version="1.0.0",
        package_type=PackageType.HELM,
@@ -192,7 +192,7 @@ class TestTrafficInfluenceCreateFlow:
            service_instance_id=app_instance_id,
            service_specification_id=TI_BODY["appId"],
            state="active",
            app_provider_id="provider-1",
            app_provider_id="test_app_provider",
            zone_id=instance_zone_id,
        )
        body = {
@@ -856,7 +856,15 @@ class TestTrafficInfluenceTenantScope:
            f"{TI_BASE}/traffic-influences", json=TI_BODY
        ).json()["trafficInfluenceID"]
        app.dependency_overrides[get_caller_context] = lambda: CallerContext(
            x_correlator=None, tenant_id="other-tenant", app_provider_id="other-provider"
            x_correlator=None,
            tenant_id="other-tenant",
            app_provider_id="other-provider",
            roles=["app-provider"],
            scopes=[
                "traffic-influence:traffic-influences:read",
                "traffic-influence:traffic-influences:write",
                "traffic-influence:traffic-influences:delete",
            ],
        )
        return traffic_influence_id

@@ -1289,8 +1297,8 @@ class TestTrafficInfluenceIdempotency:
        operation_repo.rows[clashing_operation_id] = Operation(
            operation_id=clashing_operation_id,
            correlation_id="corr-existing",
            tenant_id="placeholder",
            app_provider_id="placeholder",
            tenant_id="test_tenant",
            app_provider_id="test_app_provider",
            operation_type=OperationType.DEPLOY,
            status=OperationStatus.COMPLETED,
            subject="command.srm.service.deploy",