[java-idp-plugin-duo] 11/15: Switch the majority of tests to TestNG over JUnit.
Phil Smart
philip.smart at jisc.ac.uk
Tue Jul 14 14:29:07 UTC 2020
This is an automated email from the git hooks/post-receive script.
philsmart pushed a commit to branch master
in repository java-idp-plugin-duo.
View the commit online:
http://git.shibboleth.net/view/?p=java-idp-plugin-duo.git;a=commit;h=d970aac960b70cab43988e5509c5ac7a31e4cba2
commit d970aac960b70cab43988e5509c5ac7a31e4cba2
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Mon Jul 13 19:24:36 2020 +0100
Switch the majority of tests to TestNG over JUnit.
---
.../AbstractDuoClientAuthenticationActionTest.java | 28 +++++------
.../idp/plugin/authn/duo/DuoOIDCPrincipalTest.java | 10 ++--
.../authn/duo/impl/HealthCheckDuoOIDCAuthAPI.java | 2 +-
.../impl/AbstractAuthnXmlFlowExecutionTests.java | 47 +++++++++---------
.../authn/duo/impl/AbstractDuoActionTest.java | 21 +++++---
.../duo/impl/DefaultDuoOIDCClientRegistryTest.java | 39 ++++++++-------
.../authn/duo/impl/DualDuoIntegrationStrategy.java | 4 +-
.../plugin/authn/duo/impl/DuoAuthnFlowTest.java | 56 +++++++++------------
.../authn/duo/impl/DuoOIDCAuthnControllerTest.java | 57 +++++++++++++---------
.../duo/impl/ExchangeCodeForDuoTokenTest.java | 20 ++++----
.../duo/impl/HealthCheckDuoOIDCAuthAPITest.java | 20 +++-----
.../impl/PopulateDuoAuthenticationContextTest.java | 18 +++----
.../duo/impl/ValidateDuoResponseStateTest.java | 24 +++++----
.../duo/impl/ValidateDuoTokenAudienceTest.java | 16 +++---
.../ValidateDuoTokenAuthenticationResultTest.java | 25 +++++-----
.../ValidateDuoTokenAuthenticationTimeTest.java | 53 ++++++++++++++------
.../impl/ValidateDuoTokenExpirationTimeTest.java | 38 ++++++++++-----
.../duo/impl/ValidateDuoTokenIssuedAtTest.java | 33 +++++++++----
.../duo/impl/ValidateDuoTokenSubjectTest.java | 26 +++++++---
.../duo/sdk/impl/DuoSDKClientFactoryTest.java | 18 ++++---
pom.xml | 44 ++++++++---------
21 files changed, 331 insertions(+), 268 deletions(-)
diff --git a/idp-duo-api/src/test/java/net/shbboleth/idp/plugin/authn/duo/AbstractDuoClientAuthenticationActionTest.java b/idp-duo-api/src/test/java/net/shbboleth/idp/plugin/authn/duo/AbstractDuoClientAuthenticationActionTest.java
index 02becbd..3515e1d 100644
--- a/idp-duo-api/src/test/java/net/shbboleth/idp/plugin/authn/duo/AbstractDuoClientAuthenticationActionTest.java
+++ b/idp-duo-api/src/test/java/net/shbboleth/idp/plugin/authn/duo/AbstractDuoClientAuthenticationActionTest.java
@@ -16,20 +16,19 @@
*/
package net.shbboleth.idp.plugin.authn.duo;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertThrows;
+import static org.testng.Assert.assertTrue;
import javax.annotation.Nonnull;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.opensaml.profile.context.EventContext;
import org.opensaml.profile.context.ProfileRequestContext;
import org.springframework.webflow.execution.RequestContext;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
import net.shibboleth.idp.authn.AuthnEventIds;
@@ -64,7 +63,7 @@ public class AbstractDuoClientAuthenticationActionTest {
*
* @throws ComponentInitializationException on error.
*/
- @BeforeEach public void setup() throws ComponentInitializationException {
+ @BeforeMethod public void setup() throws ComponentInitializationException {
action = new MockAbstractDuoAuthenticationAction();
final DuoOIDCClientRegistry registry = Mockito.mock(DuoOIDCClientRegistry.class);
action.setClientRegistry(registry);
@@ -107,20 +106,19 @@ public class AbstractDuoClientAuthenticationActionTest {
/** Test setting a null client registry.*/
@Test
- @DisplayName("Test setting a null client registry")
public void testSetNullClientRegistry() {
- Assertions.assertThrows(ConstraintViolationException.class,() -> action.setClientRegistry(null));
+ assertThrows(ConstraintViolationException.class,() -> action.setClientRegistry(null));
}
/** Test setting a null duo context.*/
- @Test @DisplayName("Test setting a null duo context")
+ @Test
public void publictestSetNullDuoContextLookupStrategy() {
- Assertions.assertThrows(ConstraintViolationException.class,() ->
+ assertThrows(ConstraintViolationException.class,() ->
action.setDuoContextLookupStrategy(null));
}
/** Test doPreExecute returns true, no failures.*/
- @Test @DisplayName("Test doPreExecute returns true, no failures")
+ @Test
public void testDoPreExecuteSuccess() throws ComponentInitializationException {
addDuoContext();
addDuoIntegration();
@@ -135,7 +133,7 @@ public class AbstractDuoClientAuthenticationActionTest {
*
* @throws ComponentInitializationException on error.
*/
- @Test @DisplayName("Test pre-execute without a duo context")
+ @Test
public void testDoPreExecuteWithNoDuoContext() throws ComponentInitializationException {
action.setDuoContextLookupStrategy(prc -> dc);
action.initialize();
@@ -148,7 +146,7 @@ public class AbstractDuoClientAuthenticationActionTest {
*
* @throws ComponentInitializationException
*/
- @Test @DisplayName("Test pre-execute without a duo integration")
+ @Test
public void testDoPreExecuteWithNoDuoIntegration() throws ComponentInitializationException {
addDuoContext();
action.setDuoContextLookupStrategy(prc -> dc);
diff --git a/idp-duo-api/src/test/java/net/shbboleth/idp/plugin/authn/duo/DuoOIDCPrincipalTest.java b/idp-duo-api/src/test/java/net/shbboleth/idp/plugin/authn/duo/DuoOIDCPrincipalTest.java
index 753f8af..4906920 100644
--- a/idp-duo-api/src/test/java/net/shbboleth/idp/plugin/authn/duo/DuoOIDCPrincipalTest.java
+++ b/idp-duo-api/src/test/java/net/shbboleth/idp/plugin/authn/duo/DuoOIDCPrincipalTest.java
@@ -1,9 +1,9 @@
package net.shbboleth.idp.plugin.authn.duo;
-import static org.junit.jupiter.api.Assertions.*;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
+import static org.testng.Assert.assertEquals;
+
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.principal.DuoOIDCPrincipal;
@@ -17,7 +17,7 @@ public class DuoOIDCPrincipalTest {
*
* @throws CloneNotSupportedException on error
*/
- @Test @DisplayName("Test principal cloning")
+ @Test
public void testClone() throws CloneNotSupportedException {
final String name = "jdoe";
final DuoOIDCPrincipal principal = new DuoOIDCPrincipal(name);
@@ -30,7 +30,7 @@ public class DuoOIDCPrincipalTest {
*
* @throws CloneNotSupportedException on error
*/
- @Test @DisplayName("Test name is not mutable")
+ @Test
public void testImmutable() throws CloneNotSupportedException {
final String name = "jdoe";
final DuoOIDCPrincipal principal = new DuoOIDCPrincipal(name);
diff --git a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPI.java b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPI.java
index a0c27e1..450b449 100644
--- a/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPI.java
+++ b/idp-duo-impl/src/main/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPI.java
@@ -85,7 +85,7 @@ public class HealthCheckDuoOIDCAuthAPI extends AbstractDuoClientAuthenticationAc
+ "code '{}', message '{}', message detail '{}'",getLogPrefix(),
healthCheckResponse.getStatus(),healthCheckResponse.getCode(),
healthCheckResponse.getMessage(),healthCheckResponse.getMessageDetail());
- throw new DuoClientException("Duo 2FA health check responded with a failure status"+
+ throw new DuoClientException("Duo 2FA health check responded with a failure status "+
healthCheckResponse.getMessage());
} else {
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractAuthnXmlFlowExecutionTests.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractAuthnXmlFlowExecutionTests.java
index 3ef6819..90da26d 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractAuthnXmlFlowExecutionTests.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractAuthnXmlFlowExecutionTests.java
@@ -21,12 +21,10 @@ import java.util.Base64;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import javax.annotation.Nonnull;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
+import org.junit.Before;
import org.mockito.Mockito;
import org.opensaml.core.config.ConfigurationService;
import org.opensaml.core.metrics.FilteredMetricRegistry;
@@ -58,7 +56,6 @@ import com.codahale.metrics.MetricRegistry;
import com.google.common.net.HttpHeaders;
import net.shbboleth.idp.plugin.authn.duo.DuoOIDCClientFactory;
-import net.shbboleth.idp.plugin.authn.duo.DuoOIDCClientRegistry;
import net.shibboleth.idp.authn.AuthenticationFlowDescriptor;
import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
@@ -82,6 +79,8 @@ import net.shibboleth.utilities.java.support.security.impl.SecureRandomIdentifie
* the {@link ApplicationContext} created by {@link ContextConfiguration} annotation processors. As a
* result, those bean configurations and environment variables need to be injected
* inside {@link #configureFlowBuilderContext(MockFlowBuilderContext)}</p>
+ *
+ * <p>Note, these test use JUnit, and work with the TestNG to JUnit bridge</p>
*/
public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlowExecutionTests{
@@ -130,7 +129,7 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlow
* @param testFlowModelResources the parent flows.
*/
public void setFlowModelResources(@Nonnull final Map<String,String> testFlowModelResources) {
- Assertions.assertNotNull(testFlowModelResources);
+ assertNotNull(testFlowModelResources);
flowModelResources = testFlowModelResources;
}
@@ -140,7 +139,7 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlow
* @param factory the Duo client factory.
*/
public void setClientFactory(@Nonnull final DuoOIDCClientFactory factory) {
- Assertions.assertNotNull(factory);
+ assertNotNull(factory);
clientFactory = factory;
}
@@ -150,7 +149,7 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlow
* @param testFlowPath the path to the file to test.
*/
public void setFlowPath(@Nonnull @NotEmpty final String testFlowPath) {
- Assertions.assertNotNull(testFlowPath);
+ assertNotNull(testFlowPath);
flowPath = testFlowPath;
}
@@ -160,7 +159,7 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlow
* @param properties
*/
public void setMockProperties(@Nonnull final Map<String,String> properties) {
- Assertions.assertNotNull(properties);
+ assertNotNull(properties);
mockProperties = properties;
}
@@ -170,7 +169,7 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlow
* @param mockSubflows the mock subflows.
*/
public void setSubflows(@Nonnull @NonnullElements final List<Flow> mockSubflows) {
- Assertions.assertNotNull(mockSubflows);
+ assertNotNull(mockSubflows);
subflows = mockSubflows;
}
@@ -182,8 +181,8 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlow
* @param password the password
*/
public void addHttpBasicAuthHeader(@Nonnull final String username, @Nonnull final String password) {
- Assertions.assertNotNull(username);
- Assertions.assertNotNull(password);
+ assertNotNull(username);
+ assertNotNull(password);
mockRequest.addHeader(HttpHeaders.AUTHORIZATION, "Basic "+
Base64.getEncoder().encodeToString((username+":"+password).getBytes()));
}
@@ -191,9 +190,7 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlow
/**
* Setup the mock objects before each method.
*/
- //TODO: should this be initialised once, or once before test?
- @BeforeEach public void initializeMocks() {
- log.info("Mocks are being created");
+ @Override public void setUp() {
mockRequest = new MockHttpServletRequest();
mockResponse = new MockHttpServletResponse();
externalContext = new MockExternalContext();
@@ -235,7 +232,7 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlow
* @param builderContext the builder context to register the subflows with.
*/
private void registerMockSubflows(@Nonnull final MockFlowBuilderContext builderContext) {
- Assertions.assertNotNull(builderContext);
+ assertNotNull(builderContext);
subflows.forEach(flow -> builderContext.registerSubflow(flow));
}
@@ -285,15 +282,15 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlow
private void addBeanDefinition(@Nonnull final MockFlowBuilderContext builderContext,
@Nonnull final String beanName, @Nonnull final BeanDefinition bean) {
- Assertions.assertNotNull(builderContext);
- Assertions.assertNotNull(beanName);
- Assertions.assertNotNull(bean);
- Assertions.assertTrue( builderContext.getApplicationContext() instanceof ConfigurableApplicationContext);
+ assertNotNull(builderContext);
+ assertNotNull(beanName);
+ assertNotNull(bean);
+ assertTrue( builderContext.getApplicationContext() instanceof ConfigurableApplicationContext);
BeanFactory factory = ((ConfigurableApplicationContext) builderContext.getApplicationContext()).getBeanFactory();
- Assertions.assertNotNull(factory);
- Assertions.assertTrue(factory instanceof DefaultListableBeanFactory);
+ assertNotNull(factory);
+ assertTrue(factory instanceof DefaultListableBeanFactory);
((DefaultListableBeanFactory)factory).registerBeanDefinition(beanName, bean);;
@@ -307,10 +304,10 @@ public abstract class AbstractAuthnXmlFlowExecutionTests extends AbstractXmlFlow
*/
private void registerMockPropertySource(@Nonnull final MockFlowBuilderContext builderContext) {
- Assertions.assertNotNull(builderContext);
- Assertions.assertNotNull(builderContext.getApplicationContext());
- Assertions.assertNotNull(builderContext.getApplicationContext().getEnvironment());
- Assertions.assertTrue(builderContext.getApplicationContext().getEnvironment() instanceof StandardEnvironment);
+ assertNotNull(builderContext);
+ assertNotNull(builderContext.getApplicationContext());
+ assertNotNull(builderContext.getApplicationContext().getEnvironment());
+ assertTrue(builderContext.getApplicationContext().getEnvironment() instanceof StandardEnvironment);
final MockPropertySource mock = new MockPropertySource();
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractDuoActionTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractDuoActionTest.java
index 517551c..cd17f97 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractDuoActionTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/AbstractDuoActionTest.java
@@ -19,6 +19,12 @@ package net.shibboleth.idp.plugin.authn.duo.impl;
+import org.testng.AssertJUnit;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
import java.time.Instant;
import javax.annotation.Nonnull;
@@ -33,7 +39,6 @@ import org.springframework.webflow.execution.RequestContext;
import com.codahale.metrics.MetricRegistry;
-import org.junit.jupiter.api.Assertions;
import net.shbboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
import net.shbboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
@@ -150,7 +155,7 @@ public abstract class AbstractDuoActionTest {
* @param flowId the flow ID.
*/
protected void addAttemptedFlow(@Nonnull final String flowId) {
- Assertions.assertNotNull(flowId);
+ assertNotNull(flowId);
final AuthenticationFlowDescriptor afd = new AuthenticationFlowDescriptor();
afd.setId(flowId);
ac.setAttemptedFlow(afd);
@@ -164,9 +169,9 @@ public abstract class AbstractDuoActionTest {
*/
protected void assertEventIdFromProfileRequestContext(@Nonnull final String eventId) {
final Object event = prc.getSubcontext(EventContext.class, true).getEvent();
- Assertions.assertNotNull(event);
- Assertions.assertTrue(event instanceof String,"Event is not a string is: "+event.getClass());
- Assertions.assertEquals(eventId, (String)event);
+ assertNotNull(event);
+ assertTrue(event instanceof String,"Event is not a string is: "+event.getClass());
+ assertEquals(eventId, (String)event);
}
@@ -177,8 +182,8 @@ public abstract class AbstractDuoActionTest {
* @param eventId the ID to match.
*/
protected void assertEventId(@Nullable final Event event, @Nonnull final String eventId) {
- Assertions.assertNotNull(event);
- Assertions.assertEquals(eventId, event.getId());
+ assertNotNull(event);
+ assertEquals(eventId, event.getId());
}
/** Add the Duo authentication context to the authentication context.*/
@@ -189,7 +194,7 @@ public abstract class AbstractDuoActionTest {
/** Add fabricated duo integration to the duo context.*/
protected void addDuoIntegrationToContext() {
- Assertions.assertNotNull(dc,"try addDuoContext() before adding the duo integration");
+ assertNotNull(dc,"try addDuoContext() before adding the duo integration");
dc.setIntegration(createDummyDuoIntegration());
}
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistryTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistryTest.java
index 68c1d82..cae9c06 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistryTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DefaultDuoOIDCClientRegistryTest.java
@@ -17,7 +17,10 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import static org.junit.jupiter.api.Assertions.*;
+
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotSame;
import java.util.ArrayList;
import java.util.Collection;
@@ -26,11 +29,8 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
import net.shbboleth.idp.plugin.authn.duo.DuoOIDCClient;
@@ -47,14 +47,19 @@ public class DefaultDuoOIDCClientRegistryTest {
/** The registry to test. */
private DefaultDuoOIDCClientRegistry registry;
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
registry = new DefaultDuoOIDCClientRegistry();
registry.setId("Test registry");
}
+ /**
+ * Correct registration and caching of client integrations.
+ *
+ * @throws DuoRegistryException on error
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Correct registration and caching of client integrations")
public final void testCaching() throws DuoRegistryException, ComponentInitializationException {
// needs a real mock to test proper caching.
@@ -72,7 +77,7 @@ public class DefaultDuoOIDCClientRegistryTest {
final DuoOIDCClient client = registry.getIntegrationClientOrCreate(integ);
final DuoOIDCClient clientTwo = registry.getIntegrationClientOrCreate(integ);
- Assertions.assertEquals(client, clientTwo);
+ assertEquals(client, clientTwo);
// set to a different value
integ.setClientId("DIU6GEFWG5LIUBVV2M3B");
@@ -80,16 +85,16 @@ public class DefaultDuoOIDCClientRegistryTest {
final DuoOIDCClient clientThree = registry.getIntegrationClientOrCreate(integ);
System.out.println("Client: " + client + " Client2: " + clientTwo + " Client3: " + clientThree);
- Assertions.assertNotSame(client, clientThree);
+ assertNotSame(client, clientThree);
}
/* Manually step debugging of the registry thread safety, works fine.*/
//@Test
- @DisplayName("Correct registration and caching of client integrations, thread safe")
- public final void testThreadSafetyCaching() throws DuoRegistryException, ComponentInitializationException, InterruptedException, ExecutionException {
+ public final void testThreadSafetyCaching() throws DuoRegistryException,
+ ComponentInitializationException, InterruptedException, ExecutionException {
// needs a real mock to test proper caching.
- MockDuoOIDCClientFactory_OK_Client factory = new MockDuoOIDCClientFactory_OK_Client();
+ final MockDuoOIDCClientFactory_OK_Client factory = new MockDuoOIDCClientFactory_OK_Client();
registry.setClientFactory(factory);
registry.initialize();
@@ -100,14 +105,14 @@ public class DefaultDuoOIDCClientRegistryTest {
integ.setRedirectURI("http://localhost/");
integ.setSecretKey("rFvDfPul27v3Wew2zb6xRPzAJewJ34MP2w8UitPh");
- ExecutorService service = Executors.newFixedThreadPool(2);
- Collection<Future<DuoOIDCClient>> futures = new ArrayList<>(2);
+ final ExecutorService service = Executors.newFixedThreadPool(2);
+ final Collection<Future<DuoOIDCClient>> futures = new ArrayList<>(2);
for (int t = 0; t < 2; ++t) {
futures.add(service.submit(()->registry.getIntegrationClientOrCreate(integ)));
}
- for (Future<DuoOIDCClient> f : futures) {
- DuoOIDCClient client = f.get();
+ for (final Future<DuoOIDCClient> f : futures) {
+ final DuoOIDCClient client = f.get();
System.out.println("client:"+client);
}
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DualDuoIntegrationStrategy.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DualDuoIntegrationStrategy.java
index e3663b4..1802130 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DualDuoIntegrationStrategy.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DualDuoIntegrationStrategy.java
@@ -17,9 +17,9 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
+import org.testng.Assert;
import java.util.function.Function;
-import org.junit.jupiter.api.Assertions;
import org.opensaml.profile.context.ProfileRequestContext;
import net.shbboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
@@ -54,7 +54,7 @@ public class DualDuoIntegrationStrategy implements Function<ProfileRequestContex
return int2;
}
//fail if none chosen.
- Assertions.fail();
+ Assert.fail();
return null;
}
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthnFlowTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthnFlowTest.java
index ff60e29..22158fa 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthnFlowTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoAuthnFlowTest.java
@@ -21,29 +21,20 @@ package net.shibboleth.idp.plugin.authn.duo.impl;
import java.util.List;
import java.util.Map;
-
import javax.annotation.Nonnull;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
+import org.junit.Before;
+import org.junit.Test;
import org.opensaml.profile.context.ProfileRequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.webflow.core.collection.LocalAttributeMap;
import org.springframework.webflow.engine.Flow;
import org.springframework.webflow.engine.impl.FlowExecutionImpl;
import org.springframework.webflow.execution.FlowExecution;
import net.shbboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
-import net.shbboleth.idp.plugin.authn.duo.DuoClientException;
-import net.shbboleth.idp.plugin.authn.duo.DuoOIDCClient;
-import net.shbboleth.idp.plugin.authn.duo.DuoOIDCIntegration;
import net.shbboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
-import net.shbboleth.idp.plugin.authn.duo.model.DuoAuthToken;
-import net.shbboleth.idp.plugin.authn.duo.model.DuoHealthCheck;
import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
import net.shibboleth.idp.plugin.authn.mock.MockDuoOIDCClientFactory_FAIL_Client;
@@ -52,10 +43,11 @@ import net.shibboleth.idp.plugin.authn.mock.MockFlowBuilder;
import net.shibboleth.idp.profile.context.RelyingPartyContext;
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
/**
* Test the Duo 2FA flow using SWF flow testing.
+ *
+ * <p>Note, these test use JUnit, and work with the TestNG to JUnit bridge</p>
*/
public class DuoAuthnFlowTest extends AbstractAuthnXmlFlowExecutionTests {
@@ -99,10 +91,10 @@ public class DuoAuthnFlowTest extends AbstractAuthnXmlFlowExecutionTests {
"/flows/authn/conditions/conditions-flow.xml","authn/conditions");
+
/** Test the Duo flow when the health check returns unhealthy.*/
- @Test @DisplayName("Test Duo 2FA flow where the Duo 2FA endpoint is unhealthy")
+ @Test
public void testDuoAuthnFlowDuoEndpointUnhealthy() {
-
setFlowPath(FLOW);
setFlowModelResources(flowResources);
setSubflows(subflows);
@@ -129,7 +121,7 @@ public class DuoAuthnFlowTest extends AbstractAuthnXmlFlowExecutionTests {
}
/** Test the Duo flow up to the external authorization request.*/
- @Test @DisplayName("Test Duo 2FA flow up to the Duo 2FA authorization request")
+ @Test
public void testDuoAuthnFlowToAuthorizationRequest() {
setFlowPath(FLOW);
@@ -160,8 +152,7 @@ public class DuoAuthnFlowTest extends AbstractAuthnXmlFlowExecutionTests {
/** Test the Duo flow up to the external authorization request using the dynamically selected
* first Duo integration.*/
- @Test @DisplayName("Test Duo 2FA flow up to the Duo 2FA authorization "
- + "request with multiple integrations, first")
+ @Test
public void testDuoAuthnFlowToAuthorizationRequestMultipleDuoIntegrationsFirst() {
setFlowPath(FLOW);
@@ -192,20 +183,19 @@ public class DuoAuthnFlowTest extends AbstractAuthnXmlFlowExecutionTests {
assertFlowExecutionActive();
assertCurrentStateEquals("Duo2FAAuthorizationRequest");
- Assertions.assertNotNull(prcOne.getSubcontext(AuthenticationContext.class));
- Assertions.assertNotNull(prcOne.getSubcontext(AuthenticationContext.class).getSubcontext(
+ assertNotNull(prcOne.getSubcontext(AuthenticationContext.class));
+ assertNotNull(prcOne.getSubcontext(AuthenticationContext.class).getSubcontext(
DuoOIDCAuthenticationContext.class));
- Assertions.assertNotNull(prcOne.getSubcontext(AuthenticationContext.class).getSubcontext(
+ assertNotNull(prcOne.getSubcontext(AuthenticationContext.class).getSubcontext(
DuoOIDCAuthenticationContext.class).getIntegration());
- Assertions.assertEquals(FIRST_INTEGRATION_CLIENT_ID,prcOne.getSubcontext(AuthenticationContext.class)
+ assertEquals(FIRST_INTEGRATION_CLIENT_ID,prcOne.getSubcontext(AuthenticationContext.class)
.getSubcontext(DuoOIDCAuthenticationContext.class).getIntegration().getClientId());
}
/** Test the Duo flow up to the external authorization request using the dynamically selected
* second Duo integration.*/
- @Test @DisplayName("Test Duo 2FA flow up to the Duo 2FA authorization "
- + "request with multiple integrations, second")
+ @Test
public void testDuoAuthnFlowToAuthorizationRequestMultipleDuoIntegrationsSecond() {
setFlowPath(FLOW);
@@ -236,19 +226,19 @@ public class DuoAuthnFlowTest extends AbstractAuthnXmlFlowExecutionTests {
assertFlowExecutionActive();
assertCurrentStateEquals("Duo2FAAuthorizationRequest");
- Assertions.assertNotNull(prcOne.getSubcontext(AuthenticationContext.class));
- Assertions.assertNotNull(prcOne.getSubcontext(AuthenticationContext.class).getSubcontext(
+ assertNotNull(prcOne.getSubcontext(AuthenticationContext.class));
+ assertNotNull(prcOne.getSubcontext(AuthenticationContext.class).getSubcontext(
DuoOIDCAuthenticationContext.class));
- Assertions.assertNotNull(prcOne.getSubcontext(AuthenticationContext.class).getSubcontext(
+ assertNotNull(prcOne.getSubcontext(AuthenticationContext.class).getSubcontext(
DuoOIDCAuthenticationContext.class).getIntegration());
- Assertions.assertEquals(SECOND_INTEGRATION_CLIENT_ID,prcOne.getSubcontext(AuthenticationContext.class)
+ assertEquals(SECOND_INTEGRATION_CLIENT_ID,prcOne.getSubcontext(AuthenticationContext.class)
.getSubcontext(DuoOIDCAuthenticationContext.class).getIntegration().getClientId());
}
/** Test the Duo flow from the external authorization request to the end of the flow.*/
- @Test @DisplayName("Test Duo 2FA flow from (not including) authorization callback")
+ @Test
public void testDuoAuthnFlowFromAuthorizationCallback() {
setFlowPath(FLOW);
@@ -289,14 +279,14 @@ public class DuoAuthnFlowTest extends AbstractAuthnXmlFlowExecutionTests {
//assert success conditions
assertFlowExecutionEnded();
- Assertions.assertNotNull(prc.getSubcontext(AuthenticationContext.class));
- Assertions.assertNotNull(prc.getSubcontext(AuthenticationContext.class).
+ assertNotNull(prc.getSubcontext(AuthenticationContext.class));
+ assertNotNull(prc.getSubcontext(AuthenticationContext.class).
getSubcontext(DuoOIDCAuthenticationContext.class));
final DuoOIDCAuthenticationContext contextFromPrc = prc.getSubcontext(AuthenticationContext.class).
getSubcontext(DuoOIDCAuthenticationContext.class);
- Assertions.assertNotNull(contextFromPrc.getAuthToken());
- Assertions.assertNotNull(prc.getSubcontext(SubjectCanonicalizationContext.class));
- Assertions.assertEquals(prc.getSubcontext(SubjectCanonicalizationContext.class).getPrincipalName(),"jdoe");
+ assertNotNull(contextFromPrc.getAuthToken());
+ assertNotNull(prc.getSubcontext(SubjectCanonicalizationContext.class));
+ assertEquals(prc.getSubcontext(SubjectCanonicalizationContext.class).getPrincipalName(),"jdoe");
}
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnControllerTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnControllerTest.java
index 037bd5c..be460f7 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnControllerTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/DuoOIDCAuthnControllerTest.java
@@ -20,14 +20,14 @@ package net.shibboleth.idp.plugin.authn.duo.impl;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertThrows;
+import static org.testng.Assert.assertTrue;
import javax.annotation.Nonnull;
import javax.servlet.ServletContext;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;
import org.opensaml.profile.action.EventIds;
import org.opensaml.profile.context.ProfileRequestContext;
@@ -38,12 +38,14 @@ import org.springframework.mock.web.MockHttpSession;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.ServletContextAttributeExporter;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.util.NestedServletException;
import org.springframework.webflow.core.collection.LocalAttributeMap;
import org.springframework.webflow.core.collection.MutableAttributeMap;
@@ -51,6 +53,8 @@ import org.springframework.webflow.execution.FlowExecution;
import org.springframework.webflow.execution.repository.FlowExecutionRepository;
import org.springframework.webflow.execution.repository.support.CompositeFlowExecutionKey;
import org.springframework.webflow.executor.FlowExecutorImpl;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
import net.shbboleth.idp.plugin.authn.duo.context.DuoOIDCAuthenticationContext;
@@ -70,11 +74,10 @@ import net.shibboleth.idp.ui.context.RelyingPartyUIContext;
/**
* Tests for the {@link DuoOIDCAuthnController}.
*/
- at ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {DuoOIDCAuthnController.class, IdPPropertyConfigurer.class})
@WebAppConfiguration
@TestPropertySource(properties = {"idp.authn.duo.OIDC.externalAuthnPath=/Authn/Duo/2FA",})
-public class DuoOIDCAuthnControllerTest {
+public class DuoOIDCAuthnControllerTest extends AbstractTestNGSpringContextTests{
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(DuoOIDCAuthnControllerTest.class);
@@ -96,12 +99,12 @@ public class DuoOIDCAuthnControllerTest {
*
* @throws Exception on error.
*/
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
// check controller is instantiated.
final DuoOIDCAuthnController controller = webApplicationContext.getBean(DuoOIDCAuthnController.class);
- Assertions.assertNotNull(controller);
+ assertNotNull(controller);
// add a Duo client registry
final DefaultDuoOIDCClientRegistry registry = new DefaultDuoOIDCClientRegistry();
@@ -128,7 +131,7 @@ public class DuoOIDCAuthnControllerTest {
mockMvc.perform(get("/Authn/Duo/2FA/authorize").session(session).param("conversation", "e1s1")).andDo(print())
.andExpect(status().is3xxRedirection());
//assert the key is in the session
- Assertions.assertNotNull(session.getAttribute(DuoOIDCAuthnController.KEY_SESSION_ATTRIBUTE));
+ assertNotNull(session.getAttribute(DuoOIDCAuthnController.KEY_SESSION_ATTRIBUTE));
}
@@ -154,8 +157,8 @@ public class DuoOIDCAuthnControllerTest {
//check the duo context is populated correctly.
DuoOIDCAuthenticationContext duoContext = extractDuoContext();
- Assertions.assertEquals("db87f45083db5aea16eb45b7ace685c8",duoContext.getAuthorizationCode());
- Assertions.assertEquals("8821febf7b3237fc3974f76a75f37e8c", duoContext.getResponseState());
+ assertEquals("db87f45083db5aea16eb45b7ace685c8",duoContext.getAuthorizationCode());
+ assertEquals("8821febf7b3237fc3974f76a75f37e8c", duoContext.getResponseState());
}
@@ -181,9 +184,9 @@ public class DuoOIDCAuthnControllerTest {
andReturn();
final Object extAuthErrorObject = result.getRequest().getAttribute(
ExternalAuthentication.AUTHENTICATION_ERROR_KEY);
- Assertions.assertNotNull(extAuthErrorObject);
- Assertions.assertTrue(extAuthErrorObject instanceof String);
- Assertions.assertEquals(EventIds.INVALID_PROFILE_CTX, (String)extAuthErrorObject);
+ assertNotNull(extAuthErrorObject);
+ assertTrue(extAuthErrorObject instanceof String);
+ assertEquals(EventIds.INVALID_PROFILE_CTX, (String)extAuthErrorObject);
@@ -196,11 +199,14 @@ public class DuoOIDCAuthnControllerTest {
*/
@Test
public void testCallbackNoCode() throws Exception {
- final Exception exception = Assertions.assertThrows(NestedServletException.class, () -> {
+
+ try {
mockMvc.perform(get("/Authn/Duo/2FA/duo-callback").param("state",
"8821febf7b3237fc3974f76a75f37e8c")).andDo(print());
- });
- Assertions.assertTrue(exception.getCause() instanceof ExternalAuthenticationException);
+ } catch (final NestedServletException e) {
+ assertTrue(e.getCause() instanceof ExternalAuthenticationException);
+ }
+
}
/**
@@ -210,12 +216,15 @@ public class DuoOIDCAuthnControllerTest {
*/
@Test
public void testCallbackNoState() throws Exception {
- final Exception exception = Assertions.assertThrows(NestedServletException.class, () -> {
+ try {
mockMvc.perform(get("/Authn/Duo/2FA/duo-callback").
param("code", "db87f45083db5aea16eb45b7ace685c8")).
andDo(print());
- });
- Assertions.assertTrue(exception.getCause() instanceof ExternalAuthenticationException);
+
+ } catch (final NestedServletException e) {
+ assertTrue(e.getCause() instanceof ExternalAuthenticationException);
+ }
+
}
/**
@@ -293,7 +302,7 @@ public class DuoOIDCAuthnControllerTest {
*/
private void removeDuoContext() {
final Object flowExecutorObject = servletContext.getAttribute(ExternalAuthentication.SWF_KEY);
- Assertions.assertTrue(flowExecutorObject instanceof FlowExecutorImpl);
+ assertTrue(flowExecutorObject instanceof FlowExecutorImpl);
final Object prcObject = ((FlowExecutorImpl)flowExecutorObject).getExecutionRepository().
getFlowExecution(new CompositeFlowExecutionKey("1", "1")).
@@ -313,16 +322,16 @@ public class DuoOIDCAuthnControllerTest {
*/
@Nonnull private DuoOIDCAuthenticationContext extractDuoContext() {
final Object flowExecutorObject = servletContext.getAttribute(ExternalAuthentication.SWF_KEY);
- Assertions.assertTrue(flowExecutorObject instanceof FlowExecutorImpl);
+ assertTrue(flowExecutorObject instanceof FlowExecutorImpl);
final Object prcObject = ((FlowExecutorImpl)flowExecutorObject).getExecutionRepository().
getFlowExecution(new CompositeFlowExecutionKey("1", "1")).
getConversationScope().get(ProfileRequestContext.BINDING_KEY);
- Assertions.assertTrue(prcObject instanceof ProfileRequestContext);
+ assertTrue(prcObject instanceof ProfileRequestContext);
final DuoOIDCAuthenticationContext duoContext = ((ProfileRequestContext)prcObject).
getSubcontext(AuthenticationContext.class).getSubcontext(DuoOIDCAuthenticationContext.class);
- Assertions.assertNotNull(duoContext);
+ assertNotNull(duoContext);
return duoContext;
}
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ExchangeCodeForDuoTokenTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ExchangeCodeForDuoTokenTest.java
index c66501a..160f2c1 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ExchangeCodeForDuoTokenTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ExchangeCodeForDuoTokenTest.java
@@ -17,12 +17,10 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import static org.junit.jupiter.api.Assertions.*;
+import org.testng.annotations.Test;
+import org.testng.annotations.BeforeMethod;
+import org.testng.AssertJUnit;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.webflow.execution.Event;
@@ -41,15 +39,15 @@ public class ExchangeCodeForDuoTokenTest extends AbstractDuoActionTest {
/** The action to test. */
private ExchangeCodeForDuoToken action;
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
super.setup();
action = new ExchangeCodeForDuoToken();
}
- @Test
- @DisplayName("Test ExchangeCodeForDuoToken executes succesfully")
+ /** Test ExchangeCodeForDuoToken executes successfully.*/
+ @Test
public void testExecuteSuccess() throws ComponentInitializationException, DuoRegistryException, DuoClientException {
addDuoContext();
addDuoIntegrationToContext();
@@ -63,11 +61,11 @@ public class ExchangeCodeForDuoTokenTest extends AbstractDuoActionTest {
action.initialize();
final Event event = action.execute(src);
// success here is a null event
- Assertions.assertNull(event);
+ AssertJUnit.assertNull(event);
}
- @Test
- @DisplayName("Test ExchangeCodeForDuoToken with no authorization code")
+ /** Test ExchangeCodeForDuoToken with no authorization code.*/
+ @Test
public void testExecuteNoAuthCode()
throws ComponentInitializationException, DuoRegistryException, DuoClientException {
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPITest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPITest.java
index 82210c8..3025f02 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPITest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/HealthCheckDuoOIDCAuthAPITest.java
@@ -17,16 +17,12 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+import static org.testng.Assert.assertNull;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
-import org.opensaml.profile.action.EventIds;
import org.springframework.webflow.execution.Event;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DuoClientException;
import net.shbboleth.idp.plugin.authn.duo.DuoOIDCClientRegistry;
@@ -42,7 +38,7 @@ class HealthCheckDuoOIDCAuthAPITest extends AbstractDuoActionTest {
/** The action to test. */
private HealthCheckDuoOIDCAuthAPI healthCheckAction;
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
super.setup();
healthCheckAction = new HealthCheckDuoOIDCAuthAPI();
@@ -50,7 +46,7 @@ class HealthCheckDuoOIDCAuthAPITest extends AbstractDuoActionTest {
}
/* Test for a healthy endpoint. */
- @Test @DisplayName("Test for an OK health check")
+ @Test
void testDoExecuteHealthy() throws DuoRegistryException, ComponentInitializationException, DuoClientException {
addDuoContext();
addDuoIntegrationToContext();
@@ -63,12 +59,12 @@ class HealthCheckDuoOIDCAuthAPITest extends AbstractDuoActionTest {
healthCheckAction.initialize();
final Event event = healthCheckAction.execute(src);
// success here is a null event
- Assertions.assertNull(event);
+ assertNull(event);
}
/* Test for an unhealthy endpoint. */
- @Test @DisplayName("Test for an unhealthy/failed health check")
+ @Test
void testDoExecuteUnHealthy() throws DuoRegistryException, ComponentInitializationException, DuoClientException {
addDuoContext();
addDuoIntegrationToContext();
@@ -86,7 +82,7 @@ class HealthCheckDuoOIDCAuthAPITest extends AbstractDuoActionTest {
}
/* Test for an unknown response from the health endpoint. */
- @Test @DisplayName("Test for an unknown health check response")
+ @Test
void testDoExecuteUnknown() throws DuoRegistryException, ComponentInitializationException, DuoClientException {
addDuoContext();
addDuoIntegrationToContext();
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContextTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContextTest.java
index 8bd7f36..0a84012 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContextTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/PopulateDuoAuthenticationContextTest.java
@@ -17,12 +17,12 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
+import static org.testng.Assert.assertNull;
+
import org.opensaml.profile.action.EventIds;
import org.springframework.webflow.execution.Event;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
import net.shibboleth.idp.authn.AuthnEventIds;
@@ -41,7 +41,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
*
* @throws Exception on exception.
*/
- @BeforeEach public void setUp() throws Exception {
+ @BeforeMethod public void setUp() throws Exception {
super.setup();
action = new PopulateDuoAuthenticationContext();
@@ -52,7 +52,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
*
* @throws ComponentInitializationException on error.
*/
- @Test @DisplayName("Test populate duo context execution, success")
+ @Test
public void testExecuteSuccess() throws ComponentInitializationException {
final DefaultDuoOIDCIntegration integ = createDummyDuoIntegration();
//set the duo integration strategy to lookup this
@@ -62,7 +62,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
action.initialize();
final Event event = action.execute(src);
//success here is a null event
- Assertions.assertNull(event);
+ assertNull(event);
}
/**
@@ -70,7 +70,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
*
* @throws ComponentInitializationException on error.
*/
- @Test @DisplayName("Test populate duo context, no Duo integration")
+ @Test
public void testExecuteNoDuoIntegration() throws ComponentInitializationException {
action.initialize();
@@ -84,7 +84,7 @@ public class PopulateDuoAuthenticationContextTest extends AbstractDuoActionTest{
*
* @throws ComponentInitializationException on error.
*/
- @Test @DisplayName("Test populate duo context, null username")
+ @Test
public void testExecuteNullUsername() throws ComponentInitializationException {
final DefaultDuoOIDCIntegration integ = createDummyDuoIntegration();
//set the duo integration strategy to lookup this
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseStateTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseStateTest.java
index d6448a5..23a28f9 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseStateTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoResponseStateTest.java
@@ -17,11 +17,11 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
+import static org.testng.Assert.assertNull;
+
import org.springframework.webflow.execution.Event;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shibboleth.idp.authn.AuthnEventIds;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
@@ -34,14 +34,15 @@ public class ValidateDuoResponseStateTest extends AbstractDuoActionTest{
/** The action to test. */
private ValidateDuoResponseState action;
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
super.setup();
action = new ValidateDuoResponseState();
}
- @Test @DisplayName("Test Duo 2FA response validation, success.")
+ /** Test Duo 2FA response validation, success.*/
+ @Test
public void testExecuteSuccess() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -52,10 +53,11 @@ public class ValidateDuoResponseStateTest extends AbstractDuoActionTest{
action.initialize();
final Event event = action.execute(src);
//null event is success.
- Assertions.assertNull(event);
+ assertNull(event);
}
- @Test @DisplayName("Test Duo 2FA response validation, no state in either request or response.")
+ /** Test Duo 2FA response validation, no state in either request or response.*/
+ @Test
public void testExecuteNoStateInRequestOrResponse() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -65,7 +67,8 @@ public class ValidateDuoResponseStateTest extends AbstractDuoActionTest{
assertEventId(event,AuthnEventIds.AUTHN_EXCEPTION);
}
- @Test @DisplayName("Test Duo 2FA response validation, no state in response.")
+ /** Test Duo 2FA response validation, no state in response. */
+ @Test
public void testExecuteNoStateInResponse() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -76,7 +79,8 @@ public class ValidateDuoResponseStateTest extends AbstractDuoActionTest{
assertEventId(event,AuthnEventIds.AUTHN_EXCEPTION);
}
- @Test @DisplayName("Test Duo 2FA response validation, no state in request.")
+ /** Test Duo 2FA response validation, no state in request.*/
+ @Test
public void testExecuteNoStateInRequest() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAudienceTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAudienceTest.java
index 8071fd4..90a6885 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAudienceTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAudienceTest.java
@@ -17,14 +17,14 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
+import static org.testng.Assert.assertNull;
+
import java.time.Instant;
import java.time.temporal.ChronoUnit;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
import org.springframework.webflow.execution.Event;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.idp.authn.AuthnEventIds;
@@ -38,15 +38,15 @@ public class ValidateDuoTokenAudienceTest extends AbstractDuoActionTest {
/** The action to test. */
private ValidateDuoTokenAudience action;
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
super.setup();
action = new ValidateDuoTokenAudience();
}
+ /** Test Duo 2FA token response audience validation, success.*/
@Test
- @DisplayName("Test Duo 2FA token response audience validation, success.")
public final void testDoExecuteSuccess() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -56,12 +56,12 @@ public class ValidateDuoTokenAudienceTest extends AbstractDuoActionTest {
action.initialize();
final Event event = action.execute(src);
// null event is success.
- Assertions.assertNull(event);
+ assertNull(event);
}
+ /** Test Duo 2FA token response audience validation, wrong audience.*/
@Test
- @DisplayName("Test Duo 2FA token response audience validation, wrong audience.")
public final void testDoExecuteWrongAudience() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResultTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResultTest.java
index eca9d9e..e725765 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResultTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationResultTest.java
@@ -17,6 +17,8 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
+import static org.testng.Assert.assertNull;
+
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
@@ -24,11 +26,9 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
import org.springframework.webflow.execution.Event;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.idp.authn.AuthnEventIds;
@@ -42,7 +42,7 @@ public class ValidateDuoTokenAuthenticationResultTest extends AbstractDuoActionT
/** The action to test. */
private ValidateDuoTokenAuthenticationResult action;
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
super.setup();
action = new ValidateDuoTokenAuthenticationResult();
@@ -56,7 +56,6 @@ public class ValidateDuoTokenAuthenticationResultTest extends AbstractDuoActionT
* @throws ComponentInitializationException on error.
*/
@Test
- @DisplayName("Test validation of Duo 2FA token execution, success")
public void testExecuteSuccess() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -68,7 +67,7 @@ public class ValidateDuoTokenAuthenticationResultTest extends AbstractDuoActionT
final Event event = action.execute(src);
// success here is a null event
- Assertions.assertNull(event);
+ assertNull(event);
}
/**
@@ -76,7 +75,7 @@ public class ValidateDuoTokenAuthenticationResultTest extends AbstractDuoActionT
*
* @throws ComponentInitializationException on error.
*/
- @Test @DisplayName("Test validation, no Duo Context")
+ @Test
public void testNoDuoContext() throws ComponentInitializationException {
addAttemptedFlow("authn/DuoOIDC");
action.initialize();
@@ -86,11 +85,11 @@ public class ValidateDuoTokenAuthenticationResultTest extends AbstractDuoActionT
}
/**
- * Test validation of a token whoes 2FA request was denied.
+ * Test validation of a token who's 2FA request was denied.
*
* @throws ComponentInitializationException on error.
*/
- @Test @DisplayName("Test validation of Duo 2FA token with classifed message, request denied")
+ @Test
public void testExecuteRequestDenied() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -115,7 +114,6 @@ public class ValidateDuoTokenAuthenticationResultTest extends AbstractDuoActionT
* @throws ComponentInitializationException on error.
*/
@Test
- @DisplayName("Test validation of Duo 2FA token when the token is null")
public void testExecuteNoDuoAuthToken() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -130,13 +128,12 @@ public class ValidateDuoTokenAuthenticationResultTest extends AbstractDuoActionT
/**
* Test unsuccessful execution when the token specifies a 2FA failure. Note,
- * this is unlikely to ever happen in practice, as failure is not reported back
- * to the IdP.
+ * this is unlikely to ever happen in practice if using the native Duo client,
+ * as failure is not reported back to the IdP.
*
* @throws ComponentInitializationException on error.
*/
@Test
- @DisplayName("Test validation of Duo 2FA token which has failed 2FA")
public void testExecuteFailedToken() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationTimeTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationTimeTest.java
index 6a4738a..0af98a7 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationTimeTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenAuthenticationTimeTest.java
@@ -1,16 +1,16 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import static org.junit.jupiter.api.Assertions.*;
+
+import static org.testng.Assert.assertNull;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
+
import org.springframework.webflow.execution.Event;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.idp.authn.AuthnEventIds;
@@ -24,15 +24,24 @@ public class ValidateDuoTokenAuthenticationTimeTest extends AbstractDuoActionTes
/** The action to test. */
private ValidateDuoTokenAuthenticationTime action;
- @BeforeEach
+ /**
+ * Setup
+ *
+ * @throws Exception on error.
+ */
+ @BeforeMethod
public void setUp() throws Exception {
super.setup();
action = new ValidateDuoTokenAuthenticationTime();
}
+ /**
+ * Test Duo 2FA token response authentication time validation, success.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response authentication time validation, success.")
public final void testDoExecuteSuccess() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -45,12 +54,16 @@ public class ValidateDuoTokenAuthenticationTimeTest extends AbstractDuoActionTes
action.initialize();
final Event event = action.execute(src);
// null event is success.
- Assertions.assertNull(event);
+ assertNull(event);
}
+ /**
+ * Test Duo 2FA token response authentication time validation, not forced auth.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response authentication time validation, not forced auth.")
public final void testDoExecuteSuccessNotForcedAuth() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -63,12 +76,16 @@ public class ValidateDuoTokenAuthenticationTimeTest extends AbstractDuoActionTes
action.initialize();
final Event event = action.execute(src);
// null event is success.
- Assertions.assertNull(event);
+ assertNull(event);
}
+ /**
+ * Test Duo 2FA token response authentication time validation, outside window but not force authn.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response authentication time validation, outside window but not force authn.")
public final void testDoExecuteSuccessOutsideLifetimeNotForcedAuthn() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -81,12 +98,16 @@ public class ValidateDuoTokenAuthenticationTimeTest extends AbstractDuoActionTes
action.initialize();
final Event event = action.execute(src);
// null event is success.
- Assertions.assertNull(event);
+ assertNull(event);
}
+ /**
+ * Test Duo 2FA token response authentication time validation, outside lifetime window.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response authentication time validation, outside lifetime window.")
public final void testDoExecuteOutsideLifetime() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -102,8 +123,12 @@ public class ValidateDuoTokenAuthenticationTimeTest extends AbstractDuoActionTes
}
+ /**
+ * Test Duo 2FA token response authentication time validation, in the future.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response authentication time validation, in the future.")
public final void testDoExecuteInTheFuture() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenExpirationTimeTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenExpirationTimeTest.java
index 111747e..4d54bcb 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenExpirationTimeTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenExpirationTimeTest.java
@@ -17,17 +17,15 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.testng.Assert.assertNull;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
import org.springframework.webflow.execution.Event;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.idp.authn.AuthnEventIds;
@@ -39,7 +37,7 @@ public class ValidateDuoTokenExpirationTimeTest extends AbstractDuoActionTest {
/** The action to test. */
private ValidateDuoTokenExpirationTime action;
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
super.setup();
action = new ValidateDuoTokenExpirationTime();
@@ -47,8 +45,12 @@ public class ValidateDuoTokenExpirationTimeTest extends AbstractDuoActionTest {
}
+ /**
+ * Test Duo 2FA token response expiration time validation, success.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response expiration time validation, success.")
public final void testDoExecuteSuccess() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -58,12 +60,16 @@ public class ValidateDuoTokenExpirationTimeTest extends AbstractDuoActionTest {
action.initialize();
final Event event = action.execute(src);
// null event is success.
- Assertions.assertNull(event);
+ assertNull(event);
}
+ /**
+ * Test Duo 2FA token response expiration time validation, expired token.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response expiration time validation, expired token.")
public final void testDoExecuteExpiredToken() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -77,8 +83,12 @@ public class ValidateDuoTokenExpirationTimeTest extends AbstractDuoActionTest {
}
+ /**
+ * Test Duo 2FA token response expiration time validation, within clock skew, success.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response expiration time validation, within clock skew, success.")
public final void testDoExecuteWithinClockSkewSuccess() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -92,12 +102,16 @@ public class ValidateDuoTokenExpirationTimeTest extends AbstractDuoActionTest {
action.initialize();
final Event event = action.execute(src);
// null event is success.
- Assertions.assertNull(event);
+ assertNull(event);
}
+ /**
+ * Test Duo 2FA token response expiration time validation, set zero clock skew expired token.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response expiration time validation, set zero clock skew expired token.")
public final void testDoExecuteSetZeroClockSkewExpiredToken() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenIssuedAtTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenIssuedAtTest.java
index af62bb0..9ab7f3d 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenIssuedAtTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenIssuedAtTest.java
@@ -16,17 +16,18 @@
*/
package net.shibboleth.idp.plugin.authn.duo.impl;
-import static org.junit.jupiter.api.Assertions.*;
+
+
+import static org.testng.Assert.assertNull;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
+
import org.springframework.webflow.execution.Event;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.idp.authn.AuthnEventIds;
@@ -41,15 +42,19 @@ public class ValidateDuoTokenIssuedAtTest extends AbstractDuoActionTest {
/** The action to test. */
private ValidateDuoTokenIssuedAt action;
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
super.setup();
action = new ValidateDuoTokenIssuedAt();
}
+ /**
+ * Test Duo 2FA token response token lifetime (issuedAt) validation, success.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response token lifetime (issuedAt) validation, success.")
public final void testDoExecuteSuccess() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -59,12 +64,16 @@ public class ValidateDuoTokenIssuedAtTest extends AbstractDuoActionTest {
action.initialize();
final Event event = action.execute(src);
// null event is success.
- Assertions.assertNull(event);
+ assertNull(event);
}
+ /**
+ * Test Duo 2FA token response token lifetime (issuedAt) validation, to far in the past.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response token lifetime (issuedAt) validation, to far in the past.")
public final void testDoExecuteToFarInThePast() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -79,8 +88,12 @@ public class ValidateDuoTokenIssuedAtTest extends AbstractDuoActionTest {
}
+ /**
+ * Test Duo 2FA token response token lifetime (issuedAt) validation, to far in the future.
+ *
+ * @throws ComponentInitializationException on error.
+ */
@Test
- @DisplayName("Test Duo 2FA token response token lifetime (issuedAt) validation, to far in the future.")
public final void testDoExecuteToFarInTheFuture() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
diff --git a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenSubjectTest.java b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenSubjectTest.java
index 7477391..0ae9b1b 100644
--- a/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenSubjectTest.java
+++ b/idp-duo-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/impl/ValidateDuoTokenSubjectTest.java
@@ -17,14 +17,14 @@
package net.shibboleth.idp.plugin.authn.duo.impl;
+import static org.testng.Assert.assertNull;
+
import java.time.Instant;
import java.time.temporal.ChronoUnit;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
import org.springframework.webflow.execution.Event;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DuoOIDCAuthAPI;
import net.shibboleth.idp.authn.AuthnEventIds;
@@ -35,14 +35,19 @@ class ValidateDuoTokenSubjectTest extends AbstractDuoActionTest {
/** The action to test. */
private ValidateDuoTokenSubject action;
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
super.setup();
action = new ValidateDuoTokenSubject();
}
- @Test @DisplayName("Test Duo 2FA token subject validation, success")
+ /**
+ * Test Duo 2FA token subject validation, success.
+ *
+ * @throws ComponentInitializationException on error.
+ */
+ @Test
public final void testExecuteSuccesful() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
@@ -53,10 +58,15 @@ class ValidateDuoTokenSubjectTest extends AbstractDuoActionTest {
action.initialize();
final Event event = action.execute(src);
// null event is success.
- Assertions.assertNull(event);
+ assertNull(event);
}
- @Test @DisplayName("Test Duo 2FA token subject validation, failure")
+ /**
+ * Test Duo 2FA token subject validation, failure.
+ *
+ * @throws ComponentInitializationException on error.
+ */
+ @Test
public final void testExecuteInvalidSubject() throws ComponentInitializationException {
addDuoContext();
addDuoIntegrationToContext();
diff --git a/idp-duo-native-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactoryTest.java b/idp-duo-native-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactoryTest.java
index cd6eb84..8a3dd1b 100644
--- a/idp-duo-native-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactoryTest.java
+++ b/idp-duo-native-client-impl/src/test/java/net/shibboleth/idp/plugin/authn/duo/sdk/impl/DuoSDKClientFactoryTest.java
@@ -1,12 +1,12 @@
package net.shibboleth.idp.plugin.authn.duo.sdk.impl;
+import static org.testng.Assert.assertNotNull;
+
import java.util.ArrayList;
import java.util.List;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import net.shbboleth.idp.plugin.authn.duo.DefaultDuoOIDCIntegration;
import net.shbboleth.idp.plugin.authn.duo.DuoClientException;
@@ -16,18 +16,20 @@ public class DuoSDKClientFactoryTest {
private DuoSDKClientFactory factory;
- @BeforeEach
+ @BeforeMethod
public void setUp() throws Exception {
factory = new DuoSDKClientFactory();
}
- @Test @DisplayName("Test succesful set of null CA certs")
+ /** Test succesful set of null CA certs.*/
+ @Test
public final void testSetNullCaCerts() {
factory.setCaCerts(null);
}
- @Test @DisplayName("Test succesful set of CA certs")
+ /** Test succesful set of CA certs.*/
+ @Test
public final void testSetCaCerts() {
final List<String> certs = new ArrayList<>();
certs.add("sha256/I/Lt/z7ekCWanjD0Cvj5EqXls2lOaThEA0H2Bg4BT/o=");
@@ -44,7 +46,7 @@ public class DuoSDKClientFactoryTest {
integ.setRedirectURI("http://localhost/");
integ.setSecretKey("rFvDfPul27v3Wew2zb6xRPzAJewJ34MP2w8UitPh");
DuoOIDCClient client = factory.createInstance(integ);
- Assertions.assertNotNull(client);
+ assertNotNull(client);
}
}
diff --git a/pom.xml b/pom.xml
index 708eb74..f5561f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,7 @@
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.release>11</maven.compiler.release>
<shib.idp.version>4.1.0-SNAPSHOT</shib.idp.version>
+ <maven-jar-plugin.version>3.2.0</maven-jar-plugin.version>
<opensaml.version>4.0.0</opensaml.version>
<opensaml.groupId>org.opensaml</opensaml.groupId>
<idp.groupId>net.shibboleth.idp</idp.groupId>
@@ -23,13 +24,14 @@
<slf4j.groupId>org.slf4j</slf4j.groupId>
<slf4j.version>1.7.30</slf4j.version>
<spring.groupId>org.springframework</spring.groupId>
+ <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<java-support.version>8.1.0-SNAPSHOT</java-support.version>
<spring-webflow.groupId>org.springframework.webflow</spring-webflow.groupId>
<spring-webflow.version>2.5.1.RELEASE</spring-webflow.version>
<checkstyle.configLocation>${project.basedir}/../resources/checkstyle.xml</checkstyle.configLocation>
</properties>
- <!-- required for general project properties -->
+ <!-- required for general project properties. REMOVED THE PARENT because of surefire-testng conflict -->
<parent>
<groupId>net.shibboleth.idp</groupId>
@@ -173,13 +175,23 @@
<artifactId>spring-test</artifactId>
</dependency>
+ <!-- FIXME: change SWF to testng? -->
+ <!-- For compatibility with SWF flow tests -->
<dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter</artifactId>
- <version>${junit.jupitar.version}</version>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
<scope>test</scope>
</dependency>
+ <!-- Inline with the inherited IdP testNG for all tests
+ other than the flows tests -->
+ <dependency>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <version>7.1.0</version>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.mockito</groupId>
@@ -188,9 +200,10 @@
</dependency>
</dependencies>
+
+
<dependencyManagement>
<dependencies>
- <!-- REMOVE THESE -->
<!-- IdP BOM when importing IdP deps TODO: this inherits properties from java-parent as well -->
<dependency>
<groupId>net.shibboleth.idp</groupId>
@@ -210,6 +223,7 @@
</dependency>
+
<!-- Duo dependencies -->
<dependency>
<groupId>com.duosecurity</groupId>
@@ -242,31 +256,17 @@
</dependencies>
</dependencyManagement>
+
<build>
<plugins>
<plugin>
- <!-- FIXME: Exclude testng tests, include junit -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <properties>
- <property>
- <!-- stop the inherited testng surefire plugin
- from running junit tests and failing. -->
- <name>junit</name>
- <value>false</value>
- </property>
- </properties>
- </configuration>
-
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>license-maven-plugin</artifactId>
- <version>2.0.0</version>
</plugin>
</plugins>
</build>
+
+
</project>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list