[java-identity-provider] branch main updated: IDP-2069 Null handling

Rod Widdowson rdw at steadingsoftware.com
Mon Feb 27 09:21:32 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=9e70d65c2d40ae4cc078e58843f96c915a9b04e0

The following commit(s) were added to refs/heads/main by this push:
     new 9e70d65c2 IDP-2069 Null handling
9e70d65c2 is described below

commit 9e70d65c2d40ae4cc078e58843f96c915a9b04e0
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Mon Feb 27 09:21:26 2023 +0000

    IDP-2069 Null handling
    
    https://shibboleth.atlassian.net/browse/IDP-2069
    
    Cleanup idp-cas-impl tests
---
 .../impl/CASDateTimeAttributeTranscoderTest.java   | 30 ++++++++++------
 .../CASScopedStringAttributeTranscoderTest.java    | 35 ++++++++++++-------
 .../impl/CASStringAttributeTranscoderTest.java     | 40 ++++++++++++++--------
 .../idp/cas/flow/impl/AbstractFlowActionTest.java  | 23 +++++++------
 .../cas/flow/impl/BuildProxyChainActionTest.java   | 17 +++++----
 .../impl/BuildSAMLMetadataContextActionTest.java   | 24 ++++++++-----
 .../impl/CheckProxyAuthorizationActionTest.java    |  5 ++-
 .../cas/flow/impl/GrantProxyTicketActionTest.java  |  9 ++---
 .../flow/impl/GrantServiceTicketActionTest.java    |  8 +++--
 .../idp/cas/flow/impl/TestContextBuilder.java      | 24 +++++++------
 .../flow/impl/ValidateProxyCallbackActionTest.java | 19 ++++++----
 .../idp/cas/flow/impl/ValidateRenewActionTest.java | 10 ++++--
 .../cas/flow/impl/ValidateTicketActionTest.java    | 32 ++++++++++++-----
 .../service/impl/MetadataServiceRegistryTest.java  | 24 ++++++++-----
 .../cas/ticket/impl/EncodingTicketServiceTest.java | 33 ++++++++++++------
 .../cas/ticket/impl/SimpleTicketServiceTest.java   | 27 ++++++++++-----
 16 files changed, 234 insertions(+), 126 deletions(-)

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 4b569ea08..dfe94e1e9 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
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.Nonnull;
+
 import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
@@ -42,6 +44,7 @@ import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistry
 import net.shibboleth.idp.cas.attribute.AbstractCASAttributeTranscoder;
 import net.shibboleth.idp.cas.attribute.Attribute;
 import net.shibboleth.idp.cas.attribute.CASAttributeTranscoder;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
@@ -72,7 +75,7 @@ public class CASDateTimeAttributeTranscoderTest {
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset1.put(CASAttributeTranscoder.PROP_NAME, ATTR_NAME);
         
-        registry.setTranscoderRegistry(Collections.singletonList(new TranscodingRule(ruleset1)));
+        registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset1)));
         registry.setApplicationContext(new MockApplicationContext());
         registry.initialize();
     }
@@ -88,10 +91,10 @@ public class CASDateTimeAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
-        
+        assert ruleset != null;
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -103,10 +106,10 @@ public class CASDateTimeAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(casAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.getTranscoder(ruleset).decode(null, casAttribute, ruleset);
-        
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_ID);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -116,12 +119,14 @@ public class CASDateTimeAttributeTranscoderTest {
         final List<IdPAttributeValue> values =
                 List.of(new ByteAttributeValue(new byte[] {1, 2, 3,}), new IdPAttributeValue() {
                     @Override
-                    public Object getNativeValue() {
+                    public @Nonnull Object getNativeValue() {
                         return intArray;
                     }
                     @Override
-                    public String getDisplayValue() {
-                        return intArray.toString();
+                    public @Nonnull String getDisplayValue() {
+                        final String result = intArray.toString();
+                        assert result != null;
+                        return result;
                     }
                 });
 
@@ -131,7 +136,8 @@ public class CASDateTimeAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
-        
+        assert ruleset != null;
+
         TranscoderSupport.getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
     
@@ -145,11 +151,12 @@ public class CASDateTimeAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
 
         final Collection<String> children = attr.getValues();
@@ -169,10 +176,11 @@ public class CASDateTimeAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(casAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.getTranscoder(ruleset).decode(null, casAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_ID);
         Assert.assertEquals(attr.getValues().size(), 1);
         Assert.assertEquals(((DateTimeAttributeValue)attr.getValues().get(0)).getValue(),
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java
index 73d9ed3fc..5b1f39a94 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASScopedStringAttributeTranscoderTest.java
@@ -25,6 +25,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.Nonnull;
+
 import net.shibboleth.idp.attribute.AttributeEncodingException;
 import net.shibboleth.idp.attribute.ByteAttributeValue;
 import net.shibboleth.idp.attribute.IdPAttribute;
@@ -39,6 +41,7 @@ import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistry
 import net.shibboleth.idp.cas.attribute.AbstractCASAttributeTranscoder;
 import net.shibboleth.idp.cas.attribute.Attribute;
 import net.shibboleth.idp.cas.attribute.CASAttributeTranscoder;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
@@ -78,7 +81,7 @@ public class CASScopedStringAttributeTranscoderTest {
         ruleset1.put(CASAttributeTranscoder.PROP_NAME, ATTR_NAME);
         ruleset1.put(CASScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER, DELIMITER);
         
-        registry.setTranscoderRegistry(Collections.singletonList(new TranscodingRule(ruleset1)));
+        registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset1)));
         registry.setApplicationContext(new MockApplicationContext());
         registry.initialize();
     }
@@ -94,10 +97,11 @@ public class CASScopedStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
-        
+        assert ruleset != null;
+
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -109,10 +113,11 @@ public class CASScopedStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(casAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.getTranscoder(ruleset).decode(null, casAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_ID);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -122,12 +127,14 @@ public class CASScopedStringAttributeTranscoderTest {
         final List<IdPAttributeValue> values =
                 Arrays.asList(new ByteAttributeValue(new byte[] {1, 2, 3,}), new IdPAttributeValue() {
                     @Override
-                    public Object getNativeValue() {
+                    public @Nonnull Object getNativeValue() {
                         return intArray;
                     }
                     @Override
-                    public String getDisplayValue() {
-                        return intArray.toString();
+                    public @Nonnull String getDisplayValue() {
+                        final String result = intArray.toString();
+                        assert result != null;
+                        return result;
                     }
                 });
 
@@ -154,11 +161,12 @@ public class CASScopedStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
 
         final Collection<String> children = attr.getValues();
@@ -178,10 +186,11 @@ public class CASScopedStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(casAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final IdPAttribute attr = TranscoderSupport.getTranscoder(ruleset).decode(null, casAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_ID);
         Assert.assertEquals(attr.getValues().size(), 1);
         
@@ -202,11 +211,12 @@ public class CASScopedStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
+        assert ruleset != null;
         
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
 
         final Collection<String> children = attr.getValues();
@@ -234,10 +244,11 @@ public class CASScopedStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(casAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
-        
+        assert ruleset != null;
+
         final IdPAttribute attr = TranscoderSupport.getTranscoder(ruleset).decode(null, casAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr != null;
         Assert.assertEquals(attr.getId(), ATTR_ID);
         Assert.assertEquals(attr.getValues().size(), 2);
 
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java
index f45816f44..e941bc8b0 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/attribute/transcoding/impl/CASStringAttributeTranscoderTest.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.annotation.Nonnull;
+
 import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
@@ -43,6 +45,7 @@ import net.shibboleth.idp.attribute.transcoding.impl.AttributeTranscoderRegistry
 import net.shibboleth.idp.cas.attribute.AbstractCASAttributeTranscoder;
 import net.shibboleth.idp.cas.attribute.Attribute;
 import net.shibboleth.idp.cas.attribute.CASAttributeTranscoder;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockApplicationContext;
 
@@ -73,7 +76,7 @@ public class CASStringAttributeTranscoderTest {
         ruleset1.put(AttributeTranscoderRegistry.PROP_TRANSCODER, transcoder);
         ruleset1.put(CASAttributeTranscoder.PROP_NAME, ATTR_NAME);
         
-        registry.setTranscoderRegistry(Collections.singletonList(new TranscodingRule(ruleset1)));
+        registry.setTranscoderRegistry(CollectionSupport.singletonList(new TranscodingRule(ruleset1)));
         registry.setApplicationContext(new MockApplicationContext());
         registry.initialize();
     }
@@ -89,10 +92,11 @@ public class CASStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
-        
+        assert ruleset != null;
+
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
-        Assert.assertNotNull(attr);
+        assert attr!= null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -107,7 +111,7 @@ public class CASStringAttributeTranscoderTest {
         
         final IdPAttribute attr = TranscoderSupport.getTranscoder(ruleset).decode(null, casAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr!= null;
         Assert.assertEquals(attr.getId(), ATTR_ID);
         Assert.assertTrue(attr.getValues().isEmpty());
     }
@@ -117,12 +121,14 @@ public class CASStringAttributeTranscoderTest {
         final List<IdPAttributeValue> values =
                 Arrays.asList(new ByteAttributeValue(new byte[] {1, 2, 3,}), new IdPAttributeValue() {
                     @Override
-                    public Object getNativeValue() {
+                    public @Nonnull Object getNativeValue() {
                         return intArray;
                     }
                     @Override
-                    public String getDisplayValue() {
-                        return intArray.toString();
+                    public @Nonnull String getDisplayValue() {
+                        final String result = intArray.toString();
+                        assert result!= null;
+                        return result;
                     }
                 });
 
@@ -132,7 +138,8 @@ public class CASStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
-        
+        assert ruleset != null;
+
         TranscoderSupport.getTranscoder(ruleset).encode(null, inputAttribute, Attribute.class, ruleset);
     }
     
@@ -146,11 +153,12 @@ public class CASStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(inputAttribute, Attribute.class);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
-        
+        assert ruleset != null;
+
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr!= null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
 
         final Collection<String> children = attr.getValues();
@@ -170,10 +178,11 @@ public class CASStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(casAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
-        
+        assert ruleset != null;
+
         final IdPAttribute attr = TranscoderSupport.getTranscoder(ruleset).decode(null, casAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr!= null;
         Assert.assertEquals(attr.getId(), ATTR_ID);
         Assert.assertEquals(attr.getValues().size(), 1);
         Assert.assertEquals(((StringAttributeValue)attr.getValues().get(0)).getValue().toString(), STRING_1);
@@ -196,7 +205,7 @@ public class CASStringAttributeTranscoderTest {
         final Attribute attr = TranscoderSupport.<Attribute>getTranscoder(ruleset).encode(
                 null, inputAttribute, Attribute.class, ruleset);
 
-        Assert.assertNotNull(attr);
+        assert attr!= null;
         Assert.assertEquals(attr.getName(), ATTR_NAME);
 
         final Collection<String> children = attr.getValues();
@@ -216,10 +225,11 @@ public class CASStringAttributeTranscoderTest {
         final Collection<TranscodingRule> rulesets = registry.getTranscodingRules(casAttribute);
         Assert.assertEquals(rulesets.size(), 1);
         final TranscodingRule ruleset = rulesets.iterator().next();
-        
+        assert ruleset != null;
+
         final IdPAttribute attr = TranscoderSupport.getTranscoder(ruleset).decode(null, casAttribute, ruleset);
         
-        Assert.assertNotNull(attr);
+        assert attr!= null;
         Assert.assertEquals(attr.getId(), ATTR_ID);
         Assert.assertEquals(attr.getValues().size(), 2);
         Assert.assertEquals(((StringAttributeValue)attr.getValues().get(0)).getValue().toString(), STRING_1);
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 fdb5615f2..8afc9b648 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
@@ -23,6 +23,7 @@ import java.time.Instant;
 import java.util.Arrays;
 import java.util.HashSet;
 
+import javax.annotation.Nonnull;
 import javax.crypto.SecretKey;
 import javax.crypto.spec.SecretKeySpec;
 import net.shibboleth.idp.authn.AuthenticationResult;
@@ -102,36 +103,36 @@ public abstract class AbstractFlowActionTest extends AbstractTestNGSpringContext
         return mockSession;
     }
 
-    protected static Instant expiry() {
+    @Nonnull protected static Instant expiry() {
         return Instant.now().plusSeconds(30);
     }
 
-    protected String generateServiceTicketId() {
+    @Nonnull protected String generateServiceTicketId() {
         return serviceTicketGenerator.generateIdentifier();
     }
 
-    protected String generateProxyTicketId() {
+    @Nonnull protected String generateProxyTicketId() {
         return proxyTicketGenerator.generateIdentifier();
     }
 
-    protected String generateProxyGrantingTicketId() {
+    @Nonnull protected String generateProxyGrantingTicketId() {
         return proxyGrantingTicketGenerator.generateIdentifier();
     }
 
-    protected ServiceTicket createServiceTicket(final String service, final boolean renew) {
+    @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");
         return ticketService.createServiceTicket(generateServiceTicketId(), expiry(), service, state, renew);
     }
 
-    protected ProxyTicket createProxyTicket(final ProxyGrantingTicket pgt, final String service) {
+    @Nonnull protected ProxyTicket createProxyTicket(@Nonnull final ProxyGrantingTicket pgt, @Nonnull final String service) {
         return ticketService.createProxyTicket(generateProxyTicketId(), expiry(), pgt, service);
-    }
+    } 
 
-    protected ProxyGrantingTicket createProxyGrantingTicket(final ServiceTicket st, final String pgtUrl) {
+    @Nonnull protected ProxyGrantingTicket createProxyGrantingTicket(@Nonnull final ServiceTicket st, @Nonnull final String pgtUrl) {
         return ticketService.createProxyGrantingTicket(generateProxyGrantingTicketId(), expiry(), st, pgtUrl);
     }
 
-    protected ProxyGrantingTicket createProxyGrantingTicket(final ProxyTicket pt, final String pgtUrl) {
+    @Nonnull protected ProxyGrantingTicket createProxyGrantingTicket(@Nonnull final ProxyTicket pt, @Nonnull final String pgtUrl) {
         return ticketService.createProxyGrantingTicket(generateProxyGrantingTicketId(), expiry(), pt, pgtUrl);
     }
 
@@ -162,12 +163,12 @@ public abstract class AbstractFlowActionTest extends AbstractTestNGSpringContext
         }
 
         /** {@inheritDoc} */
-        public Pair<String, SecretKey> getDefaultKey() throws KeyException {
+        public @Nonnull Pair<String, SecretKey> getDefaultKey() throws KeyException {
             return new Pair<>("default", key);
         }
 
         /** {@inheritDoc} */
-        public SecretKey getKey(final String s) throws KeyException {
+        public @Nonnull SecretKey getKey(final @Nonnull String s) throws KeyException {
             return key;
         }
     }
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildProxyChainActionTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildProxyChainActionTest.java
index 6218347f6..e9ba885be 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildProxyChainActionTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildProxyChainActionTest.java
@@ -17,6 +17,14 @@
 
 package net.shibboleth.idp.cas.flow.impl;
 
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNull;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.webflow.execution.Event;
+import org.springframework.webflow.execution.RequestContext;
+import org.testng.annotations.Test;
+
 import net.shibboleth.idp.cas.config.ProxyConfiguration;
 import net.shibboleth.idp.cas.protocol.ProtocolError;
 import net.shibboleth.idp.cas.protocol.TicketValidationRequest;
@@ -24,11 +32,6 @@ import net.shibboleth.idp.cas.protocol.TicketValidationResponse;
 import net.shibboleth.idp.cas.ticket.ProxyGrantingTicket;
 import net.shibboleth.idp.cas.ticket.ProxyTicket;
 import net.shibboleth.idp.cas.ticket.ServiceTicket;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.webflow.execution.RequestContext;
-import org.testng.annotations.Test;
-
-import static org.testng.Assert.*;
 
 /**
  * Unit test for {@link BuildProxyChainAction}.
@@ -87,6 +90,8 @@ public class BuildProxyChainActionTest extends AbstractFlowActionTest {
                 .addProtocolContext(request, response)
                 .addTicketContext(ptC)
                 .build();
-        assertEquals(action.execute(context).getId(), ProtocolError.BrokenProxyChain.name());
+        final  Event event =  action.execute(context);
+        assert event != null;
+        assertEquals(event.getId(), ProtocolError.BrokenProxyChain.name());
     }
 }
\ No newline at end of file
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildSAMLMetadataContextActionTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildSAMLMetadataContextActionTest.java
index 5ff5f06ff..7bc90cebb 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildSAMLMetadataContextActionTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/BuildSAMLMetadataContextActionTest.java
@@ -17,21 +17,25 @@
 
 package net.shibboleth.idp.cas.flow.impl;
 
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
 import java.util.List;
 import java.util.function.Function;
 
-import net.shibboleth.idp.cas.config.LoginConfiguration;
-import net.shibboleth.idp.cas.service.Service;
-import net.shibboleth.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
-
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.saml.common.messaging.context.SAMLMetadataContext;
 import org.opensaml.saml.metadata.EntityGroupName;
+import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.webflow.execution.RequestContext;
 import org.testng.annotations.Test;
 
-import static org.testng.Assert.*;
+import net.shibboleth.idp.cas.config.LoginConfiguration;
+import net.shibboleth.idp.cas.service.Service;
+import net.shibboleth.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
 
 /**
  * Unit test for {@link BuildSAMLMetadataContextAction}.
@@ -56,7 +60,9 @@ public class BuildSAMLMetadataContextActionTest extends AbstractFlowActionTest {
         assertNull(action.execute(context));
         final SAMLMetadataContext mdc = mdLookupFunction.apply(getProfileContext(context));
         assertNotNull(mdc);
-        final List<EntityGroupName> groups = mdc.getEntityDescriptor().getObjectMetadata().get(EntityGroupName.class);
+        final EntityDescriptor ed = mdc.getEntityDescriptor();
+        assert ed != null;
+        final List<EntityGroupName> groups = ed.getObjectMetadata().get(EntityGroupName.class);
         assertEquals(groups.size(), 1);
         assertEquals(groups.get(0).getName(), service.getGroup());
     }
@@ -70,8 +76,10 @@ public class BuildSAMLMetadataContextActionTest extends AbstractFlowActionTest {
                 .build();
         assertNull(action.execute(context));
         final SAMLMetadataContext mdc = mdLookupFunction.apply(getProfileContext(context));
-        assertNotNull(mdc);
-        final List<EntityGroupName> groups = mdc.getEntityDescriptor().getObjectMetadata().get(EntityGroupName.class);
+        assert mdc!=null;;
+        final EntityDescriptor ed = mdc.getEntityDescriptor();
+        assert ed != null;
+        final List<EntityGroupName> groups = ed.getObjectMetadata().get(EntityGroupName.class);
         assertTrue(groups.isEmpty());
     }
 }
\ No newline at end of file
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/CheckProxyAuthorizationActionTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/CheckProxyAuthorizationActionTest.java
index 638dfbd56..a7e436086 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/CheckProxyAuthorizationActionTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/CheckProxyAuthorizationActionTest.java
@@ -21,6 +21,7 @@ import net.shibboleth.idp.cas.config.LoginConfiguration;
 import net.shibboleth.idp.cas.protocol.ProtocolError;
 import net.shibboleth.idp.cas.service.Service;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.webflow.execution.Event;
 import org.springframework.webflow.execution.RequestContext;
 import org.testng.annotations.Test;
 
@@ -50,6 +51,8 @@ public class CheckProxyAuthorizationActionTest extends AbstractFlowActionTest {
         final RequestContext context = new TestContextBuilder(LoginConfiguration.PROFILE_ID)
                 .addServiceContext(new Service("https://serviceB.example.org/", "no-proxy", false))
                 .build();
-        assertEquals(action.execute(context).getId(), ProtocolError.ProxyNotAuthorized.name());
+        final  Event event =  action.execute(context);
+        assert event != null;
+        assertEquals(event.getId(), ProtocolError.ProxyNotAuthorized.name());
     }
 }
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/GrantProxyTicketActionTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/GrantProxyTicketActionTest.java
index 566e8b42b..14642bce8 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/GrantProxyTicketActionTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/GrantProxyTicketActionTest.java
@@ -51,10 +51,11 @@ public class GrantProxyTicketActionTest extends AbstractFlowActionTest {
                 .build();
         assertNull(action.execute(context));
         final ProxyTicketResponse response = action.getCASResponse(getProfileContext(context));
-        assertNotNull(response);
-        assertNotNull(response.getPt());
-        final ProxyTicket pt = ticketService.removeProxyTicket(response.getPt());
-        assertNotNull(pt);
+        assert response != null;
+        final String pts = response.getPt();
+        assert pts != null;
+        final ProxyTicket pt = ticketService.removeProxyTicket(pts);
+        assert pt!=null;
         assertEquals(pt.getId(), response.getPt());
         assertEquals(pt.getService(), service);
     }
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/GrantServiceTicketActionTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/GrantServiceTicketActionTest.java
index d3506f423..d5c658fa2 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/GrantServiceTicketActionTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/GrantServiceTicketActionTest.java
@@ -23,6 +23,8 @@ import net.shibboleth.idp.cas.config.LoginConfiguration;
 import net.shibboleth.idp.cas.protocol.ServiceTicketRequest;
 import net.shibboleth.idp.cas.protocol.ServiceTicketResponse;
 import net.shibboleth.idp.cas.ticket.ServiceTicket;
+import net.shibboleth.idp.cas.ticket.TicketState;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.webflow.execution.RequestContext;
 import org.testng.annotations.DataProvider;
@@ -67,10 +69,12 @@ public class GrantServiceTicketActionTest extends AbstractFlowActionTest {
         assertNotNull(response.getTicket());
         assertEquals(response.getService(), request.getService());
         final ServiceTicket ticket = ticketService.removeServiceTicket(response.getTicket());
-        assertNotNull(ticket);
+        assert ticket!=null;
         assertEquals(ticket.isRenew(), request.isRenew());
         assertEquals(ticket.getId(), response.getTicket());
         assertEquals(ticket.getService(), response.getService());
-        assertEquals(ticket.getTicketState().getPrincipalName(), TEST_PRINCIPAL_NAME);
+        final TicketState ts = ticket.getTicketState();
+        assert ts != null;
+        assertEquals(ts.getPrincipalName(), TEST_PRINCIPAL_NAME);
     }
 }
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/TestContextBuilder.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/TestContextBuilder.java
index 8ef88c5ba..92b65f319 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/TestContextBuilder.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/TestContextBuilder.java
@@ -30,6 +30,8 @@ import net.shibboleth.idp.session.context.SessionContext;
 import net.shibboleth.profile.config.ProfileConfiguration;
 import net.shibboleth.profile.context.RelyingPartyContext;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
@@ -46,34 +48,34 @@ import org.springframework.webflow.test.MockRequestContext;
 public class TestContextBuilder {
 
     /** Root of context tree for our tests. */
-    private ProfileRequestContext profileRequestContext = new ProfileRequestContext();
+    @Nonnull private ProfileRequestContext profileRequestContext = new ProfileRequestContext();
 
     public TestContextBuilder(final String profileId) {
         profileRequestContext.setProfileId(profileId);
     }
 
-    public TestContextBuilder addAuthenticationContext(final AuthenticationResult result) {
+    @Nonnull public TestContextBuilder addAuthenticationContext(final AuthenticationResult result) {
         final AuthenticationContext authnCtx = new AuthenticationContext();
         authnCtx.setAuthenticationResult(result);
         profileRequestContext.addSubcontext(authnCtx);
         return this;
     }
 
-    public TestContextBuilder addSessionContext(final IdPSession session) {
+    @Nonnull public TestContextBuilder addSessionContext(final IdPSession session) {
         final SessionContext sessionContext = new SessionContext();
         sessionContext.setIdPSession(session);
         profileRequestContext.addSubcontext(sessionContext);
         return this;
     }
 
-    public TestContextBuilder addSubjectContext(final String principal) {
+    @Nonnull public TestContextBuilder addSubjectContext(final String principal) {
         final SubjectContext subjectContext = new SubjectContext();
         subjectContext.setPrincipalName(principal);
         profileRequestContext.addSubcontext(subjectContext);
         return this;
     }
 
-    public TestContextBuilder addProtocolContext(final Object request, final Object response) {
+    @Nonnull public TestContextBuilder addProtocolContext(final Object request, final Object response) {
         final ProtocolContext<Object,Object> context = new ProtocolContext<>();
         context.setRequest(request);
         context.setResponse(response);
@@ -81,13 +83,13 @@ public class TestContextBuilder {
         return this;
     }
 
-    public TestContextBuilder addTicketContext(final Ticket ticket) {
-        final ProtocolContext<?,?> context = profileRequestContext.getSubcontext(ProtocolContext.class, true);
+    @Nonnull public TestContextBuilder addTicketContext(@Nonnull final Ticket ticket) {
+        final ProtocolContext<?,?> context = profileRequestContext.getOrCreateSubcontext(ProtocolContext.class);
         context.addSubcontext(new TicketContext(ticket));
         return this;
     }
 
-    public TestContextBuilder addRelyingPartyContext(
+    @Nonnull  public TestContextBuilder addRelyingPartyContext(
             final String serviceURL, final boolean verified, final ProfileConfiguration config) {
         final RelyingPartyContext rpc = new RelyingPartyContext();
         rpc.setVerified(verified);
@@ -97,13 +99,13 @@ public class TestContextBuilder {
         return this;
     }
 
-    public TestContextBuilder addServiceContext(final Service service) {
-        final ProtocolContext<?,?> context = profileRequestContext.getSubcontext(ProtocolContext.class, true);
+    @Nonnull public TestContextBuilder addServiceContext(@Nonnull final Service service) {
+        final ProtocolContext<?,?> context = profileRequestContext.getOrCreateSubcontext(ProtocolContext.class);
         context.addSubcontext(new ServiceContext(service));
         return this;
     }
 
-    public RequestContext build() {
+    @Nonnull public RequestContext build() {
         final MockRequestContext requestContext = new MockRequestContext();
         final MockExternalContext externalContext = new MockExternalContext();
         externalContext.setNativeRequest(new MockHttpServletRequest());
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 07788ba2a..b92e76f98 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
@@ -21,6 +21,8 @@ import java.net.URI;
 import java.security.cert.CertificateException;
 import java.time.Instant;
 
+import javax.annotation.Nonnull;
+
 import net.shibboleth.idp.cas.config.ValidateConfiguration;
 import net.shibboleth.idp.cas.protocol.ProtocolError;
 import net.shibboleth.idp.cas.protocol.TicketValidationRequest;
@@ -29,6 +31,7 @@ import net.shibboleth.idp.cas.proxy.ProxyValidator;
 import net.shibboleth.idp.cas.ticket.ServiceTicket;
 import net.shibboleth.idp.cas.ticket.TicketState;
 import org.opensaml.profile.context.ProfileRequestContext;
+import org.springframework.webflow.execution.Event;
 import org.springframework.webflow.execution.RequestContext;
 import org.testng.annotations.Test;
 
@@ -43,10 +46,13 @@ import static org.testng.Assert.*;
 @SuppressWarnings("javadoc")
 public class ValidateProxyCallbackActionTest extends AbstractFlowActionTest {
 
+    private Object nullObj;
+    
     @Test
     public void testValidateProxySuccess() throws Exception {
+        @SuppressWarnings("null")
         final ValidateProxyCallbackAction action = new ValidateProxyCallbackAction(
-                mockProxyAuthenticator(null), ticketService);
+                mockProxyAuthenticator((Exception) nullObj), ticketService);
         action.initialize();
         final RequestContext context = newRequestContext("https://test.example.org/");
         assertNull(action.execute(context));
@@ -60,21 +66,22 @@ public class ValidateProxyCallbackActionTest extends AbstractFlowActionTest {
         final ValidateProxyCallbackAction action = new ValidateProxyCallbackAction(
                 mockProxyAuthenticator(new CertificateException()), ticketService);
         action.initialize();
-        assertEquals(
-                action.execute(newRequestContext("https://test.example.org/")).getId(),
-                ProtocolError.ProxyCallbackAuthenticationFailure.name());
+        final  Event event =  action.execute(newRequestContext("https://test.example.org/"));
+        assert event != null;
+        assertEquals(event.getId(),ProtocolError.ProxyCallbackAuthenticationFailure.name());
     }
 
-    private static ProxyValidator mockProxyAuthenticator(final Exception toBeThrown)
+    @Nonnull private static ProxyValidator mockProxyAuthenticator(@Nonnull final Exception toBeThrown)
             throws Exception {
         final ProxyValidator validator = mock(ProxyValidator.class);
+        assert validator!= null;
         if (toBeThrown != null) {
             doThrow(toBeThrown).when(validator).validate(any(ProfileRequestContext.class), any(URI.class));
         }
         return validator;
     }
 
-    private static RequestContext newRequestContext(final String pgtURL) {
+    @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);
diff --git a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateRenewActionTest.java b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateRenewActionTest.java
index 04c6d6c05..d9562ddb4 100644
--- a/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateRenewActionTest.java
+++ b/idp-cas-impl/src/test/java/net/shibboleth/idp/cas/flow/impl/ValidateRenewActionTest.java
@@ -24,6 +24,7 @@ import net.shibboleth.idp.cas.ticket.ProxyGrantingTicket;
 import net.shibboleth.idp.cas.ticket.ProxyTicket;
 import net.shibboleth.idp.cas.ticket.ServiceTicket;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.webflow.execution.Event;
 import org.springframework.webflow.execution.RequestContext;
 import org.testng.annotations.Test;
 
@@ -49,7 +50,9 @@ public class ValidateRenewActionTest extends AbstractFlowActionTest {
                 .addProtocolContext(new TicketValidationRequest(TEST_SERVICE, ticket.getId()), null)
                 .addTicketContext(ticket)
                 .build();
-        assertEquals(action.execute(context).getId(), ProtocolError.TicketNotFromRenew.name());
+        final  Event event =  action.execute(context);
+        assert event != null;
+        assertEquals(event.getId(), ProtocolError.TicketNotFromRenew.name());
     }
 
     @Test
@@ -63,7 +66,10 @@ public class ValidateRenewActionTest extends AbstractFlowActionTest {
                 .addProtocolContext(request, null)
                 .addTicketContext(pt)
                 .build();
-        assertEquals(action.execute(context).getId(), ProtocolError.RenewIncompatibleWithProxy.name());
+        final  Event event =  action.execute(context);
+        assert event != null;
+
+        assertEquals(event.getId(), ProtocolError.RenewIncompatibleWithProxy.name());
     }
 
     @Test
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 12c864bfa..a23cc9f8f 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
@@ -25,6 +25,7 @@ import static org.testng.Assert.assertNotNull;
 
 import java.time.Instant;
 
+import org.springframework.webflow.execution.Event;
 import org.springframework.webflow.execution.RequestContext;
 import org.testng.annotations.Test;
 
@@ -54,7 +55,10 @@ public class ValidateTicketActionTest extends AbstractFlowActionTest {
                 .addProtocolContext(new TicketValidationRequest(TEST_SERVICE, "AB-1234-012346abcdef"), null)
                 .addRelyingPartyContext(TEST_SERVICE, true, new ValidateConfiguration())
                 .build();
-        assertEquals(newAction(ticketService).execute(context).getId(), ProtocolError.InvalidTicketFormat.name());
+        final  Event event =  newAction(ticketService).execute(context);
+        assert event != null;
+
+        assertEquals(event.getId(), ProtocolError.InvalidTicketFormat.name());
     }
 
     @Test
@@ -64,7 +68,9 @@ public class ValidateTicketActionTest extends AbstractFlowActionTest {
                 .addProtocolContext(new TicketValidationRequest("mismatch", ticket.getId()), null)
                 .addRelyingPartyContext(ticket.getService(), true, new ValidateConfiguration())
                 .build();
-        assertEquals(newAction(ticketService).execute(context).getId(), ProtocolError.ServiceMismatch.name());
+        final  Event event =  newAction(ticketService).execute(context);
+        assert event != null;
+        assertEquals(event.getId(), ProtocolError.ServiceMismatch.name());
     }
 
     @Test
@@ -79,7 +85,9 @@ public class ValidateTicketActionTest extends AbstractFlowActionTest {
                 .build();
         // Wait briefly to let ticket expire
         Thread.sleep(ticketTTLMillis + 5);
-        assertEquals(newAction(ticketService).execute(context).getId(), ProtocolError.TicketExpired.name());
+        final  Event event =  newAction(ticketService).execute(context);
+        assert event != null;
+        assertEquals(event.getId(), ProtocolError.TicketExpired.name());
     }
 
     @Test
@@ -90,9 +98,9 @@ public class ValidateTicketActionTest extends AbstractFlowActionTest {
                 .addProtocolContext(new TicketValidationRequest(TEST_SERVICE, "ST-12345"), null)
                 .addRelyingPartyContext(TEST_SERVICE, true, new ValidateConfiguration())
                 .build();
-        assertEquals(
-                newAction(throwingTicketService).execute(context).getId(),
-                ProtocolError.TicketRetrievalError.name());
+        final  Event event =  newAction(throwingTicketService).execute(context);
+        assert event != null;
+        assertEquals(event.getId(), ProtocolError.TicketRetrievalError.name());
     }
 
     @Test
@@ -103,7 +111,9 @@ public class ValidateTicketActionTest extends AbstractFlowActionTest {
                 .addRelyingPartyContext(ticket.getService(), true, new ValidateConfiguration())
                 .build();
         final ValidateTicketAction action = newAction(ticketService);
-        assertEquals(action.execute(context).getId(), Events.ServiceTicketValidated.name());
+        final  Event event =  action.execute(context);
+        assert event != null;
+        assertEquals(event.getId(), Events.ServiceTicketValidated.name());
         assertNotNull(action.getCASResponse(getProfileContext(context)));
     }
 
@@ -115,7 +125,9 @@ public class ValidateTicketActionTest extends AbstractFlowActionTest {
                 .addRelyingPartyContext(ticket.getService(), true, new ValidateConfiguration())
                 .build();
         final ValidateTicketAction action = newAction(ticketService);
-        assertEquals(action.execute(context).getId(), Events.ServiceTicketValidated.name());
+        final  Event event =  action.execute(context);
+        assert event != null;
+        assertEquals(event.getId(), Events.ServiceTicketValidated.name());
         assertNotNull(action.getCASResponse(getProfileContext(context)));
     }
 
@@ -129,7 +141,9 @@ public class ValidateTicketActionTest extends AbstractFlowActionTest {
                 .addRelyingPartyContext(pt.getService(), true, new ValidateConfiguration())
                 .build();
         final ValidateTicketAction action = newAction(ticketService);
-        assertEquals(action.execute(context).getId(), Events.ProxyTicketValidated.name());
+        final  Event event =  action.execute(context);
+        assert event != null;
+        assertEquals(event.getId(), Events.ProxyTicketValidated.name());
         assertNotNull(action.getCASResponse(getProfileContext(context)));
     }
 
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 3bedf5038..5ec95adab 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
@@ -17,14 +17,15 @@
 
 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;
 import java.util.Collections;
 import java.util.Timer;
 
-import net.shibboleth.idp.cas.service.Service;
-import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.resource.Resource;
-import net.shibboleth.shared.spring.resource.ResourceHelper;
+import javax.annotation.Nonnull;
 
 import org.opensaml.core.config.InitializationException;
 import org.opensaml.core.config.InitializationService;
@@ -40,7 +41,11 @@ import org.testng.annotations.BeforeSuite;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
-import static org.testng.Assert.*;
+import net.shibboleth.idp.cas.service.Service;
+import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.resource.Resource;
+import net.shibboleth.shared.spring.resource.ResourceHelper;
+import net.shibboleth.shared.xml.ParserPool;
 
 /**
  * Unit test for {@link MetadataServiceRegistry}.
@@ -83,7 +88,9 @@ public class MetadataServiceRegistryTest {
     public void setUp() throws Exception {
         final Resource metadata = ResourceHelper.of(new ClassPathResource("/metadata/cas-test-metadata.xml"));
         metadataResolver = new ResourceBackedMetadataResolver(new Timer(true), metadata);
-        metadataResolver.setParserPool(XMLObjectProviderRegistrySupport.getParserPool());
+        final ParserPool pool = XMLObjectProviderRegistrySupport.getParserPool();
+        assert pool != null;
+        metadataResolver.setParserPool(pool);
         metadataResolver.setMaxRefreshDelay(Duration.ofSeconds(500));
         metadataResolver.setId("cas");
         metadataResolver.setIndexes(Collections.<MetadataIndex>singleton(new EndpointMetadataIndex(
@@ -97,7 +104,8 @@ public class MetadataServiceRegistryTest {
     }
 
     @Test(dataProvider = "parameters")
-    public void testLookup(final String serviceURL, final Service expected) throws ComponentInitializationException {
+    public void testLookup(@Nonnull final String serviceURL, final Service expected) throws ComponentInitializationException {
+        assert metadataResolver!=null;
         final PredicateRoleDescriptorResolver wrapper = new PredicateRoleDescriptorResolver(metadataResolver);
         wrapper.initialize();
         final MetadataServiceRegistry registry = new MetadataServiceRegistry(wrapper);
@@ -105,7 +113,7 @@ public class MetadataServiceRegistryTest {
         if (expected == null) {
             assertNull(actual);
         } else {
-            assertNotNull(actual);
+            assert actual != null;
             assertEquals(actual.getName(), expected.getName());
             assertEquals(actual.getGroup(), expected.getGroup());
             assertEquals(actual.isAuthorizedToProxy(), expected.isAuthorizedToProxy());
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 63375a474..a05bc01f7 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
@@ -20,6 +20,8 @@ package net.shibboleth.idp.cas.ticket.impl;
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
 
+import javax.annotation.Nonnull;
+
 import net.shibboleth.idp.cas.ticket.ProxyGrantingTicket;
 import net.shibboleth.idp.cas.ticket.ProxyTicket;
 import net.shibboleth.idp.cas.ticket.ServiceTicket;
@@ -82,11 +84,12 @@ public class EncodingTicketServiceTest {
         final String service = "https://www.example.com/s1/";
         final Instant expiry = Instant.now().plusSeconds(5);
         final String id = String.valueOf(System.currentTimeMillis());
+        assert id != null && expiry != null;
         final ServiceTicket st1 = ticketService.createServiceTicket(id, expiry, service, state, true);
-        assertNotNull(st1);
+        assert st1 != null;
         assertTrue(st1.getId().startsWith("ST-"));
         final ServiceTicket st2 = ticketService.removeServiceTicket(st1.getId());
-        assertNotNull(st2);
+        assert st2 != null;
         assertEquals(st1.getId(), st2.getId());
         assertEquals(expiry.truncatedTo(ChronoUnit.MILLIS), st2.getExpirationInstant());
         assertEquals(service, st2.getService());
@@ -95,7 +98,7 @@ public class EncodingTicketServiceTest {
         assertEquals(state, st2.getTicketState());
         // Confirm removing multiple times is possible
         final ServiceTicket st3 = ticketService.removeServiceTicket(st1.getId());
-        assertNotNull(st3);
+        assert st3 != null;
         assertEquals(st1.getId(), st3.getId());
     }
 
@@ -131,11 +134,12 @@ 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;
         final ProxyTicket pt1 = ticketService.createProxyTicket(id, expiry, pgt, service);
-        assertNotNull(pt1);
+        assert pt1 != null;
         assertTrue(pt1.getId().startsWith("PT-"));
         final ProxyTicket pt2 = ticketService.removeProxyTicket(pt1.getId());
-        assertNotNull(pt2);
+        assert pt2 != null;
         assertEquals(pt1.getId(), pt2.getId());
         assertEquals(expiry.truncatedTo(ChronoUnit.MILLIS), pt2.getExpirationInstant());
         assertEquals(service, pt2.getService());
@@ -143,7 +147,7 @@ public class EncodingTicketServiceTest {
         assertEquals(pgt.getTicketState(), pt2.getTicketState());
         // Confirm removing multiple times is possible
         final ProxyTicket pt3 = ticketService.removeProxyTicket(pt1.getId());
-        assertNotNull(pt3);
+        assert pt3 != null;
         assertEquals(pt1.getId(), pt3.getId());
     }
 
@@ -153,8 +157,9 @@ 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;
         final ProxyTicket pt1 = ticketService.createProxyTicket(id, expiry, pgt, service);
-        assertNotNull(pt1);
+        assert pt1 != null;
         assertNull(ticketService.removeProxyTicket("PT-123"));
     }
 
@@ -170,18 +175,24 @@ public class EncodingTicketServiceTest {
             newState(principal),
             true);
         final Instant expiry = Instant.now().plusSeconds(3600);
+        assert expiry!=null;
         final ProxyGrantingTicket pgt = ticketService.createProxyGrantingTicket("notused", expiry, st, pgtUrl);
         assertTrue(pgt.getId().startsWith("PGT-E-"));
         final ProxyGrantingTicket pgt2 = ticketService.fetchProxyGrantingTicket(pgt.getId());
-        assertNotNull(pgt2);
+        assert pgt2 != null;
         assertEquals(pgt2.getService(), serviceUrl);
         assertEquals(pgt2.getProxyCallbackUrl(), pgtUrl);
-        assertEquals(pgt2.getTicketState().getPrincipalName(), principal);
+        final TicketState ts2 = pgt2.getTicketState();
+        assert ts2 != null;
+        assertEquals(ts2.getPrincipalName(), principal);
         final ProxyGrantingTicket pgt3 = ticketService.removeProxyGrantingTicket(pgt.getId());
+        assert pgt3 != null;
         assertNotNull(pgt3);
         assertEquals(pgt3.getService(), serviceUrl);
         assertEquals(pgt2.getProxyCallbackUrl(), pgtUrl);
-        assertEquals(pgt3.getTicketState().getPrincipalName(), principal);
+        final TicketState ts3 = pgt3.getTicketState();
+        assert ts3 != null;
+        assertEquals(ts3.getPrincipalName(), principal);
         // Removing encoded tickets is the same as fetching so they are still available (no backing storage)
         assertNotNull(ticketService.fetchProxyGrantingTicket(pgt.getId()));
     }
@@ -191,7 +202,7 @@ public class EncodingTicketServiceTest {
                 Instant.now().truncatedTo(ChronoUnit.MILLIS), "authn/Password");
     }
 
-    private ProxyGrantingTicket newPGT(final TicketState state, final String service) {
+    private ProxyGrantingTicket newPGT(@Nonnull final TicketState state, @Nonnull final String service) {
         final ProxyGrantingTicket pgt = new ProxyGrantingTicket(
             pgtIdGenerator.generateIdentifier(),
             service,
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 f51d55da2..d65410181 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
@@ -59,10 +59,13 @@ public class SimpleTicketServiceTest {
     @Test
     public void testCreateRemoveServiceTicket() throws Exception {
         final ServiceTicket st = createServiceTicket();
-        assertNotNull(st);
-        assertNotNull(st.getTicketState().getSessionId());
-        assertNotNull(st.getTicketState().getPrincipalName());
+        assert st != null;
+        final TicketState ts = st.getTicketState();
+        assert ts != null;
+        assertNotNull(ts.getSessionId());
+        assertNotNull(ts.getPrincipalName());
         final ServiceTicket st2 = ticketService.removeServiceTicket(st.getId());
+        assert st2 != null;
         assertEquals(st, st2);
         assertEquals(st.getExpirationInstant(), st2.getExpirationInstant());
         assertEquals(st.getService(), st2.getService());
@@ -73,10 +76,13 @@ public class SimpleTicketServiceTest {
     @Test
     public void testCreateFetchRemoveProxyGrantingTicket() throws Exception {
         final ProxyGrantingTicket pgt = createProxyGrantingTicket();
-        assertNotNull(pgt);
-        assertNotNull(pgt.getTicketState().getSessionId());
-        assertNotNull(pgt.getTicketState().getPrincipalName());
+        assert pgt != null;
+        final TicketState ts = pgt.getTicketState();
+        assert ts != null;
+        assertNotNull(ts.getSessionId());
+        assertNotNull(ts.getPrincipalName());
         final ProxyGrantingTicket pgt2 = ticketService.fetchProxyGrantingTicket(pgt.getId());
+        assert pgt2 != null;
         assertEquals(pgt, pgt2);
         assertEquals(pgt.getExpirationInstant(), pgt2.getExpirationInstant());
         assertEquals(pgt.getService(), pgt2.getService());
@@ -93,10 +99,13 @@ public class SimpleTicketServiceTest {
                 expiry(),
                 createProxyGrantingTicket(),
                 TEST_SERVICE);
-        assertNotNull(pt);
-        assertNotNull(pt.getTicketState().getSessionId());
-        assertNotNull(pt.getTicketState().getPrincipalName());
+        assert pt != null;
+        final TicketState ts = pt.getTicketState();
+        assert ts != null;
+        assertNotNull(ts.getSessionId());
+        assertNotNull(ts.getPrincipalName());
         final ProxyTicket pt2 = ticketService.removeProxyTicket(pt.getId());
+        assert null != pt2;
         assertEquals(pt, pt2);
         assertEquals(pt.getExpirationInstant(), pt2.getExpirationInstant());
         assertEquals(pt.getService(), pt2.getService());

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


More information about the commits mailing list