[java-plugin-shibd-oidc] branch main updated: Improve null handling
Codeberg
noreply at shibboleth.net
Thu Mar 5 15:24:50 UTC 2026
This is an automated email from the git hooks/post-receive script.
codeberg pushed a commit to branch main
in repository java-plugin-shibd-oidc.
View the commit online:
https://codeberg.org/Shibboleth/java-plugin-shibd-oidc/commit/d93b80cd328c7096d8330dc12033ebd6d0b5ffaf
The following commit(s) were added to refs/heads/main by this push:
new d93b80c Improve null handling
d93b80c is described below
commit d93b80cd328c7096d8330dc12033ebd6d0b5ffaf
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Thu Mar 5 15:24:41 2026 +0000
Improve null handling
---
.../impl/DecodeStateAsJsonObjectConsumer.java | 4 +-
.../ApplicationMetadataResolverLookupFunction.java | 6 ++-
.../sp/oidc/profile/impl/ExtractOIDCClaims.java | 9 ++---
.../sp/oidc/profile/impl/IssueStateCookie.java | 4 +-
.../sp/oidc/profile/impl/MapStateToStateToken.java | 24 +++++------
.../sp/oidc/profile/impl/PrepareAgentResponse.java | 47 +++++++++++++---------
.../impl/RequestedClaimsLookupStrategy.java | 2 +-
.../profile/impl/StandardExtractionStrategy.java | 12 ++++--
.../sp/oidc/profile/impl/StateLookupStrategy.java | 6 ++-
.../sp/oidc/profile/impl/ValidateTokenClaims.java | 4 +-
.../AbstractAuthenticationLookupStrategyTest.java | 17 +++++---
...nticationContextClassRefLookupStrategyTest.java | 1 +
...ticationRequestStateForStorageStrategyTest.java | 5 ++-
.../impl/DisplayParameterLookupStrategyTest.java | 2 +-
.../ForceAuthnParameterLookupStrategyTest.java | 2 +-
.../sp/oidc/profile/impl/IssueStateCookieTest.java | 5 ++-
...romAuthenticationRequestLookupFunctionTest.java | 5 +++
.../profile/impl/PrepareAgentResponseTest.java | 37 ++++++++++++++---
.../oidc/profile/impl/ProcessStateCookieTest.java | 28 ++++++++-----
...enticationRequestToPeerContextConsumerTest.java | 1 +
20 files changed, 148 insertions(+), 73 deletions(-)
diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/decoding/impl/DecodeStateAsJsonObjectConsumer.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/decoding/impl/DecodeStateAsJsonObjectConsumer.java
index 378b4ff..29c61b9 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/decoding/impl/DecodeStateAsJsonObjectConsumer.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/decoding/impl/DecodeStateAsJsonObjectConsumer.java
@@ -62,7 +62,9 @@ public class DecodeStateAsJsonObjectConsumer implements Function<MessageContext,
}
try {
- final byte[] decodedBytes = Base64Support.decodeURLSafe(responseState.getValue());
+ final String stateValue = responseState.getValue();
+ assert stateValue != null;
+ final byte[] decodedBytes = Base64Support.decodeURLSafe(stateValue);
final JSONObject jsonState = (JSONObject) JSONValue.parseWithException(decodedBytes);
if (jsonState != null) {
messageContext.ensureSubcontext(OAuthStateContext.class)
diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ApplicationMetadataResolverLookupFunction.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ApplicationMetadataResolverLookupFunction.java
index 58512fd..2b64339 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ApplicationMetadataResolverLookupFunction.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ApplicationMetadataResolverLookupFunction.java
@@ -24,6 +24,7 @@ import net.shibboleth.oidc.metadata.ProviderMetadataResolver;
import net.shibboleth.oidc.metadata.impl.ReloadingProviderMetadataProvider;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.primitive.LoggerFactory;
+import net.shibboleth.shared.service.ReloadableService;
import net.shibboleth.sp.Application;
import net.shibboleth.sp.context.AgentRequestContext;
import net.shibboleth.sp.oidc.OIDCProtocolSupportService;
@@ -50,8 +51,11 @@ public class ApplicationMetadataResolverLookupFunction
OIDCProtocolSupportService.class);
if (supportService != null) {
+ final ReloadableService<ProviderMetadataResolver> resolver =
+ supportService.getMetadataResolver();
+ assert resolver != null;
final ReloadingProviderMetadataProvider metadataResolver =
- new ReloadingProviderMetadataProvider(supportService.getMetadataResolver());
+ new ReloadingProviderMetadataProvider(resolver);
metadataResolver.setId(application.getId() + " MetadataResolver");
metadataResolver.initialize();
return metadataResolver;
diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ExtractOIDCClaims.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ExtractOIDCClaims.java
index 3d4c4c9..2e19f41 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ExtractOIDCClaims.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ExtractOIDCClaims.java
@@ -18,7 +18,6 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
-import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -269,8 +268,6 @@ public class ExtractOIDCClaims extends AbstractApplicationAction {
final Map<String,IdPAttribute> accumulator = new HashMap<>();
accumulator.putAll(attributeContext.getIdPAttributes());
- //TODO custom extraction, attribute resolution
-
// Extract standard attributes.
if (standardExtractionStrategy != null && profileConfiguration.isExtractStandardAttributes(profileRequestContext)) {
log.debug("{} Extracting standard attributes", getLogPrefix());
@@ -279,7 +276,7 @@ public class ExtractOIDCClaims extends AbstractApplicationAction {
if (standards != null && !standards.isEmpty()) {
if (log.isDebugEnabled()) {
log.debug("{} Extracted standard attributes: {}", getLogPrefix(),
- standards.stream().map(IdPAttribute::getId).collect(Collectors.toUnmodifiableList()));
+ standards.stream().map(IdPAttribute::getId).toList());
}
IdPAttributeSupport.withMapMergeDuplicates(accumulator, standards);
@@ -295,7 +292,7 @@ public class ExtractOIDCClaims extends AbstractApplicationAction {
if (newAttributes != null && !newAttributes.isEmpty()) {
if (log.isDebugEnabled()) {
log.debug("{} Extracted attributes with custom strategy: {}", getLogPrefix(),
- newAttributes.stream().map(IdPAttribute::getId).collect(Collectors.toUnmodifiableList()));
+ newAttributes.stream().map(IdPAttribute::getId).toList());
}
IdPAttributeSupport.withMapMergeDuplicates(accumulator, newAttributes);
}
@@ -307,7 +304,7 @@ public class ExtractOIDCClaims extends AbstractApplicationAction {
if (newAttributes != null && !newAttributes.isEmpty()) {
if (log.isDebugEnabled()) {
log.debug("{} Resolved attributes internally: {}", getLogPrefix(),
- newAttributes.stream().map(IdPAttribute::getId).collect(Collectors.toUnmodifiableList()));
+ newAttributes.stream().map(IdPAttribute::getId).toList());
}
IdPAttributeSupport.withMapMergeDuplicates(accumulator, newAttributes);
}
diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/IssueStateCookie.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/IssueStateCookie.java
index bf6661c..a516fb7 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/IssueStateCookie.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/IssueStateCookie.java
@@ -190,7 +190,9 @@ public class IssueStateCookie extends AbstractApplicationAction {
log.debug("{} Tracking state {} against state token {}", getLogPrefix(), stateValue, stateToken);
final Escaper escaper = UrlEscapers.urlFormParameterEscaper();
- cookieManager.addCookie(cookiePrefix + escaper.escape(stateToken), escaper.escape(stateValue));
+ final String escapedValue = escaper.escape(stateValue);
+ assert escapedValue != null;
+ cookieManager.addCookie(cookiePrefix + escaper.escape(stateToken), escapedValue);
} finally {
RemotedHttpServletRequestResponseContext.clearCurrent();
}
diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/MapStateToStateToken.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/MapStateToStateToken.java
index 5ca3ba5..b0a13ab 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/MapStateToStateToken.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/MapStateToStateToken.java
@@ -55,9 +55,6 @@ public class MapStateToStateToken extends AbstractApplicationAction {
/** Lookup strategy for the contents of the state cookie. */
@NonnullAfterInit private Function<ProfileRequestContext,String> stateValueLookupStrategy;
- /** The value of the state token. */
- @NonnullBeforeExec private String stateValue;
-
/**
* Sets whether an error computing a state token should result in a fatal event.
@@ -134,17 +131,18 @@ public class MapStateToStateToken extends AbstractApplicationAction {
try {
final String stateValue = stateValueLookupStrategy.apply(profileRequestContext);
-
- //TODO UTF-8?
- final byte[] stateValueBytes = stateValue.getBytes(StandardCharsets.UTF_8);
-
- final String token = ensureApplication().getStateTokenManager().preserveToStateToken(
- ensureAgent(), ensureApplication(), stateValueBytes);
- if (state == null) {
- input.addmember(SPConstants.STATE).string(token);
+ if (stateValue != null) {
+ //TODO UTF-8?
+ final byte[] stateValueBytes = stateValue.getBytes(StandardCharsets.UTF_8);
+ assert stateValueBytes != null;
+ final String token = ensureApplication().getStateTokenManager().preserveToStateToken(
+ ensureAgent(), ensureApplication(), stateValueBytes);
+ if (state == null) {
+ input.addmember(SPConstants.STATE).string(token);
+ }
+
+ log.debug("{} State preserved to state token: {}", getLogPrefix(), token);
}
-
- log.debug("{} State preserved to state token: {}", getLogPrefix(), token);
} catch (final IOException e) {
log.warn("{} Exception preserving state to token", getLogPrefix(), e);
if (errorFatal) {
diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponse.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponse.java
index 6bcaf0a..e19561d 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponse.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponse.java
@@ -135,10 +135,12 @@ public class PrepareAgentResponse extends AbstractTokenConsumerResponseAction {
final DataSealer localDataSealer = dataSealer;
// Add the refresh token if it exists
- if (refreshToken != null) {
+ if (refreshToken != null && refreshToken.getValue() != null) {
if (localDataSealer != null) {
try {
- tokens.addmember("refresh_token").string(localDataSealer.wrap(refreshToken.getValue()));
+ final String refreshTokenString = refreshToken.getValue();
+ assert refreshTokenString != null;
+ tokens.addmember("refresh_token").string(localDataSealer.wrap(refreshTokenString));
} catch (final DataSealerException e) {
log.debug("{} Error sealing refresh token for session data", getLogPrefix(), e);
// Is not an error, but the refresh token won't be stored.
@@ -148,34 +150,43 @@ public class PrepareAgentResponse extends AbstractTokenConsumerResponseAction {
}
}
- boolean accessTokenAdded = false;
- if (localDataSealer != null) {
- try {
- tokens.addmember("access_token").string(localDataSealer.wrap(accessToken.getValue()));
+ boolean accessTokenAdded = false;
+ if (accessToken != null && accessToken.getValue() != null) {
+ if (localDataSealer != null) {
+ try {
+ final String accessTokenString = accessToken.getValue();
+ assert accessTokenString != null;
+ tokens.addmember("access_token").string(localDataSealer.wrap(accessTokenString));
+ accessTokenAdded = true;
+ } catch (final DataSealerException e) {
+ log.debug("{} Error sealing access token for session data", getLogPrefix(), e);
+ // Is not an error, but the access token and its attributes won't be stored.
+ }
+ } else {
+ tokens.addmember("access_token").string(accessToken.getValue());
accessTokenAdded = true;
- } catch (final DataSealerException e) {
- log.debug("{} Error sealing access token for session data", getLogPrefix(), e);
- // Is not an error, but the access token and its attributes won't be stored.
}
- } else {
- tokens.addmember("access_token").string(accessToken.getValue());
- accessTokenAdded = true;
}
// Only add the attributes of an access_token if one exists
+
if (accessTokenAdded) {
- tokens.addmember("token_type").string(accessToken.getType().getValue());
- tokens.addmember("expires_in").longinteger(accessToken.getLifetime());
- if (accessToken.getScope() != null) {
- tokens.addmember("scope").string(accessToken.getScope()
+ final var localAccessToken = accessToken;
+ // Access token can not be null here.
+ assert localAccessToken != null;
+ tokens.addmember("token_type").string(localAccessToken.getType().getValue());
+ tokens.addmember("expires_in").longinteger(localAccessToken.getLifetime());
+ if (localAccessToken.getScope() != null) {
+ tokens.addmember("scope").string(localAccessToken.getScope()
.stream()
.map(String::valueOf)
.filter(s -> !s.isBlank())
.distinct()
.collect(java.util.stream.Collectors.joining(" ")));
}
- if (accessToken.getIssuedTokenType() != null) {
- tokens.addmember("issued_token_type").string(accessToken.getIssuedTokenType().getURI().toString());
+ if (localAccessToken.getIssuedTokenType() != null) {
+ tokens.addmember("issued_token_type")
+ .string(localAccessToken.getIssuedTokenType().getURI().toString());
}
}
diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/RequestedClaimsLookupStrategy.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/RequestedClaimsLookupStrategy.java
index b19c9f3..31d95ae 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/RequestedClaimsLookupStrategy.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/RequestedClaimsLookupStrategy.java
@@ -57,7 +57,7 @@ public class RequestedClaimsLookupStrategy
}
final Map<String,Object> claims = rpConfig.getRequestedClaims(PRC_LOOKUP.apply(messageContext));
- if (claims != null && !claims.isEmpty()) {
+ if (!claims.isEmpty()) {
try {
return OIDCClaimsRequest.parse(new JSONObject(claims));
} catch (final ParseException e) {
diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/StandardExtractionStrategy.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/StandardExtractionStrategy.java
index f173b29..e955b10 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/StandardExtractionStrategy.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/StandardExtractionStrategy.java
@@ -15,6 +15,7 @@
package net.shibboleth.sp.oidc.profile.impl;
import java.text.ParseException;
+import java.time.Instant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
@@ -103,10 +104,13 @@ public class StandardExtractionStrategy implements Function<EndUserClaimsContext
try {
final Date authTime = idTokenClaims.getDateClaim(IDTokenClaimsSet.AUTH_TIME_CLAIM_NAME);
if (authTime!= null) {
- assert authnInstantAttributeId != null;
- final IdPAttribute attr = new IdPAttribute(authnInstantAttributeId);
- attr.setValues(CollectionSupport.singletonList(new DateTimeAttributeValue(authTime.toInstant())));
- attributes.add(attr);
+ final Instant authTimeInstant = authTime.toInstant();
+ if (authTimeInstant != null) {
+ assert authnInstantAttributeId != null;
+ final IdPAttribute attr = new IdPAttribute(authnInstantAttributeId);
+ attr.setValues(CollectionSupport.singletonList(new DateTimeAttributeValue(authTimeInstant)));
+ attributes.add(attr);
+ }
}
} catch (final ParseException e) {
log.debug("Unable to process auth_time claim for standard attribute extraction", e);
diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/StateLookupStrategy.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/StateLookupStrategy.java
index 34f2697..979bfcb 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/StateLookupStrategy.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/StateLookupStrategy.java
@@ -60,11 +60,13 @@ public class StateLookupStrategy extends AbstractAgentAndRelyingPartyContextLook
stateObject.appendField(OIDCConstants.STATE_FIELD, input.getmember(SPConstants.STATE).string());
stateObject.appendField(OIDCConstants.NONCE_FIELD, OIDCSupport.generateRandom(32));
final String stateJsonString = stateObject.toJSONString(JSONValue.COMPRESSION);
- if (stateJsonString == null) {
+ if (stateJsonString == null || stateJsonString.isEmpty()) {
return null;
}
try {
- final String serializedValue = Base64Support.encodeURLSafe(stateJsonString.getBytes(StandardCharset.UTF_8));
+ final byte[] stateJsonAsBytes = stateJsonString.getBytes(StandardCharset.UTF_8);
+ assert stateJsonAsBytes != null;
+ final String serializedValue = Base64Support.encodeURLSafe(stateJsonAsBytes);
return new StateToken(serializedValue, stateObject);
} catch (final EncodingException e) {
log.error("Unable to generate OAuth state", e);
diff --git a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ValidateTokenClaims.java b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ValidateTokenClaims.java
index 24486f2..8816514 100644
--- a/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ValidateTokenClaims.java
+++ b/sp-oidc-impl/src/main/java/net/shibboleth/sp/oidc/profile/impl/ValidateTokenClaims.java
@@ -150,7 +150,9 @@ public class ValidateTokenClaims extends AbstractProfileAction {
log.debug("{} Validating JWT claims for subject '{}'",getLogPrefix(), subject);
try {
- claimsValidator.validate(claimsSet, profileRequestContext);
+ final var localClaimsSet = claimsSet;
+ assert localClaimsSet != null;
+ claimsValidator.validate(localClaimsSet, profileRequestContext);
if (cleanupHook != null) {
cleanupHook.accept(profileRequestContext);
}
diff --git a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AbstractAuthenticationLookupStrategyTest.java b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AbstractAuthenticationLookupStrategyTest.java
index 8f10c41..1a96abb 100644
--- a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AbstractAuthenticationLookupStrategyTest.java
+++ b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AbstractAuthenticationLookupStrategyTest.java
@@ -29,6 +29,7 @@ import net.shibboleth.idp.profile.testing.RequestContextBuilder;
import net.shibboleth.oidc.profile.config.impl.DefaultOIDCAuthorizationConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.sp.context.AgentRequestContext;
import net.shibboleth.sp.ddf.DDF;
@@ -37,11 +38,10 @@ import net.shibboleth.sp.ddf.DDF;
*/
public abstract class AbstractAuthenticationLookupStrategyTest {
- /** Resource URL. */
- @Nonnull
+ /** Resource URL. */
public static final byte[] RESOURCE_URL = "https://sp.example.org/secure".getBytes(StandardCharsets.UTF_8);
- /** REDIRECT URI. */
+ /** Redirect URI. */
@Nonnull
public static final String RESPONSE_URL = "https://sp.example.org/Shibboleth.sso/callback";
@@ -52,8 +52,6 @@ public abstract class AbstractAuthenticationLookupStrategyTest {
protected RelyingPartyContext rpc;
protected AgentRequestContext arc;
protected RelyingPartyContext partyContext;
-
- /** The RP config.*/
protected DefaultOIDCAuthorizationConfiguration rpConfig;
@BeforeMethod
@@ -72,6 +70,15 @@ public abstract class AbstractAuthenticationLookupStrategyTest {
prc.addSubcontext(partyContext);
}
+ /**
+ * Return the relying party context.
+ *
+ * @return return the relying party configuration, or throw an exception if it is null
+ */
+ @Nonnull protected RelyingPartyContext getRelyingPartyContext(){
+ return Constraint.isNotNull(partyContext, "RelyingPartyContext is null");
+ }
+
/**
* Add the {@link DDF} to the agent request context.
*
diff --git a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AuthenticationContextClassRefLookupStrategyTest.java b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AuthenticationContextClassRefLookupStrategyTest.java
index 67b6683..02e1eea 100644
--- a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AuthenticationContextClassRefLookupStrategyTest.java
+++ b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AuthenticationContextClassRefLookupStrategyTest.java
@@ -98,6 +98,7 @@ public class AuthenticationContextClassRefLookupStrategyTest extends AbstractAut
assertEquals(result.get(0).getValue(), "loa1");
}
+ @SuppressWarnings("null")
@Test
public void testNoInputNoRpConfig() {
prc.removeSubcontext(partyContext);
diff --git a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AuthenticationRequestStateForStorageStrategyTest.java b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AuthenticationRequestStateForStorageStrategyTest.java
index a9f1a38..2ba4bcb 100644
--- a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AuthenticationRequestStateForStorageStrategyTest.java
+++ b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/AuthenticationRequestStateForStorageStrategyTest.java
@@ -61,6 +61,7 @@ public class AuthenticationRequestStateForStorageStrategyTest extends BaseAgplic
private Duration maxAge;
+ @SuppressWarnings("null")
@Override
@BeforeMethod
public void beforeMethod() throws ComponentInitializationException {
@@ -84,7 +85,7 @@ public class AuthenticationRequestStateForStorageStrategyTest extends BaseAgplic
authnRequest.setAuthnRequestTime(now);
maxAge = Duration.ofMinutes(1);
authnRequest.setMaxAge(maxAge);
-
+ assert mapper != null;
strategy.setAuthenticationRequestLookupStrategy(prc -> authnRequest);
strategy.setObjectMapper(mapper);
}
@@ -139,6 +140,7 @@ public class AuthenticationRequestStateForStorageStrategyTest extends BaseAgplic
}
+ @SuppressWarnings("null")
@Test
public void testSuccessfulConstruction_WithDataSealer() throws Exception {
final DataSealer sealer = Mockito.mock(DataSealer.class);
@@ -152,6 +154,7 @@ public class AuthenticationRequestStateForStorageStrategyTest extends BaseAgplic
}
+ @SuppressWarnings("null")
@Test
public void testSuccessfulConstruction_WithDataSealerButSealedPredicateIsFalse() throws Exception {
final DataSealer sealer = Mockito.mock(DataSealer.class);
diff --git a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/DisplayParameterLookupStrategyTest.java b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/DisplayParameterLookupStrategyTest.java
index 49dcf72..4827412 100644
--- a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/DisplayParameterLookupStrategyTest.java
+++ b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/DisplayParameterLookupStrategyTest.java
@@ -74,7 +74,7 @@ public class DisplayParameterLookupStrategyTest extends AbstractAuthenticationLo
@Test
public void testDisplayParameterMissingNoRpConfig() {
- prc.removeSubcontext(partyContext);
+ prc.removeSubcontext(getRelyingPartyContext());
final String result = strategy.apply(mc);
assertNull(result);
}
diff --git a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/ForceAuthnParameterLookupStrategyTest.java b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/ForceAuthnParameterLookupStrategyTest.java
index ee437b0..0588a5f 100644
--- a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/ForceAuthnParameterLookupStrategyTest.java
+++ b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/ForceAuthnParameterLookupStrategyTest.java
@@ -94,7 +94,7 @@ public class ForceAuthnParameterLookupStrategyTest extends AbstractAuthenticatio
@Test
public void testForceAuthnNotPresentNoRpConfig() {
- prc.removeSubcontext(partyContext);
+ prc.removeSubcontext(getRelyingPartyContext());
final Boolean result = strategy.apply(mc);
assertNotNull(result);
assert result != null;
diff --git a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/IssueStateCookieTest.java b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/IssueStateCookieTest.java
index 682c7d0..4232079 100644
--- a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/IssueStateCookieTest.java
+++ b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/IssueStateCookieTest.java
@@ -51,8 +51,8 @@ import net.shibboleth.sp.profile.impl.BaseAgplicationActionTest;
@SuppressWarnings("javadoc")
public class IssueStateCookieTest extends BaseAgplicationActionTest {
- @Nonnull @NotEmpty private final static String TEST_STATE = "foo";
- @Nonnull @NotEmpty private final static String TEST_VALUE = "123456789";
+ @Nonnull @NotEmpty private static final String TEST_STATE = "foo";
+ @Nonnull @NotEmpty private static final String TEST_VALUE = "123456789";
private String stateValue;
@@ -68,6 +68,7 @@ public class IssueStateCookieTest extends BaseAgplicationActionTest {
*
* @throws ComponentInitializationException
*/
+ @SuppressWarnings("null")
@BeforeMethod
public void setUp() throws ComponentInitializationException {
super.beforeMethod();
diff --git a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/MaxAgeFromAuthenticationRequestLookupFunctionTest.java b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/MaxAgeFromAuthenticationRequestLookupFunctionTest.java
index 8dbb0a2..077147c 100644
--- a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/MaxAgeFromAuthenticationRequestLookupFunctionTest.java
+++ b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/MaxAgeFromAuthenticationRequestLookupFunctionTest.java
@@ -40,6 +40,7 @@ public class MaxAgeFromAuthenticationRequestLookupFunctionTest {
final AuthenticationRequestStateData state = new AuthenticationRequestStateData().setMaxAge(expected);
+ @SuppressWarnings("null")
final MaxAgeFromAuthenticationRequestLookupFunction function =
new MaxAgeFromAuthenticationRequestLookupFunction(Duration.ofSeconds(120));
@@ -52,10 +53,12 @@ public class MaxAgeFromAuthenticationRequestLookupFunctionTest {
/**
* Test no max_age present in authentication request, so fallback to profile configuration (not the default value).
*/
+ @SuppressWarnings("null")
@Test
public void testFallbackToProfileConfiguration() {
final Duration expected = Duration.ofSeconds(300);
+ @SuppressWarnings("null")
final MaxAgeFromAuthenticationRequestLookupFunction func = new MaxAgeFromAuthenticationRequestLookupFunction(
Duration.ofSeconds(999));
@@ -76,6 +79,7 @@ public class MaxAgeFromAuthenticationRequestLookupFunctionTest {
public void testFallbackToDefault_WhenNoAuthnRequestOrRPC() {
final Duration defaultValue = Duration.ofSeconds(180);
+ @SuppressWarnings("null")
final MaxAgeFromAuthenticationRequestLookupFunction function =
new MaxAgeFromAuthenticationRequestLookupFunction(
defaultValue);
@@ -95,6 +99,7 @@ public class MaxAgeFromAuthenticationRequestLookupFunctionTest {
final AuthenticationRequestStateData state = new AuthenticationRequestStateData();
+ @SuppressWarnings("null")
final MaxAgeFromAuthenticationRequestLookupFunction function =
new MaxAgeFromAuthenticationRequestLookupFunction(
defaultValue);
diff --git a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponseTest.java b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponseTest.java
index 5e32a0b..96ba023 100644
--- a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponseTest.java
+++ b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/PrepareAgentResponseTest.java
@@ -14,6 +14,10 @@
package net.shibboleth.sp.oidc.profile.impl;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
import org.mockito.Mockito;
import org.springframework.webflow.execution.Event;
import org.testng.Assert;
@@ -52,6 +56,7 @@ public class PrepareAgentResponseTest extends BaseAgplicationActionTest{
/** The RP config.*/
protected DefaultOIDCAuthorizationConfiguration rpConfig;
+ @SuppressWarnings("null")
@Override
@BeforeMethod
public void beforeMethod() throws ComponentInitializationException {
@@ -93,9 +98,16 @@ public class PrepareAgentResponseTest extends BaseAgplicationActionTest{
Assert.assertTrue(http.getmember("response").isnull());
Assert.assertTrue(http.getmember("headers").isnull());
- //TODO tests for actual token values when the API is changed.
final DDF session = out.getmember(ConsumerConstants.SESSION_OPAQUE);
- //Assert.assertFalse(session.isnull());
+ Assert.assertFalse(session.isnull());
+ final DDF tokens = session.getmember("tokens");
+ assertFalse(tokens.isnull());
+ final DDF refreshTokenDdf = tokens.getmember("refresh_token");
+ assertFalse(refreshTokenDdf.isnull());
+ assertEquals(refreshTokenDdf.string(),"refresh123");
+ final DDF accessTokenDdf = tokens.getmember("access_token");
+ assertFalse(accessTokenDdf.isnull());
+ assertEquals(accessTokenDdf.string(),"access123");
}
@Test
@@ -126,11 +138,19 @@ public class PrepareAgentResponseTest extends BaseAgplicationActionTest{
Assert.assertTrue(http.getmember("response").isnull());
Assert.assertTrue(http.getmember("headers").isnull());
- //TODO tests for actual token values when the API is changed.
final DDF session = out.getmember(ConsumerConstants.SESSION_OPAQUE);
- //Assert.assertFalse(session.isnull());
+ Assert.assertFalse(session.isnull());
+ final DDF tokens = session.getmember("tokens");
+ assertFalse(tokens.isnull());
+ final DDF refreshTokenDdf = tokens.getmember("refresh_token");
+ assertFalse(refreshTokenDdf.isnull());
+ assertEquals(refreshTokenDdf.string(),"sealedRefresh");
+ final DDF accessTokenDdf = tokens.getmember("access_token");
+ assertFalse(accessTokenDdf.isnull());
+ assertEquals(accessTokenDdf.string(),"sealedAccess");
}
+ @SuppressWarnings("null")
@Test
void testGetSessionData_DataSealerException() throws Exception {
final DataSealer sealer = Mockito.mock(DataSealer.class);
@@ -158,9 +178,16 @@ public class PrepareAgentResponseTest extends BaseAgplicationActionTest{
Assert.assertTrue(http.getmember("response").isnull());
Assert.assertTrue(http.getmember("headers").isnull());
- //TODO check the tokens are NOT set on the DDF because the data sealer threw an error
+ // check the tokens are NOT set on the DDF because the data sealer threw an error
final DDF session = out.getmember(ConsumerConstants.SESSION_OPAQUE);
// Check access_token and refresh_token not set
+ Assert.assertFalse(session.isnull());
+ final DDF tokens = session.getmember("tokens");
+ assertFalse(tokens.isnull());
+ final DDF refreshTokenDdf = tokens.getmember("refresh_token");
+ assertTrue(refreshTokenDdf.isempty());
+ final DDF accessTokenDdf = tokens.getmember("access_token");
+ assertTrue(accessTokenDdf.isempty());
}
diff --git a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/ProcessStateCookieTest.java b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/ProcessStateCookieTest.java
index 8bf87b6..0d10a62 100644
--- a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/ProcessStateCookieTest.java
+++ b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/ProcessStateCookieTest.java
@@ -39,6 +39,7 @@ public class ProcessStateCookieTest extends BaseAgplicationActionTest {
private CookieManager cookieManager;
+ @SuppressWarnings("null")
@BeforeMethod
public void BeforeMethod() throws ComponentInitializationException {
super.beforeMethod();
@@ -50,10 +51,11 @@ public class ProcessStateCookieTest extends BaseAgplicationActionTest {
@Test
public void testMissingStateTokenNonFatal() throws ComponentInitializationException {
- action.setStateTokenLookupStrategy(prc -> null);
+ action.setStateTokenLookupStrategy(prcFunct -> null);
action.setErrorFatal(false);
action.initialize();
+ @SuppressWarnings("null")
final boolean result = action.doPreExecute(prc);
assertFalse(result);
}
@@ -62,10 +64,11 @@ public class ProcessStateCookieTest extends BaseAgplicationActionTest {
@Test
public void testMissingStateTokenFatal() throws ComponentInitializationException {
- action.setStateTokenLookupStrategy(prc -> null);
+ action.setStateTokenLookupStrategy(prcFunct -> null);
action.setErrorFatal(true);
action.initialize();
+ @SuppressWarnings("null")
final boolean result = action.doPreExecute(prc);
assertFalse(result);
final var ec = prc.getSubcontext(EventContext.class);
@@ -75,10 +78,11 @@ public class ProcessStateCookieTest extends BaseAgplicationActionTest {
}
/* The cookie is missing, but this is not fatal.*/
+ @SuppressWarnings("null")
@Test
public void testMissingCookieNonFatal() throws ComponentInitializationException {
- action.setStateTokenLookupStrategy(prc -> "state");
+ action.setStateTokenLookupStrategy(prcFunct -> "state");
action.setErrorFatal(false);
action.initialize();
@@ -92,10 +96,11 @@ public class ProcessStateCookieTest extends BaseAgplicationActionTest {
}
/* The cookie is missing, and this is fatal.*/
+ @SuppressWarnings("null")
@Test
public void testMissingCookieFatal() throws ComponentInitializationException {
- action.setStateTokenLookupStrategy(prc -> "state");
+ action.setStateTokenLookupStrategy(prcFunct -> "state");
action.setErrorFatal(true);
action.initialize();
@@ -111,11 +116,12 @@ public class ProcessStateCookieTest extends BaseAgplicationActionTest {
}
/* Test cookie value found and set.*/
+ @SuppressWarnings("null")
@Test
public void testConsumerSuccess() throws ComponentInitializationException {
- action.setStateTokenLookupStrategy(prc -> "state");
- action.setCookieValueConsumerStrategy((prc, value) -> Boolean.TRUE);
+ action.setStateTokenLookupStrategy(prcFunct -> "state");
+ action.setCookieValueConsumerStrategy((prcFunct, value) -> Boolean.TRUE);
action.setErrorFatal(true);
action.initialize();
@@ -130,11 +136,12 @@ public class ProcessStateCookieTest extends BaseAgplicationActionTest {
}
/* Could not set cookie back to context, but not fatal.*/
+ @SuppressWarnings("null")
@Test
public void testConsumerFailureNonFatal() throws ComponentInitializationException {
- action.setStateTokenLookupStrategy(prc -> "state");
- action.setCookieValueConsumerStrategy((prc, value) -> Boolean.FALSE);
+ action.setStateTokenLookupStrategy(prcFunct -> "state");
+ action.setCookieValueConsumerStrategy((prcFunct, value) -> Boolean.FALSE);
action.setErrorFatal(false);
action.initialize();
@@ -148,11 +155,12 @@ public class ProcessStateCookieTest extends BaseAgplicationActionTest {
}
/* Could not set cookie back to context, and fatal.*/
+ @SuppressWarnings("null")
@Test
public void testConsumerFailureFatal() throws ComponentInitializationException {
- action.setStateTokenLookupStrategy(prc -> "state");
- action.setCookieValueConsumerStrategy((prc, value) -> Boolean.FALSE);
+ action.setStateTokenLookupStrategy(prcFunct -> "state");
+ action.setCookieValueConsumerStrategy((prcFunct, value) -> Boolean.FALSE);
action.setErrorFatal(true);
action.initialize();
diff --git a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/SetAuthenticationRequestToPeerContextConsumerTest.java b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/SetAuthenticationRequestToPeerContextConsumerTest.java
index 1ee91f1..65a3eaa 100644
--- a/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/SetAuthenticationRequestToPeerContextConsumerTest.java
+++ b/sp-oidc-impl/src/test/java/net/shibboleth/sp/oidc/profile/impl/SetAuthenticationRequestToPeerContextConsumerTest.java
@@ -93,6 +93,7 @@ public class SetAuthenticationRequestToPeerContextConsumerTest extends BaseAgpli
assertEquals(authnStateFromCtx.getPkceCodeVerifier(), "PKCECodeVerifier");
}
+ @SuppressWarnings("null")
@Test
public void testSuccess_SealedWithDataSealer() throws Exception {
final DataSealer sealer = Mockito.mock(DataSealer.class);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list