Skip to content

Commit 0bf14d4

Browse files
committed
Consolidate auth utilities into OAuthUtils
Signed-off-by: Matheus Cruz <matheuscruz.dev@gmail.com>
1 parent 1bcd170 commit 0bf14d4

6 files changed

Lines changed: 68 additions & 71 deletions

File tree

impl/core/src/main/java/io/serverlessworkflow/impl/auth/DefaultAuthProviderFactory.java

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
import io.serverlessworkflow.api.types.AuthenticationPolicyUnion;
1919
import io.serverlessworkflow.api.types.EndpointConfiguration;
2020
import io.serverlessworkflow.api.types.ReferenceableAuthenticationPolicy;
21-
import io.serverlessworkflow.api.types.Use;
22-
import io.serverlessworkflow.api.types.UseAuthentications;
2321
import io.serverlessworkflow.api.types.Workflow;
2422
import io.serverlessworkflow.impl.WorkflowApplication;
2523
import io.serverlessworkflow.impl.WorkflowDefinition;
@@ -46,33 +44,12 @@ public Optional<AuthProvider> getAuth(
4644
@Override
4745
public Optional<AuthProvider> getAuth(
4846
WorkflowDefinition definition, ReferenceableAuthenticationPolicy auth, String method) {
49-
AuthenticationPolicyUnion policy = resolvePolicy(definition.workflow(), auth);
47+
AuthenticationPolicyUnion policy = OAuthUtils.resolvePolicy(definition.workflow(), auth);
5048
return policy == null
5149
? Optional.empty()
5250
: buildFromPolicy(definition.application(), definition.workflow(), policy, method);
5351
}
5452

55-
public static AuthenticationPolicyUnion resolvePolicy(
56-
Workflow workflow, ReferenceableAuthenticationPolicy auth) {
57-
if (workflow == null) {
58-
throw new IllegalArgumentException(
59-
"workflow must not be null when resolving an authentication policy reference");
60-
}
61-
if (auth == null) {
62-
return null;
63-
}
64-
if (auth.getAuthenticationPolicyReference() != null) {
65-
String use = auth.getAuthenticationPolicyReference().getUse();
66-
Use useInfo = workflow.getUse();
67-
if (useInfo == null) {
68-
return null;
69-
}
70-
UseAuthentications authInfo = useInfo.getAuthentications();
71-
return authInfo == null ? null : authInfo.getAdditionalProperties().get(use);
72-
}
73-
return auth.getAuthenticationPolicy();
74-
}
75-
7653
private Optional<AuthProvider> buildFromPolicy(
7754
WorkflowApplication app,
7855
Workflow workflow,
@@ -91,10 +68,10 @@ private Optional<AuthProvider> buildFromPolicy(
9168
new DigestAuthProvider(
9269
app, workflow, authenticationPolicy.getDigestAuthenticationPolicy(), method));
9370
}
94-
return OAuthPolicyData.from(authenticationPolicy)
71+
return OAuthUtils.from(authenticationPolicy)
9572
.map(
9673
policyData ->
97-
policyData.scheme() == OAuthPolicyData.OAuthScheme.OPENID_CONNECT
74+
policyData.scheme() == OAuthUtils.OAuthScheme.OPENID_CONNECT
9875
? new OpenIdAuthProvider(app, workflow, policyData)
9976
: new OAuth2AuthProvider(app, workflow, policyData));
10077
}

impl/core/src/main/java/io/serverlessworkflow/impl/auth/OAuth2AuthProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
class OAuth2AuthProvider extends CommonOAuthProvider {
2222

2323
public OAuth2AuthProvider(
24-
WorkflowApplication application, Workflow workflow, OAuthPolicyData policyData) {
24+
WorkflowApplication application, Workflow workflow, OAuthUtils.OAuthPolicyData policyData) {
2525
super(
2626
accessToken(
2727
workflow,

impl/core/src/main/java/io/serverlessworkflow/impl/auth/OAuthPolicyData.java renamed to impl/core/src/main/java/io/serverlessworkflow/impl/auth/OAuthUtils.java

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,39 +21,68 @@
2121
import io.serverlessworkflow.api.types.OAuth2AuthenticationPolicyConfiguration;
2222
import io.serverlessworkflow.api.types.OpenIdConnectAuthenticationPolicy;
2323
import io.serverlessworkflow.api.types.OpenIdConnectAuthenticationPolicyConfiguration;
24+
import io.serverlessworkflow.api.types.ReferenceableAuthenticationPolicy;
2425
import io.serverlessworkflow.api.types.SecretBasedAuthenticationPolicy;
26+
import io.serverlessworkflow.api.types.Use;
27+
import io.serverlessworkflow.api.types.UseAuthentications;
28+
import io.serverlessworkflow.api.types.Workflow;
2529
import java.util.Optional;
2630

27-
public record OAuthPolicyData(
28-
OAuth2AuthenticationData data, SecretBasedAuthenticationPolicy secret, OAuthScheme scheme) {
31+
public class OAuthUtils {
32+
33+
private OAuthUtils() {}
2934

3035
public enum OAuthScheme {
3136
OAUTH2,
3237
OPENID_CONNECT
3338
}
3439

40+
public record OAuthPolicyData(
41+
OAuth2AuthenticationData data, SecretBasedAuthenticationPolicy secret, OAuthScheme scheme) {}
42+
3543
public static Optional<OAuthPolicyData> from(AuthenticationPolicyUnion policy) {
3644
if (policy == null) {
3745
return Optional.empty();
3846
}
3947
OAuth2AuthenticationPolicy oauth2 = policy.getOAuth2AuthenticationPolicy();
40-
if (oauth2 != null && oauth2.getOauth2() != null) {
48+
if (oauth2 != null) {
4149
OAuth2AuthenticationPolicyConfiguration config = oauth2.getOauth2();
42-
return Optional.of(
43-
new OAuthPolicyData(
44-
config.getOAuth2ConnectAuthenticationProperties(),
45-
config.getOAuth2AuthenticationPolicySecret(),
46-
OAuthScheme.OAUTH2));
50+
if (config != null) {
51+
return Optional.of(
52+
new OAuthPolicyData(
53+
config.getOAuth2ConnectAuthenticationProperties(),
54+
config.getOAuth2AuthenticationPolicySecret(),
55+
OAuthScheme.OAUTH2));
56+
}
4757
}
4858
OpenIdConnectAuthenticationPolicy oidc = policy.getOpenIdConnectAuthenticationPolicy();
49-
if (oidc != null && oidc.getOidc() != null) {
59+
if (oidc != null) {
5060
OpenIdConnectAuthenticationPolicyConfiguration config = oidc.getOidc();
51-
return Optional.of(
52-
new OAuthPolicyData(
53-
config.getOpenIdConnectAuthenticationProperties(),
54-
config.getOpenIdConnectAuthenticationPolicySecret(),
55-
OAuthScheme.OPENID_CONNECT));
61+
if (config != null) {
62+
return Optional.of(
63+
new OAuthPolicyData(
64+
config.getOpenIdConnectAuthenticationProperties(),
65+
config.getOpenIdConnectAuthenticationPolicySecret(),
66+
OAuthScheme.OPENID_CONNECT));
67+
}
5668
}
5769
return Optional.empty();
5870
}
71+
72+
public static AuthenticationPolicyUnion resolvePolicy(
73+
Workflow workflow, ReferenceableAuthenticationPolicy auth) {
74+
if (auth == null) {
75+
return null;
76+
}
77+
if (auth.getAuthenticationPolicyReference() != null) {
78+
String use = auth.getAuthenticationPolicyReference().getUse();
79+
Use useInfo = workflow.getUse();
80+
if (useInfo == null) {
81+
return null;
82+
}
83+
UseAuthentications authInfo = useInfo.getAuthentications();
84+
return authInfo == null ? null : authInfo.getAdditionalProperties().get(use);
85+
}
86+
return auth.getAuthenticationPolicy();
87+
}
5988
}

impl/core/src/main/java/io/serverlessworkflow/impl/auth/OpenIdAuthProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
class OpenIdAuthProvider extends CommonOAuthProvider {
2222

2323
public OpenIdAuthProvider(
24-
WorkflowApplication application, Workflow workflow, OAuthPolicyData policyData) {
24+
WorkflowApplication application, Workflow workflow, OAuthUtils.OAuthPolicyData policyData) {
2525
super(
2626
accessToken(
2727
workflow,

impl/test/src/test/java/io/serverlessworkflow/impl/test/OAuthPolicyDataTest.java renamed to impl/test/src/test/java/io/serverlessworkflow/impl/test/OAuthUtilsTest.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,24 @@
2828
import io.serverlessworkflow.api.types.OpenIdConnectAuthenticationPolicy;
2929
import io.serverlessworkflow.api.types.OpenIdConnectAuthenticationPolicyConfiguration;
3030
import io.serverlessworkflow.api.types.SecretBasedAuthenticationPolicy;
31-
import io.serverlessworkflow.impl.auth.OAuthPolicyData;
31+
import io.serverlessworkflow.impl.auth.OAuthUtils;
32+
import io.serverlessworkflow.impl.auth.OAuthUtils.OAuthPolicyData;
3233
import java.util.Optional;
3334
import org.junit.jupiter.api.Test;
3435

35-
public class OAuthPolicyDataTest {
36+
public class OAuthUtilsTest {
3637

3738
@Test
3839
void fromNullReturnsEmpty() {
39-
assertEquals(Optional.empty(), OAuthPolicyData.from(null));
40+
assertEquals(Optional.empty(), OAuthUtils.from(null));
4041
}
4142

4243
@Test
4344
void fromNonOAuthPolicyReturnsEmpty() {
4445
AuthenticationPolicyUnion union =
4546
new AuthenticationPolicyUnion()
4647
.withBasicAuthenticationPolicy(new BasicAuthenticationPolicy());
47-
assertTrue(OAuthPolicyData.from(union).isEmpty());
48+
assertTrue(OAuthUtils.from(union).isEmpty());
4849
}
4950

5051
@Test
@@ -57,10 +58,10 @@ void fromOAuth2InlineData() {
5758
.withOauth2(
5859
new OAuth2AuthenticationPolicyConfiguration()
5960
.withOAuth2ConnectAuthenticationProperties(props)));
60-
Optional<OAuthPolicyData> result = OAuthPolicyData.from(union);
61+
Optional<OAuthPolicyData> result = OAuthUtils.from(union);
6162
assertTrue(result.isPresent());
6263
OAuthPolicyData data = result.get();
63-
assertEquals(OAuthPolicyData.OAuthScheme.OAUTH2, data.scheme());
64+
assertEquals(OAuthUtils.OAuthScheme.OAUTH2, data.scheme());
6465
assertEquals(props, data.data());
6566
assertNull(data.secret());
6667
}
@@ -75,10 +76,10 @@ void fromOAuth2Secret() {
7576
.withOauth2(
7677
new OAuth2AuthenticationPolicyConfiguration()
7778
.withOAuth2AuthenticationPolicySecret(secret)));
78-
Optional<OAuthPolicyData> result = OAuthPolicyData.from(union);
79+
Optional<OAuthPolicyData> result = OAuthUtils.from(union);
7980
assertTrue(result.isPresent());
8081
OAuthPolicyData data = result.get();
81-
assertEquals(OAuthPolicyData.OAuthScheme.OAUTH2, data.scheme());
82+
assertEquals(OAuthUtils.OAuthScheme.OAUTH2, data.scheme());
8283
assertNull(data.data());
8384
assertEquals(secret, data.secret());
8485
}
@@ -93,10 +94,10 @@ void fromOidcInlineData() {
9394
.withOidc(
9495
new OpenIdConnectAuthenticationPolicyConfiguration()
9596
.withOpenIdConnectAuthenticationProperties(oidcData)));
96-
Optional<OAuthPolicyData> result = OAuthPolicyData.from(union);
97+
Optional<OAuthPolicyData> result = OAuthUtils.from(union);
9798
assertTrue(result.isPresent());
9899
OAuthPolicyData data = result.get();
99-
assertEquals(OAuthPolicyData.OAuthScheme.OPENID_CONNECT, data.scheme());
100+
assertEquals(OAuthUtils.OAuthScheme.OPENID_CONNECT, data.scheme());
100101
assertEquals(oidcData, data.data());
101102
assertNull(data.secret());
102103
}
@@ -111,10 +112,10 @@ void fromOidcSecret() {
111112
.withOidc(
112113
new OpenIdConnectAuthenticationPolicyConfiguration()
113114
.withOpenIdConnectAuthenticationPolicySecret(secret)));
114-
Optional<OAuthPolicyData> result = OAuthPolicyData.from(union);
115+
Optional<OAuthPolicyData> result = OAuthUtils.from(union);
115116
assertTrue(result.isPresent());
116117
OAuthPolicyData data = result.get();
117-
assertEquals(OAuthPolicyData.OAuthScheme.OPENID_CONNECT, data.scheme());
118+
assertEquals(OAuthUtils.OAuthScheme.OPENID_CONNECT, data.scheme());
118119
assertNull(data.data());
119120
assertEquals(secret, data.secret());
120121
}

impl/test/src/test/java/io/serverlessworkflow/impl/test/ResolvePolicyTest.java

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import static org.junit.jupiter.api.Assertions.assertEquals;
1919
import static org.junit.jupiter.api.Assertions.assertNull;
20-
import static org.junit.jupiter.api.Assertions.assertThrows;
2120

2221
import io.serverlessworkflow.api.types.AuthenticationPolicyReference;
2322
import io.serverlessworkflow.api.types.AuthenticationPolicyUnion;
@@ -28,7 +27,7 @@
2827
import io.serverlessworkflow.api.types.Use;
2928
import io.serverlessworkflow.api.types.UseAuthentications;
3029
import io.serverlessworkflow.api.types.Workflow;
31-
import io.serverlessworkflow.impl.auth.DefaultAuthProviderFactory;
30+
import io.serverlessworkflow.impl.auth.OAuthUtils;
3231
import org.junit.jupiter.api.Test;
3332

3433
public class ResolvePolicyTest {
@@ -43,14 +42,14 @@ public class ResolvePolicyTest {
4342

4443
@Test
4544
void nullAuthReturnsNull() {
46-
assertNull(DefaultAuthProviderFactory.resolvePolicy(new Workflow(), null));
45+
assertNull(OAuthUtils.resolvePolicy(new Workflow(), null));
4746
}
4847

4948
@Test
5049
void inlinePolicyReturnsPolicyDirectly() {
5150
ReferenceableAuthenticationPolicy auth =
5251
new ReferenceableAuthenticationPolicy().withAuthenticationPolicy(BEARER_POLICY);
53-
assertEquals(BEARER_POLICY, DefaultAuthProviderFactory.resolvePolicy(new Workflow(), auth));
52+
assertEquals(BEARER_POLICY, OAuthUtils.resolvePolicy(new Workflow(), auth));
5453
}
5554

5655
@Test
@@ -64,24 +63,15 @@ void referenceResolvesFromWorkflowUseAuthentications() {
6463
ReferenceableAuthenticationPolicy auth =
6564
new ReferenceableAuthenticationPolicy()
6665
.withAuthenticationPolicyReference(new AuthenticationPolicyReference("myAuth"));
67-
assertEquals(BEARER_POLICY, DefaultAuthProviderFactory.resolvePolicy(workflow, auth));
68-
}
69-
70-
@Test
71-
void referenceWithNullWorkflowThrows() {
72-
ReferenceableAuthenticationPolicy auth =
73-
new ReferenceableAuthenticationPolicy()
74-
.withAuthenticationPolicyReference(new AuthenticationPolicyReference("myAuth"));
75-
assertThrows(
76-
IllegalArgumentException.class, () -> DefaultAuthProviderFactory.resolvePolicy(null, auth));
66+
assertEquals(BEARER_POLICY, OAuthUtils.resolvePolicy(workflow, auth));
7767
}
7868

7969
@Test
8070
void referenceWithNullUseReturnsNull() {
8171
ReferenceableAuthenticationPolicy auth =
8272
new ReferenceableAuthenticationPolicy()
8373
.withAuthenticationPolicyReference(new AuthenticationPolicyReference("myAuth"));
84-
assertNull(DefaultAuthProviderFactory.resolvePolicy(new Workflow(), auth));
74+
assertNull(OAuthUtils.resolvePolicy(new Workflow(), auth));
8575
}
8676

8777
@Test
@@ -90,7 +80,7 @@ void referenceWithNullAuthenticationsReturnsNull() {
9080
ReferenceableAuthenticationPolicy auth =
9181
new ReferenceableAuthenticationPolicy()
9282
.withAuthenticationPolicyReference(new AuthenticationPolicyReference("myAuth"));
93-
assertNull(DefaultAuthProviderFactory.resolvePolicy(workflow, auth));
83+
assertNull(OAuthUtils.resolvePolicy(workflow, auth));
9484
}
9585

9686
@Test
@@ -105,6 +95,6 @@ void referenceToNonExistentKeyReturnsNull() {
10595
ReferenceableAuthenticationPolicy auth =
10696
new ReferenceableAuthenticationPolicy()
10797
.withAuthenticationPolicyReference(new AuthenticationPolicyReference("myAuth"));
108-
assertNull(DefaultAuthProviderFactory.resolvePolicy(workflow, auth));
98+
assertNull(OAuthUtils.resolvePolicy(workflow, auth));
10999
}
110100
}

0 commit comments

Comments
 (0)