[java-identity-provider] 04/04: IDP-2069 Null Handling

Rod Widdowson rdw at steadingsoftware.com
Wed Mar 15 13:38:40 UTC 2023


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch main
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=1a3d0c57f32dc6a3bd40ab78dbee5352a488e9b7

commit 1a3d0c57f32dc6a3bd40ab78dbee5352a488e9b7
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Mar 14 16:40:53 2023 +0000

    IDP-2069 Null Handling
    
    https://shibboleth.atlassian.net/browse/IDP-2069
    
    Remove several warnings from idp-cas-*
---
 .../idp/authn/AbstractValidationAction.java        |  2 +-
 .../idp/cas/protocol/TicketValidationResponse.java |  8 ++++--
 .../idp/cas/flow/impl/GrantProxyTicketAction.java  |  4 ++-
 .../cas/flow/impl/GrantServiceTicketAction.java    |  5 ++--
 .../cas/flow/impl/ValidateProxyCallbackAction.java |  3 ++-
 .../cas/proxy/impl/HttpClientProxyValidator.java   |  1 +
 .../cas/service/impl/DefaultServiceComparator.java | 12 +++++++--
 .../impl/CASDateTimeAttributeTranscoderTest.java   | 12 +++++----
 .../idp/cas/flow/impl/AbstractFlowActionTest.java  | 10 +++++---
 .../flow/impl/ValidateProxyCallbackActionTest.java | 21 ++++++++++-----
 .../cas/flow/impl/ValidateTicketActionTest.java    | 10 ++++++--
 .../service/impl/MetadataServiceRegistryTest.java  |  5 ++--
 .../session/impl/CASSPSessionSerializerTest.java   | 13 +++++++---
 .../cas/ticket/impl/EncodingTicketServiceTest.java | 30 ++++++++++++++--------
 .../cas/ticket/impl/SimpleTicketServiceTest.java   | 14 ++++++----
 .../impl/ProxyGrantingTicketSerializerTest.java    | 18 +++++++++----
 .../impl/ProxyTicketSerializerTest.java            | 13 +++++++---
 .../impl/ServiceTicketSerializerTest.java          | 21 ++++++++++-----
 18 files changed, 142 insertions(+), 60 deletions(-)

diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractValidationAction.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractValidationAction.java
index 8b30e0c3e..3a4d5a214 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractValidationAction.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractValidationAction.java
@@ -172,7 +172,7 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
         // For now this is using the older wrapper approach to guarding a live map to maintain the map insertion order.
         final Map<String,Collection<String>> result = Collections.unmodifiableMap(classifiedMessages);
         assert result != null;
-        return result;                
+        return result;
     }
     
     /**
diff --git a/idp-cas-api/src/main/java/net/shibboleth/idp/cas/protocol/TicketValidationResponse.java b/idp-cas-api/src/main/java/net/shibboleth/idp/cas/protocol/TicketValidationResponse.java
index 7d161c152..83d2c6101 100644
--- a/idp-cas-api/src/main/java/net/shibboleth/idp/cas/protocol/TicketValidationResponse.java
+++ b/idp-cas-api/src/main/java/net/shibboleth/idp/cas/protocol/TicketValidationResponse.java
@@ -82,7 +82,9 @@ public class TicketValidationResponse extends AbstractProtocolResponse {
      * @return immutable collection of user attributes
      */
     @Nonnull @NonnullElements @NotLive @Unmodifiable public Collection<Attribute> getAttributes() {
-        return Collections.unmodifiableList(attributes);
+        final Collection<Attribute> result = Collections.unmodifiableList(attributes);
+        assert result!=null;
+        return result;
     }
 
     /**
@@ -118,7 +120,9 @@ public class TicketValidationResponse extends AbstractProtocolResponse {
      * @return immutable list of proxies traversed in order of most recent to last recent
      */
     @Nonnull @NonnullElements @NotLive @Unmodifiable public List<String> getProxies() {
-        return Collections.unmodifiableList(proxies);
+        final List<String> result =  Collections.unmodifiableList(proxies);
+        assert result!=null;
+        return result;
     }
 
     /**
diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/GrantProxyTicketAction.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/GrantProxyTicketAction.java
index 949910c19..0bc35b5fe 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/GrantProxyTicketAction.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/GrantProxyTicketAction.java
@@ -191,9 +191,11 @@ public class GrantProxyTicketAction extends AbstractCASProtocolAction<ProxyTicke
         assert ptr != null && pCfg != null && sCfg != null;
         try {
             log.debug("{} Granting proxy ticket for {}", getLogPrefix(), ptr.getTargetService());
+            final Instant then =Instant.now().plus(pCfg.getTicketValidityPeriod(profileRequestContext));
+            assert then != null;
             pt = casTicketService.createProxyTicket(
                     sCfg.getIdGenerator().generateIdentifier(),
-                    Instant.now().plus(pCfg.getTicketValidityPeriod(profileRequestContext)),
+                    then,
                     pgt,
                     ptr.getTargetService());
         } catch (final RuntimeException e) {
diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/GrantServiceTicketAction.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/GrantServiceTicketAction.java
index fb2c4303b..b2a6bef4d 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/GrantServiceTicketAction.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/GrantServiceTicketAction.java
@@ -223,10 +223,11 @@ public class GrantServiceTicketAction extends AbstractCASProtocolAction<ServiceT
                 state.setConsentedAttributeIds(attributeCtx.getIdPAttributes().keySet());
             }
             
-            assert securityConfig != null;
+            final Instant then = Instant.now().plus(lCfg.getTicketValidityPeriod(profileRequestContext)); 
+            assert securityConfig != null && then != null;
             ticket = casTicketService.createServiceTicket(
                     securityConfig.getIdGenerator().generateIdentifier(),
-                    Instant.now().plus(lCfg.getTicketValidityPeriod(profileRequestContext)),
+                    then,
                     stReq.getService(),
                     state,
                     stReq.isRenew());
diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/ValidateProxyCallbackAction.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/ValidateProxyCallbackAction.java
index ce8e76c57..23ab1466b 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/ValidateProxyCallbackAction.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/ValidateProxyCallbackAction.java
@@ -150,7 +150,8 @@ public class ValidateProxyCallbackAction
         
         @Nonnull final IdentifierGenerationStrategy pgtGenerator = sCfg.getIdGenerator();
         @Nonnull final IdentifierGenerationStrategy pgtIOUGenerator = vCfg.getPGTIOUGenerator(profileRequestContext);
-        @Nonnull final Instant expiration = Instant.now().plus(vCfg.getTicketValidityPeriod(profileRequestContext));
+        final Instant expiration = Instant.now().plus(vCfg.getTicketValidityPeriod(profileRequestContext));
+        assert expiration!=null;
         @Nonnull final String pgtId = pgtGenerator.generateIdentifier();
         final String pgtUrl = request.getPgtUrl();
         assert pgtUrl != null;
diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/proxy/impl/HttpClientProxyValidator.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/proxy/impl/HttpClientProxyValidator.java
index 30e4028b6..1083ae0b3 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/proxy/impl/HttpClientProxyValidator.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/proxy/impl/HttpClientProxyValidator.java
@@ -208,6 +208,7 @@ public class HttpClientProxyValidator implements ProxyValidator {
         } else {
             entityID = service.getName();
         }
+        assert entityID!=null;
         final CriteriaSet criteria = new CriteriaSet(
                 new EntityIdCriterion(entityID),
                 new EntityRoleCriterion(SPSSODescriptor.DEFAULT_ELEMENT_NAME),
diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/service/impl/DefaultServiceComparator.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/service/impl/DefaultServiceComparator.java
index b26a96f45..2330759bd 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/service/impl/DefaultServiceComparator.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/service/impl/DefaultServiceComparator.java
@@ -35,7 +35,11 @@ public class DefaultServiceComparator extends net.shibboleth.idp.cas.service.Def
 
     /** Creates a new instance that ignores <em>;jsessionid=value</em>. */
     public DefaultServiceComparator() {
-        DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), "cas-protocol.xml",
+        final Class<? extends DefaultServiceComparator> claz = getClass();
+        assert claz!=null;
+        final String className = claz.getName();
+        assert className!=null;
+        DeprecationSupport.warn(ObjectType.CLASS, className, "cas-protocol.xml",
                 "net.shibboleth.idp.cas.service.DefaultServiceComparator");
     }
 
@@ -46,7 +50,11 @@ public class DefaultServiceComparator extends net.shibboleth.idp.cas.service.Def
      */
     public DefaultServiceComparator(@Nonnull final String ... parameterNames) {
         super(parameterNames);
-        DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), "cas-protocol.xml",
+        final Class<? extends DefaultServiceComparator> claz = getClass();
+        assert claz!=null;
+        final String className = claz.getName();
+        assert className!=null;
+        DeprecationSupport.warn(ObjectType.CLASS, className, "cas-protocol.xml",
                 "net.shibboleth.idp.cas.service.DefaultServiceComparator");
     }
     
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASDateTimeAttributeTranscoderTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASDateTimeAttributeTranscoderTest.java
index dfe94e1e9..4a8dc65a3 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASDateTimeAttributeTranscoderTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASDateTimeAttributeTranscoderTest.java
@@ -54,10 +54,10 @@ public class CASDateTimeAttributeTranscoderTest {
 
     private AttributeTranscoderRegistryImpl registry;
     
-    private final static String ATTR_ID = "foo";
-    private final static String ATTR_NAME = "bar";
-    private final static String STRING_SECS = "1659979872";
-    private final static String STRING_ISO = "2022-08-08T17:31:12.969Z";
+    @Nonnull private final static String ATTR_ID = "foo";
+    @Nonnull private final static String ATTR_NAME = "bar";
+    @Nonnull private final static String STRING_SECS = "1659979872";
+    @Nonnull private final static String STRING_ISO = "2022-08-08T17:31:12.969Z";
 
     @BeforeClass public void setUp() throws ComponentInitializationException {
         
@@ -142,8 +142,10 @@ public class CASDateTimeAttributeTranscoderTest {
     }
     
     @Test public void single() throws Exception {
+        final Instant instant =Instant.parse(STRING_ISO);
+        assert instant!=null;
         final List<IdPAttributeValue> values =
-                List.of(new ByteAttributeValue(new byte[] {1, 2, 3,}), new DateTimeAttributeValue(Instant.parse(STRING_ISO)));
+                List.of(new ByteAttributeValue(new byte[] {1, 2, 3,}), new DateTimeAttributeValue(instant));
 
         final IdPAttribute inputAttribute = new IdPAttribute(ATTR_ID);
         inputAttribute.setValues(values);
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/AbstractFlowActionTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/AbstractFlowActionTest.java
index 8afc9b648..f01e012e9 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/AbstractFlowActionTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/AbstractFlowActionTest.java
@@ -104,7 +104,9 @@ public abstract class AbstractFlowActionTest extends AbstractTestNGSpringContext
     }
 
     @Nonnull protected static Instant expiry() {
-        return Instant.now().plusSeconds(30);
+        final Instant result = Instant.now().plusSeconds(30);
+        assert result!=null;
+        return result;
     }
 
     @Nonnull protected String generateServiceTicketId() {
@@ -120,7 +122,9 @@ public abstract class AbstractFlowActionTest extends AbstractTestNGSpringContext
     }
 
     @Nonnull protected ServiceTicket createServiceTicket(@Nonnull final String service, final boolean renew) {
-        final TicketState state = new TicketState(TEST_SESSION_ID, TEST_PRINCIPAL_NAME, Instant.now(), "Password");
+        final Instant now=Instant.now();
+        assert now!=null;
+        final TicketState state = new TicketState(TEST_SESSION_ID, TEST_PRINCIPAL_NAME, now, "Password");
         return ticketService.createServiceTicket(generateServiceTicketId(), expiry(), service, state, renew);
     }
 
@@ -151,7 +155,7 @@ public abstract class AbstractFlowActionTest extends AbstractTestNGSpringContext
      */
     public static class MockDataSealerKeyStrategy implements DataSealerKeyStrategy {
         /** Static key. */
-        private final SecretKey key;
+        @Nonnull private final SecretKey key;
 
         /**
          * Constructor.
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateProxyCallbackActionTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateProxyCallbackActionTest.java
index b92e76f98..83a3465a9 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateProxyCallbackActionTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateProxyCallbackActionTest.java
@@ -22,6 +22,7 @@ import java.security.cert.CertificateException;
 import java.time.Instant;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 
 import net.shibboleth.idp.cas.config.ValidateConfiguration;
 import net.shibboleth.idp.cas.protocol.ProtocolError;
@@ -29,6 +30,7 @@ import net.shibboleth.idp.cas.protocol.TicketValidationRequest;
 import net.shibboleth.idp.cas.protocol.TicketValidationResponse;
 import net.shibboleth.idp.cas.proxy.ProxyValidator;
 import net.shibboleth.idp.cas.ticket.ServiceTicket;
+import net.shibboleth.idp.cas.ticket.TicketService;
 import net.shibboleth.idp.cas.ticket.TicketState;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.springframework.webflow.execution.Event;
@@ -50,9 +52,10 @@ public class ValidateProxyCallbackActionTest extends AbstractFlowActionTest {
     
     @Test
     public void testValidateProxySuccess() throws Exception {
-        @SuppressWarnings("null")
+        final TicketService ts = ticketService;
+        assert ts!=null;
         final ValidateProxyCallbackAction action = new ValidateProxyCallbackAction(
-                mockProxyAuthenticator((Exception) nullObj), ticketService);
+                mockProxyAuthenticator((Exception) nullObj), ts);
         action.initialize();
         final RequestContext context = newRequestContext("https://test.example.org/");
         assertNull(action.execute(context));
@@ -63,19 +66,23 @@ public class ValidateProxyCallbackActionTest extends AbstractFlowActionTest {
 
     @Test
     public void testValidateProxyFailure() throws Exception {
+        final TicketService ts = ticketService;
+        assert ts!=null;
         final ValidateProxyCallbackAction action = new ValidateProxyCallbackAction(
-                mockProxyAuthenticator(new CertificateException()), ticketService);
+                mockProxyAuthenticator(new CertificateException()), ts);
         action.initialize();
         final  Event event =  action.execute(newRequestContext("https://test.example.org/"));
         assert event != null;
         assertEquals(event.getId(),ProtocolError.ProxyCallbackAuthenticationFailure.name());
     }
 
-    @Nonnull private static ProxyValidator mockProxyAuthenticator(@Nonnull final Exception toBeThrown)
+    @SuppressWarnings("null")
+    @Nonnull private static ProxyValidator mockProxyAuthenticator(@Nullable final Exception toBeThrown)
             throws Exception {
         final ProxyValidator validator = mock(ProxyValidator.class);
         assert validator!= null;
         if (toBeThrown != null) {
+            // We cannot exbed the any calls below - there is serious magicke in the order
             doThrow(toBeThrown).when(validator).validate(any(ProfileRequestContext.class), any(URI.class));
         }
         return validator;
@@ -84,8 +91,10 @@ public class ValidateProxyCallbackActionTest extends AbstractFlowActionTest {
     @Nonnull private static RequestContext newRequestContext(final String pgtURL) {
         final String service = "https://test.example.com/";
         final String ticketId = "ST-123-ABCCEF";
-        final ServiceTicket st = new ServiceTicket(ticketId, service, Instant.now(), false);
-        st.setTicketState(new TicketState("SessionID-123", "bob", Instant.now(), "bob"));
+        final Instant now = Instant.now();
+        assert now!=null;
+        final ServiceTicket st = new ServiceTicket(ticketId, service, now, false);
+        st.setTicketState(new TicketState("SessionID-123", "bob", now, "bob"));
         final TicketValidationRequest request = new TicketValidationRequest(service, ticketId);
         request.setPgtUrl(pgtURL);
         final RequestContext context = new TestContextBuilder(ValidateConfiguration.PROFILE_ID)
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateTicketActionTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateTicketActionTest.java
index a23cc9f8f..ddd6db19d 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateTicketActionTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateTicketActionTest.java
@@ -76,9 +76,13 @@ public class ValidateTicketActionTest extends AbstractFlowActionTest {
     @Test
     public void testTicketExpired() throws Exception {
         final int ticketTTLMillis = 10;
-        final TicketState state = new TicketState(TEST_SESSION_ID, TEST_PRINCIPAL_NAME, Instant.now(), "Password");
+        final Instant now = Instant.now();
+        assert now!=null;
+        final Instant then = now.plusMillis(ticketTTLMillis);
+        assert then != null;
+        final TicketState state = new TicketState(TEST_SESSION_ID, TEST_PRINCIPAL_NAME, now, "Password");
         final ServiceTicket ticket = ticketService.createServiceTicket(
-            generateServiceTicketId(), Instant.now().plusMillis(ticketTTLMillis), TEST_SERVICE, state, false);
+            generateServiceTicketId(), then, TEST_SERVICE, state, false);
         final RequestContext context = new TestContextBuilder(ValidateConfiguration.PROFILE_ID)
                 .addProtocolContext(new TicketValidationRequest(TEST_SERVICE, ticket.getId()), null)
                 .addRelyingPartyContext(ticket.getService(), true, new ValidateConfiguration())
@@ -90,6 +94,7 @@ public class ValidateTicketActionTest extends AbstractFlowActionTest {
         assertEquals(event.getId(), ProtocolError.TicketExpired.name());
     }
 
+    @SuppressWarnings("null")
     @Test
     public void testTicketRetrievalError() throws Exception {
         final TicketService throwingTicketService = mock(TicketService.class);
@@ -148,6 +153,7 @@ public class ValidateTicketActionTest extends AbstractFlowActionTest {
     }
 
     private static ValidateTicketAction newAction(final TicketService service) {
+        assert service!=null;
         final ValidateTicketAction action = new ValidateTicketAction(service);
         try {
             action.initialize();
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/service/impl/MetadataServiceRegistryTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/service/impl/MetadataServiceRegistryTest.java
index 5ec95adab..25bf6c655 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/service/impl/MetadataServiceRegistryTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/service/impl/MetadataServiceRegistryTest.java
@@ -18,7 +18,6 @@
 package net.shibboleth.idp.cas.service.impl;
 
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 
 import java.time.Duration;
@@ -91,7 +90,9 @@ public class MetadataServiceRegistryTest {
         final ParserPool pool = XMLObjectProviderRegistrySupport.getParserPool();
         assert pool != null;
         metadataResolver.setParserPool(pool);
-        metadataResolver.setMaxRefreshDelay(Duration.ofSeconds(500));
+        final Duration fiveHundredSeconds =Duration.ofSeconds(500);
+        assert fiveHundredSeconds!=null;
+        metadataResolver.setMaxRefreshDelay(fiveHundredSeconds);
         metadataResolver.setId("cas");
         metadataResolver.setIndexes(Collections.<MetadataIndex>singleton(new EndpointMetadataIndex(
                 new MetadataServiceRegistry.LoginEndpointPredicate())));
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/session/impl/CASSPSessionSerializerTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/session/impl/CASSPSessionSerializerTest.java
index b4132e937..f285c6c70 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/session/impl/CASSPSessionSerializerTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/session/impl/CASSPSessionSerializerTest.java
@@ -27,14 +27,21 @@ import java.time.Instant;
 @SuppressWarnings("javadoc")
 public class CASSPSessionSerializerTest {
 
-    private CASSPSessionSerializer serializer = new CASSPSessionSerializer(Duration.ZERO);
+    private final CASSPSessionSerializer serializer;
 
+    CASSPSessionSerializerTest() {
+        final Duration zero = Duration.ZERO;
+        assert zero!=null;
+        serializer = new CASSPSessionSerializer(zero);
+    }
     @Test
     public void testSerializeDeserialize() throws Exception{
-        final Instant exp = Instant.ofEpochMilli(1410539474000000000L);
+        final Instant exp   = Instant.ofEpochMilli(1410539474000000000L);
+        final Instant other = Instant.ofEpochMilli(1410532279838046000L);
+        assert exp!=null&&other!=null;
         final CASSPSession original = new CASSPSession(
                 "https://foo.example.com/shibboleth",
-                Instant.ofEpochMilli(1410532279838046000L),
+                other,
                 exp,
                 "ST-1234126-ABC1346DEADBEEF");
         final String serialized = serializer.serialize(original);
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/impl/EncodingTicketServiceTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/impl/EncodingTicketServiceTest.java
index a05bc01f7..523b4cd06 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/impl/EncodingTicketServiceTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/impl/EncodingTicketServiceTest.java
@@ -104,9 +104,12 @@ public class EncodingTicketServiceTest {
 
     @Test
     public void testCreateRemoveServiceTicketInvalid() throws Exception {
+        final Instant expiry = Instant.now().plusSeconds(5);
+        final String nowString = String.valueOf(System.currentTimeMillis());
+        assert expiry!=null && nowString!=null;
         final ServiceTicket st1 = ticketService.createServiceTicket(
-                String.valueOf(System.currentTimeMillis()),
-                Instant.now().plusSeconds(5),
+                nowString,
+                expiry,
                 "https://www.example.com/s2/",
                 newState("bartholomew"),
                 true);
@@ -122,6 +125,7 @@ public class EncodingTicketServiceTest {
                 + "8m2!3d37.3554696!4d-80.537265";
         final Instant expiry = Instant.now().plusSeconds(5);
         final String id = String.valueOf(System.currentTimeMillis());
+        assert expiry!=null && id!=null;
         final ServiceTicket st1 = ticketService.createServiceTicket(id, expiry, service, state, true);
         assertNotNull(st1);
         assertTrue(st1.getId().matches("ST-[A-Za-z0-9]+-*"));
@@ -157,7 +161,7 @@ public class EncodingTicketServiceTest {
         final String service = "https://www.example.com/s2/";
         final Instant expiry = Instant.now().plusSeconds(5);
         final String id = String.valueOf(System.currentTimeMillis());
-        assert id != null && expiry!=null;
+        assert id != null && expiry!=null && pgt!=null;
         final ProxyTicket pt1 = ticketService.createProxyTicket(id, expiry, pgt, service);
         assert pt1 != null;
         assertNull(ticketService.removeProxyTicket("PT-123"));
@@ -168,9 +172,12 @@ public class EncodingTicketServiceTest {
         final String principal = "aleph";
         final String serviceUrl = "https://www.example.com/service1";
         final String pgtUrl = "https://www.example.com/pgt1";
+        final Instant then = Instant.now().plusSeconds(5);
+        final String nowString = String.valueOf(System.currentTimeMillis()); 
+        assert then != null && nowString!=null;;
         final ServiceTicket st = ticketService.createServiceTicket(
-            String.valueOf(System.currentTimeMillis()),
-            Instant.now().plusSeconds(5),
+            nowString,
+            then,
             serviceUrl,
             newState(principal),
             true);
@@ -197,16 +204,19 @@ public class EncodingTicketServiceTest {
         assertNotNull(ticketService.fetchProxyGrantingTicket(pgt.getId()));
     }
 
-    private TicketState newState(final String principal) {
-        return new TicketState(sessionIdGenerator.generateIdentifier(), principal,
-                Instant.now().truncatedTo(ChronoUnit.MILLIS), "authn/Password");
+    @Nonnull private TicketState newState(@Nonnull final String principal) {
+        final Instant truncatedNow = Instant.now().truncatedTo(ChronoUnit.MILLIS);
+        assert truncatedNow!=null;
+        return new TicketState(sessionIdGenerator.generateIdentifier(), principal, truncatedNow, "authn/Password");
     }
 
-    private ProxyGrantingTicket newPGT(@Nonnull final TicketState state, @Nonnull final String service) {
+    @Nonnull private ProxyGrantingTicket newPGT(@Nonnull final TicketState state, @Nonnull final String service) {
+        final Instant then = Instant.now().plusSeconds(300);
+        assert then != null;
         final ProxyGrantingTicket pgt = new ProxyGrantingTicket(
             pgtIdGenerator.generateIdentifier(),
             service,
-            Instant.now().plusSeconds(300),
+            then,
             service + "/proxy",
             "PGT-12345");
         pgt.setTicketState(state);
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/impl/SimpleTicketServiceTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/impl/SimpleTicketServiceTest.java
index d65410181..d55c94cdf 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/impl/SimpleTicketServiceTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/impl/SimpleTicketServiceTest.java
@@ -31,6 +31,8 @@ import static org.testng.Assert.*;
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
 
+import javax.annotation.Nonnull;
+
 /**
  * Unit test for {@link SimpleTicketService} class.
  *
@@ -113,16 +115,16 @@ public class SimpleTicketServiceTest {
         assertNull(ticketService.removeProxyTicket(pt.getId()));
     }
 
-    private ServiceTicket createServiceTicket() {
+    @Nonnull private ServiceTicket createServiceTicket() {
         return ticketService.createServiceTicket(
                 new TicketIdentifierGenerationStrategy("ST", 25).generateIdentifier(),
                 expiry(),
                 TEST_SERVICE,
-                new TicketState(TEST_SESSION_ID, "bob", Instant.now().truncatedTo(ChronoUnit.MILLIS), "Password"),
+                new TicketState(TEST_SESSION_ID, "bob", expiry(), "Password"),
                 false);
     }
 
-    private ProxyGrantingTicket createProxyGrantingTicket() {
+    @Nonnull private ProxyGrantingTicket createProxyGrantingTicket() {
         return ticketService.createProxyGrantingTicket(
                 new TicketIdentifierGenerationStrategy("PGT", 50).generateIdentifier(),
                 expiry(),
@@ -130,7 +132,9 @@ public class SimpleTicketServiceTest {
                 TEST_PGTURL);
     }
 
-    private static Instant expiry() {
-        return Instant.now().plusSeconds(10).truncatedTo(ChronoUnit.MILLIS);
+    @Nonnull private static Instant expiry() {
+        final Instant result = Instant.now().plusSeconds(10).truncatedTo(ChronoUnit.MILLIS);
+        assert result != null;
+        return result;
     }
 }
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ProxyGrantingTicketSerializerTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ProxyGrantingTicketSerializerTest.java
index 19261fc7d..961074ac5 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ProxyGrantingTicketSerializerTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ProxyGrantingTicketSerializerTest.java
@@ -26,6 +26,8 @@ import static org.testng.Assert.*;
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
 
+import javax.annotation.Nonnull;
+
 /**
  * Unit test for {@link ProxyGrantingTicketSerializer}.
  */
@@ -39,7 +41,7 @@ public class ProxyGrantingTicketSerializerTest {
         final ProxyGrantingTicket pgt1 = new ProxyGrantingTicket(
                 "ST-0123456789-9d22c36953a31fd12f12d30d76b344d3",
                 "https://nobody.example.org",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS),
+                expiry(),
                 "https://proxy1.example.org",
                 null);
         final String serialized = serializer.serialize(pgt1);
@@ -57,11 +59,11 @@ public class ProxyGrantingTicketSerializerTest {
         final ProxyGrantingTicket pgt1 = new ProxyGrantingTicket(
                 "ST-0123456789-fbca86ba09d1be7ec3ac17e6f372be87",
                 "https://nobody.example.org",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS),
+                expiry(),
                 "https://proxy2.example.org",
                 null);
         pgt1.setTicketState(new TicketState("idpsess-1e663b80e6c6b2b7ae778cb3ea265", "bob",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS), "Password"));
+                expiry(), "Password"));
         final String serialized = serializer.serialize(pgt1);
         final ProxyGrantingTicket pgt2 = serializer.deserialize(1, "notused", pgt1.getId(), serialized, null);
         assertEquals(pgt2.getId(), pgt1.getId());
@@ -77,11 +79,11 @@ public class ProxyGrantingTicketSerializerTest {
         final ProxyGrantingTicket pgt1 = new ProxyGrantingTicket(
                 "ST-0123456789-fbca86ba09d1be7ec3ac17e6f372be87",
                 "https://nobody.example.org",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS),
+                expiry(),
                 "https://proxy3.example.org",
                 "PGT-0987654321-0040c390cf67e571c7e12fcc78fc0cb3");
         pgt1.setTicketState(new TicketState("idpsess-6d986af1280b7f52f9e7da434cfd0", "bob",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS), "Password"));
+                expiry(), "Password"));
         final String serialized = serializer.serialize(pgt1);
         final ProxyGrantingTicket pgt2 = serializer.deserialize(1, "notused", pgt1.getId(), serialized, null);
         assertEquals(pgt2.getId(), pgt1.getId());
@@ -92,4 +94,10 @@ public class ProxyGrantingTicketSerializerTest {
         assertEquals(pgt2.getTicketState(), pgt1.getTicketState());
     }
     
+    @Nonnull private static Instant expiry() {
+        final Instant result = Instant.now().plusSeconds(10).truncatedTo(ChronoUnit.MILLIS);
+        assert result != null;
+        return result;
+    }
+
 }
\ No newline at end of file
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ProxyTicketSerializerTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ProxyTicketSerializerTest.java
index fb8de7fb8..5f2f6e11c 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ProxyTicketSerializerTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ProxyTicketSerializerTest.java
@@ -26,6 +26,8 @@ import static org.testng.Assert.*;
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
 
+import javax.annotation.Nonnull;
+
 /**
  * Unit test for {@link ProxyTicketSerializer}.
  */
@@ -39,7 +41,7 @@ public class ProxyTicketSerializerTest {
         final ProxyTicket pt1 = new ProxyTicket(
                 "ST-0123456789-6027f6e93c11b1f587857ee0e7689c27",
                 "https://nobody.example.org",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS),
+                expiry(),
                 "PGT-0123456789-87182857dcbc70f8aa2e0ec87ec3e707");
         final String serialized = serializer.serialize(pt1);
         final ProxyTicket pt2 = serializer.deserialize(1, "notused", pt1.getId(), serialized, null);
@@ -55,10 +57,10 @@ public class ProxyTicketSerializerTest {
         final ProxyTicket pt1 = new ProxyTicket(
                 "ST-0123456789-e1e212143527d57053e7a72d75b3ccd6",
                 "https://nobody.example.org",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS),
+                expiry(),
                 "PGT-0123456789-c0dddd0f73b9494f7fe0b549e8c28002");
         pt1.setTicketState(new TicketState("idpsess-6ebae421b142adb35a3a6303116c3f", "bob",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS), "Password"));
+                expiry(), "Password"));
         final String serialized = serializer.serialize(pt1);
         final ProxyTicket pt2 = serializer.deserialize(1, "notused", pt1.getId(), serialized, null);
         assertEquals(pt2.getId(), pt1.getId());
@@ -67,4 +69,9 @@ public class ProxyTicketSerializerTest {
         assertEquals(pt2.getPgtId(), pt1.getPgtId());
         assertEquals(pt2.getTicketState(), pt1.getTicketState());
     }
+    @Nonnull private static Instant expiry() {
+        final Instant result = Instant.now().plusSeconds(10).truncatedTo(ChronoUnit.MILLIS);
+        assert result != null;
+        return result;
+    }
 }
\ No newline at end of file
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ServiceTicketSerializerTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ServiceTicketSerializerTest.java
index 85c86aa4c..b62aa2409 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ServiceTicketSerializerTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/ticket/serialization/impl/ServiceTicketSerializerTest.java
@@ -28,6 +28,8 @@ import static org.testng.Assert.*;
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
 
+import javax.annotation.Nonnull;
+
 /**
  * Unit test for {@link ServiceTicketSerializer}.
  */
@@ -41,7 +43,7 @@ public class ServiceTicketSerializerTest {
         final ServiceTicket st1 = new ServiceTicket(
                 "ST-0123456789-616ea1550eef862761e5931bdccaaba0",
                 "https://nobody.example.org",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS),
+                expiry(),
                 true);
         final String serialized = serializer.serialize(st1);
         final ServiceTicket st2 = serializer.deserialize(1, "notused", st1.getId(), serialized, null);
@@ -57,10 +59,10 @@ public class ServiceTicketSerializerTest {
         final ServiceTicket st1 = new ServiceTicket(
                 "ST-0123456789-e6342d467a4414e599aa3c323528e96f",
                 "https://nobody.example.org",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS),
+                expiry(),
                 true);
         st1.setTicketState(new TicketState("idpsess-d2db22058dc178d3b917363859e", "bob",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS), "Password"));
+                expiry(), "Password"));
         final String serialized = serializer.serialize(st1);
         final ServiceTicket st2 = serializer.deserialize(1, "notused", st1.getId(), serialized, null);
         assertEquals(st2.getId(), st1.getId());
@@ -75,10 +77,10 @@ public class ServiceTicketSerializerTest {
         final ServiceTicket st1 = new ServiceTicket(
                 "ST-0123456789-e6342d467a4414e599aa3c323528e96f",
                 "https://nobody.example.org",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS),
+                expiry(),
                 true);
         final TicketState state = new TicketState("idpsess-d2db22058dc178d3b917363859e", "bob",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS), "Password");
+                expiry(), "Password");
         state.setConsentedAttributeIds(CollectionSupport.setOf("foo", "bar"));
         st1.setTicketState(state);
         final String serialized = serializer.serialize(st1);
@@ -95,10 +97,10 @@ public class ServiceTicketSerializerTest {
         final ServiceTicket st1 = new ServiceTicket(
                 "ST-0123456789-e6342d467a4414e599aa3c323528e96f",
                 "https://nobody.example.org",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS),
+                expiry(),
                 true);
         final TicketState state = new TicketState("idpsess-d2db22058dc178d3b917363859e", "bob",
-                Instant.now().truncatedTo(ChronoUnit.MILLIS), "Password");
+                expiry(), "Password");
         state.setConsentedAttributeIds(CollectionSupport.emptySet());
         st1.setTicketState(state);
         final String serialized = serializer.serialize(st1);
@@ -109,5 +111,10 @@ public class ServiceTicketSerializerTest {
         assertEquals(st2.isRenew(), st1.isRenew());
         assertEquals(st2.getTicketState(), st1.getTicketState());
     }
+    @Nonnull private static Instant expiry() {
+        final Instant result = Instant.now().plusSeconds(10).truncatedTo(ChronoUnit.MILLIS);
+        assert result != null;
+        return result;
+    }
 
 }
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list