This is an automated email from the ASF dual-hosted git repository. yasith pushed a commit to branch feat/airavata-service-layer in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 7f2e4748d1a0fde9c45e2664a877e95b8d4782f6 Author: yasithdev <[email protected]> AuthorDate: Thu Mar 26 05:27:33 2026 -0500 feat: add RequestContext for transport-agnostic identity --- .../airavata/service/context/RequestContext.java | 24 ++++++++++++++++++++++ .../service/context/RequestContextTest.java | 24 ++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/airavata-api/src/main/java/org/apache/airavata/service/context/RequestContext.java b/airavata-api/src/main/java/org/apache/airavata/service/context/RequestContext.java new file mode 100644 index 0000000000..e20f2e534c --- /dev/null +++ b/airavata-api/src/main/java/org/apache/airavata/service/context/RequestContext.java @@ -0,0 +1,24 @@ +package org.apache.airavata.service.context; + +import java.util.Collections; +import java.util.Map; + +public class RequestContext { + + private final String userId; + private final String gatewayId; + private final String accessToken; + private final Map<String, String> claims; + + public RequestContext(String userId, String gatewayId, String accessToken, Map<String, String> claims) { + this.userId = userId; + this.gatewayId = gatewayId; + this.accessToken = accessToken; + this.claims = Collections.unmodifiableMap(claims); + } + + public String getUserId() { return userId; } + public String getGatewayId() { return gatewayId; } + public String getAccessToken() { return accessToken; } + public Map<String, String> getClaims() { return claims; } +} diff --git a/airavata-api/src/test/java/org/apache/airavata/service/context/RequestContextTest.java b/airavata-api/src/test/java/org/apache/airavata/service/context/RequestContextTest.java new file mode 100644 index 0000000000..ef14096c53 --- /dev/null +++ b/airavata-api/src/test/java/org/apache/airavata/service/context/RequestContextTest.java @@ -0,0 +1,24 @@ +package org.apache.airavata.service.context; + +import org.junit.jupiter.api.Test; +import java.util.Map; +import static org.junit.jupiter.api.Assertions.*; + +class RequestContextTest { + + @Test + void constructorSetsFields() { + RequestContext ctx = new RequestContext("testUser", "testGateway", "token123", + Map.of("role", "admin")); + assertEquals("testUser", ctx.getUserId()); + assertEquals("testGateway", ctx.getGatewayId()); + assertEquals("token123", ctx.getAccessToken()); + assertEquals("admin", ctx.getClaims().get("role")); + } + + @Test + void claimsMapIsUnmodifiable() { + RequestContext ctx = new RequestContext("u", "g", "t", Map.of("k", "v")); + assertThrows(UnsupportedOperationException.class, () -> ctx.getClaims().put("new", "val")); + } +}
