[java-identity-provider] branch main updated: Migrate IdP testing APIs to new module.

Scott Cantor cantor.2 at osu.edu
Mon Sep 19 16:00:28 UTC 2022


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

scantor 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=77919cc697651c0321b7e6f3a129e8734ddc7ad4

The following commit(s) were added to refs/heads/main by this push:
     new 77919cc69 Migrate IdP testing APIs to new module.
77919cc69 is described below

commit 77919cc697651c0321b7e6f3a129e8734ddc7ad4
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Sep 19 12:00:25 2022 -0400

    Migrate IdP testing APIs to new module.
---
 idp-admin-api/pom.xml                              |   4 -
 idp-admin-impl/pom.xml                             |   7 +-
 idp-authn-api/pom.xml                              |  19 ---
 idp-authn-impl/pom.xml                             |  14 +-
 .../context/impl}/AuthenticationContextTest.java   |   4 +-
 .../SubjectCanonicalizationFlowDescriptorTest.java |   3 +-
 idp-bom/pom.xml                                    |  11 +-
 idp-conf/pom.xml                                   | 177 ++++++++++++++++++++-
 idp-consent-impl/pom.xml                           |   3 +-
 idp-core/pom.xml                                   |  17 --
 idp-parent/pom.xml                                 |  23 +++
 idp-profile-api/pom.xml                            |   8 +-
 .../net/shibboleth/idp/profile/ScriptedAction.java |   8 +-
 idp-profile-impl/pom.xml                           |   9 +-
 .../tests}/AbstractProfileConfigurationTest.java   |   4 +-
 .../SpringStatusMessageLookupFunctionTest.java     |   2 +-
 .../profile/impl}/AbstractProfileActionTest.java   |   3 +-
 .../idp/profile/impl}/ScriptedActionTest.java      |   3 +-
 .../ProfileInterceptorFlowDescriptorTest.java      |   3 +-
 .../impl}/RelyingPartyConfigurationTest.java       |   3 +-
 idp-saml-api/pom.xml                               |  54 +------
 .../AbstractSAML2ProfileConfigurationTest.java     |   1 -
 ...ArtifactResolutionProfileConfigurationTest.java |   2 -
 idp-saml-impl/pom.xml                              |  44 +----
 .../DefaultNameIdentifierFormatStrategyTest.java   |   3 +-
 .../tests}/EntityAttributesPredicateTest.java      |   3 +-
 .../impl/AddAttributeStatementToAssertionTest.java |   2 +-
 .../AddAuthenticationStatementToAssertionTest.java |   2 +-
 ...ultAuthenticationMethodsLookupFunctionTest.java |   3 +-
 .../tests}/ProxyRestrictionLookupFunctionTest.java |   3 +-
 .../impl/AddAttributeStatementToAssertionTest.java |   2 +-
 .../saml2/profile/impl/AddAuthnRequestTest.java    |   2 +-
 .../impl/AddAuthnStatementToAssertionTest.java     |   2 +-
 .../profile/impl/PreProcessLogoutMessageTest.java  |   2 +-
 .../profile/impl/ProcessLogoutRequestTest.java     |   3 +-
 .../impl/ProcessRequestedAuthnContextTest.java     |   2 +-
 .../profile/impl}/SessionManagerBaseTestCase.java  |   2 +-
 .../profile/logic/attribute-mapping-metadata.xml   |   0
 .../profile/logic/attribute-registry-service.xml   |   0
 .../idp/saml/profile/logic/attribute-registry.xml  |   0
 .../idp/saml/profile/logic/rules/subjectid.txt     |   0
 .../idp/saml/profile/logic/rules/zorkmids.txt      |   0
 idp-session-impl/pom.xml                           |  14 +-
 .../idp/session/impl/DestroySessionsTest.java      |   1 -
 .../idp/session/impl/DetectIdentitySwitchTest.java |   1 -
 .../session/impl/PopulateSessionContextTest.java   |   1 -
 .../idp/session/impl/ProcessLogoutTest.java        |   1 -
 .../{testing => }/SessionManagerBaseTestCase.java  |   2 +-
 .../impl/StorageBackedSessionManagerTest.java      |   1 -
 .../UpdateSessionWithAuthenticationResultTest.java |   1 -
 .../impl/UpdateSessionWithSPSessionTest.java       |   1 -
 idp-testing/.checkstyle                            |  15 ++
 idp-testing/.gitignore                             |   2 +
 {idp-consent-impl => idp-testing}/pom.xml          |  73 ++++-----
 .../MockAuthenticationProfileConfiguration.java    |   7 +-
 .../idp/authn/testing/TestPrincipal.java           |   0
 .../shibboleth/idp/authn/testing/package-info.java |   0
 .../idp/profile/testing/ActionTestingSupport.java  |   0
 .../profile/testing/MockProfileConfiguration.java  |   0
 .../idp/profile/testing/RequestContextBuilder.java |   0
 .../idp/profile/testing/package-info.java          |   0
 .../idp/saml/impl/testing/TestSources.java         |   0
 .../profile/testing}/ActionTestSupportAction.java  |   2 +-
 .../testing}/SAML1ActionTestingSupport.java        |   2 +-
 .../saml/saml1/profile}/testing/package-info.java  |   5 +-
 .../testing}/SAML2ActionTestingSupport.java        |   2 +-
 .../saml/saml2/profile}/testing/package-info.java  |   5 +-
 .../idp/testing/DatabaseTestingSupport.java        |   0
 .../net/shibboleth/idp/testing/package-info.java   |   0
 .../profile/testing}/SAML1ActionSupportTest.java   |   4 +-
 .../profile/testing}/SAML2ActionSupportTest.java   |   4 +-
 71 files changed, 337 insertions(+), 264 deletions(-)

diff --git a/idp-admin-api/pom.xml b/idp-admin-api/pom.xml
index d98850ea8..692dc0457 100644
--- a/idp-admin-api/pom.xml
+++ b/idp-admin-api/pom.xml
@@ -55,10 +55,6 @@
             <artifactId>opensaml-security-api</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>${shib-shared.groupId}</groupId>
-            <artifactId>shib-cli</artifactId>
-        </dependency>
         <dependency>
             <groupId>${shib-shared.groupId}</groupId>
             <artifactId>shib-networking</artifactId>
diff --git a/idp-admin-impl/pom.xml b/idp-admin-impl/pom.xml
index fd5ce90eb..91d917ea1 100644
--- a/idp-admin-impl/pom.xml
+++ b/idp-admin-impl/pom.xml
@@ -56,6 +56,10 @@
             <artifactId>opensaml-storage-api</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-cli</artifactId>
+        </dependency>
         <dependency>
             <groupId>${shib-shared.groupId}</groupId>
             <artifactId>shib-security</artifactId>
@@ -149,9 +153,8 @@
         <!-- Test Dependencies -->
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>idp-profile-api</artifactId>
+            <artifactId>idp-testing</artifactId>
             <version>${project.version}</version>
-            <type>test-jar</type>
             <scope>test</scope>
         </dependency>
 
diff --git a/idp-authn-api/pom.xml b/idp-authn-api/pom.xml
index c413d8191..35b9e677c 100644
--- a/idp-authn-api/pom.xml
+++ b/idp-authn-api/pom.xml
@@ -108,27 +108,8 @@
         </dependency>
 
         <!-- Runtime Dependencies -->
-        <dependency>
-            <groupId>org.glassfish</groupId>
-            <artifactId>jakarta.json</artifactId>
-            <scope>runtime</scope>
-        </dependency>
 
         <!-- Test Dependencies -->
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>idp-profile-api</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-            <type>test-jar</type>
-        </dependency>
-    
-        <dependency>
-            <groupId>${spring.groupId}</groupId>
-            <artifactId>spring-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-
     </dependencies>
 
     <scm>
diff --git a/idp-authn-impl/pom.xml b/idp-authn-impl/pom.xml
index d1f134966..faccae9cf 100644
--- a/idp-authn-impl/pom.xml
+++ b/idp-authn-impl/pom.xml
@@ -210,29 +210,19 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
-
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>idp-profile-api</artifactId>
+            <artifactId>idp-saml-api</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
-            <type>test-jar</type>
         </dependency>
-
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>idp-authn-api</artifactId>
+            <artifactId>idp-testing</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
-            <type>test-jar</type>
         </dependency>
 
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>idp-saml-api</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
 
         <dependency>
             <groupId>net.shibboleth</groupId>
diff --git a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/context/AuthenticationContextTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/context/impl/AuthenticationContextTest.java
similarity index 97%
rename from idp-authn-api/src/test/java/net/shibboleth/idp/authn/context/AuthenticationContextTest.java
rename to idp-authn-impl/src/test/java/net/shibboleth/idp/authn/context/impl/AuthenticationContextTest.java
index 1df85467e..dea85d5f0 100644
--- a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/context/AuthenticationContextTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/context/impl/AuthenticationContextTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.authn.context;
+package net.shibboleth.idp.authn.context.impl;
 
 import java.time.Instant;
 import java.util.Arrays;
@@ -25,6 +25,8 @@ import javax.security.auth.Subject;
 
 import net.shibboleth.idp.authn.AuthenticationFlowDescriptor;
 import net.shibboleth.idp.authn.AuthenticationResult;
+import net.shibboleth.idp.authn.context.AuthenticationContext;
+import net.shibboleth.idp.authn.context.RequestedPrincipalContext;
 import net.shibboleth.idp.authn.principal.PrincipalEvalPredicateFactoryRegistry;
 import net.shibboleth.idp.authn.testing.TestPrincipal;
 
diff --git a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptorTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/tests/SubjectCanonicalizationFlowDescriptorTest.java
similarity index 96%
rename from idp-authn-api/src/test/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptorTest.java
rename to idp-authn-impl/src/test/java/net/shibboleth/idp/authn/tests/SubjectCanonicalizationFlowDescriptorTest.java
index 1a6d2a335..4eb30e36f 100644
--- a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptorTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/tests/SubjectCanonicalizationFlowDescriptorTest.java
@@ -15,8 +15,9 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.authn;
+package net.shibboleth.idp.authn.tests;
 
+import net.shibboleth.idp.authn.SubjectCanonicalizationFlowDescriptor;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
diff --git a/idp-bom/pom.xml b/idp-bom/pom.xml
index 1eac62767..402db2c63 100644
--- a/idp-bom/pom.xml
+++ b/idp-bom/pom.xml
@@ -100,7 +100,12 @@
                 <artifactId>idp-session-impl</artifactId>
                 <version>${project.version}</version>
             </dependency>
-            
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>idp-ui</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
             <dependency>
                 <groupId>${project.groupId}</groupId>
                 <artifactId>idp-spring</artifactId>
@@ -140,10 +145,12 @@
                 <version>${project.version}</version>
             </dependency>
             
+
             <dependency>
                 <groupId>${project.groupId}</groupId>
-                <artifactId>idp-ui</artifactId>
+                <artifactId>idp-testing</artifactId>
                 <version>${project.version}</version>
+                <scope>test</scope>
             </dependency>
         </dependencies>
     </dependencyManagement>
diff --git a/idp-conf/pom.xml b/idp-conf/pom.xml
index edec02932..81b5b4af6 100644
--- a/idp-conf/pom.xml
+++ b/idp-conf/pom.xml
@@ -34,12 +34,24 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>idp-authn-api</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>idp-authn-impl</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>idp-cas-api</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>idp-cas-impl</artifactId>
@@ -52,12 +64,36 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>idp-consent-api</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>idp-consent-impl</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>idp-core</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>idp-profile-api</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>idp-profile-impl</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>idp-spring</artifactId>
@@ -76,6 +112,12 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>idp-session-api</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>idp-session-impl</artifactId>
@@ -83,6 +125,11 @@
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>net.shibboleth</groupId>
+            <artifactId>shib-attribute-api</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>net.shibboleth</groupId>
             <artifactId>shib-attribute-filter-spring</artifactId>
@@ -95,8 +142,13 @@
         </dependency>
 
         <dependency>
-            <groupId>com.unboundid</groupId>
-            <artifactId>unboundid-ldapsdk</artifactId>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-core-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-messaging-api</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -104,27 +156,95 @@
             <artifactId>opensaml-messaging-impl</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-profile-api</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-profile-impl</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-saml-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-security-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-soap-api</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-storage-impl</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-xmlsec-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-xmlsec-impl</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-testing</artifactId>
             <scope>test</scope>
         </dependency>
         
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-networking</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-security</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${shib-shared.groupId}</groupId>
             <artifactId>shib-security-spring</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-spring</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${shib-shared.groupId}</groupId>
+            <artifactId>shib-support</artifactId>
+            <scope>test</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.code.findbugs</groupId>
+            <artifactId>jsr305</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>${slf4j.groupId}</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>test</scope>
+        </dependency>
         
         <dependency>
             <groupId>org.mockito</groupId>
@@ -142,6 +262,43 @@
             <scope>test</scope>
         </dependency>
     
+        <dependency>
+            <groupId>org.ldaptive</groupId>
+            <artifactId>ldaptive</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.unboundid</groupId>
+            <artifactId>unboundid-ldapsdk</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>${spring.groupId}</groupId>
+            <artifactId>spring-beans</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${spring.groupId}</groupId>
+            <artifactId>spring-context</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${spring.groupId}</groupId>
+            <artifactId>spring-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${spring.groupId}</groupId>
+            <artifactId>spring-expression</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${spring.groupId}</groupId>
             <artifactId>spring-jdbc</artifactId>
@@ -152,6 +309,22 @@
             <artifactId>spring-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>${spring.groupId}</groupId>
+            <artifactId>spring-web</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${spring-webflow.groupId}</groupId>
+            <artifactId>spring-webflow</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${spring-webflow.groupId}</groupId>
+            <artifactId>spring-binding</artifactId>
+            <version>${spring-webflow.version}</version>
+            <scope>test</scope>
+        </dependency>
         
         <dependency>
             <groupId>jakarta.servlet</groupId>
diff --git a/idp-consent-impl/pom.xml b/idp-consent-impl/pom.xml
index 7a90c1c3a..497a04066 100644
--- a/idp-consent-impl/pom.xml
+++ b/idp-consent-impl/pom.xml
@@ -99,10 +99,9 @@
         <!-- Test Dependencies -->
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>idp-profile-api</artifactId>
+            <artifactId>idp-testing</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
-            <type>test-jar</type>
         </dependency>
 
         <dependency>
diff --git a/idp-core/pom.xml b/idp-core/pom.xml
index 00b0be16e..aa1e7b141 100644
--- a/idp-core/pom.xml
+++ b/idp-core/pom.xml
@@ -45,11 +45,6 @@
             <artifactId>shib-security</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>${shib-shared.groupId}</groupId>
-            <artifactId>shib-spring</artifactId>
-        </dependency>
-
         <dependency>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient</artifactId>
@@ -98,18 +93,6 @@
         <!-- Runtime Dependencies -->
 
         <!-- Test Dependencies -->
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.hsqldb</groupId>
-            <artifactId>hsqldb</artifactId>
-            <scope>test</scope>
-        </dependency>
-
     </dependencies>
 
     <build>
diff --git a/idp-parent/pom.xml b/idp-parent/pom.xml
index 4ecab48fb..852596422 100644
--- a/idp-parent/pom.xml
+++ b/idp-parent/pom.xml
@@ -54,6 +54,8 @@
 
         <module>../idp-ui</module>
 
+        <module>../idp-testing</module>
+
         <module>../idp-bom</module>
     </modules>
 
@@ -287,4 +289,25 @@
 
     </build>
 
+    <profiles>
+        <!--
+            Pull in a Javascript engine for testing in Java
+            versions where the JDK doesn't provide one.
+        -->
+        <profile>
+            <id>get-nashorn</id>
+            <activation>
+                <jdk>[15,</jdk>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>org.openjdk.nashorn</groupId>
+                    <artifactId>nashorn-core</artifactId>
+                    <version>${nashorn.jdk.version}</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+        </profile>
+    </profiles>
+
 </project>
diff --git a/idp-profile-api/pom.xml b/idp-profile-api/pom.xml
index b2b60f608..eae5648f9 100644
--- a/idp-profile-api/pom.xml
+++ b/idp-profile-api/pom.xml
@@ -102,23 +102,19 @@
         <!-- Runtime Dependencies -->
 
         <!-- Test Dependencies -->
+        <!-- Needed for XMLObject providers. -->
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-core-impl</artifactId>
             <scope>test</scope>
         </dependency>
+
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-testing</artifactId>
             <scope>test</scope>
         </dependency>
 
-        <dependency>
-            <groupId>${spring.groupId}</groupId>
-            <artifactId>spring-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-
     </dependencies>
 
     <profiles>
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/ScriptedAction.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/ScriptedAction.java
index 00e56ae49..5dc02d2d9 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/ScriptedAction.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/ScriptedAction.java
@@ -141,7 +141,7 @@ public class ScriptedAction extends AbstractProfileAction {
      * @throws IOException if the file doesn't exist.
      */
     @SuppressWarnings("removal")
-    static ScriptedAction resourceScript(@Nonnull @NotEmpty final String engineName, @Nonnull final Resource resource)
+    static public ScriptedAction resourceScript(@Nonnull @NotEmpty final String engineName, @Nonnull final Resource resource)
             throws ScriptException, IOException {
         try (final InputStream is = resource.getInputStream()) {
             final EvaluableScript script = new EvaluableScript();
@@ -160,7 +160,7 @@ public class ScriptedAction extends AbstractProfileAction {
      * @throws ScriptException if the compile fails
      * @throws IOException if the file doesn't exist.
      */
-    static ScriptedAction resourceScript(@Nonnull final Resource resource) throws ScriptException, IOException {
+    static public ScriptedAction resourceScript(@Nonnull final Resource resource) throws ScriptException, IOException {
         return resourceScript(DEFAULT_ENGINE, resource);
     }
 
@@ -173,7 +173,7 @@ public class ScriptedAction extends AbstractProfileAction {
      * @throws ScriptException if the compile fails
      */
     @SuppressWarnings("removal")
-    static ScriptedAction inlineScript(@Nonnull @NotEmpty final String engineName,
+    static public ScriptedAction inlineScript(@Nonnull @NotEmpty final String engineName,
             @Nonnull @NotEmpty final String scriptSource) throws ScriptException {
         final EvaluableScript script = new EvaluableScript();
                 script.setEngineName(engineName);
@@ -189,7 +189,7 @@ public class ScriptedAction extends AbstractProfileAction {
      * @return the predicate
      * @throws ScriptException if the compile fails
      */
-    static ScriptedAction inlineScript(@Nonnull @NotEmpty final String scriptSource) throws ScriptException {
+    static public ScriptedAction inlineScript(@Nonnull @NotEmpty final String scriptSource) throws ScriptException {
         return inlineScript(DEFAULT_ENGINE, scriptSource);
     }
 
diff --git a/idp-profile-impl/pom.xml b/idp-profile-impl/pom.xml
index a3806840f..4732416d2 100644
--- a/idp-profile-impl/pom.xml
+++ b/idp-profile-impl/pom.xml
@@ -92,10 +92,6 @@
             <groupId>${spring.groupId}</groupId>
             <artifactId>spring-context</artifactId>
         </dependency>
-        <dependency>
-            <groupId>${spring.groupId}</groupId>
-            <artifactId>spring-webmvc</artifactId>
-        </dependency>
         <dependency>
             <groupId>${spring-webflow.groupId}</groupId>
             <artifactId>spring-webflow</artifactId>
@@ -117,14 +113,13 @@
         <!-- Test Dependencies -->
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>idp-profile-api</artifactId>
+            <artifactId>idp-saml-impl</artifactId>
             <version>${project.version}</version>
-            <type>test-jar</type>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>idp-saml-impl</artifactId>
+            <artifactId>idp-testing</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/config/AbstractProfileConfigurationTest.java b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/config/tests/AbstractProfileConfigurationTest.java
similarity index 96%
rename from idp-profile-api/src/test/java/net/shibboleth/idp/profile/config/AbstractProfileConfigurationTest.java
rename to idp-profile-impl/src/test/java/net/shibboleth/idp/profile/config/tests/AbstractProfileConfigurationTest.java
index 5d7f845f0..4dde808a3 100644
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/config/AbstractProfileConfigurationTest.java
+++ b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/config/tests/AbstractProfileConfigurationTest.java
@@ -15,8 +15,10 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.profile.config;
+package net.shibboleth.idp.profile.config.tests;
 
+import net.shibboleth.idp.profile.config.AbstractProfileConfiguration;
+import net.shibboleth.idp.profile.config.SecurityConfiguration;
 import net.shibboleth.idp.profile.testing.MockProfileConfiguration;
 import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
 
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/context/navigate/SpringStatusMessageLookupFunctionTest.java b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/context/navigate/tests/SpringStatusMessageLookupFunctionTest.java
similarity index 98%
rename from idp-profile-api/src/test/java/net/shibboleth/idp/profile/context/navigate/SpringStatusMessageLookupFunctionTest.java
rename to idp-profile-impl/src/test/java/net/shibboleth/idp/profile/context/navigate/tests/SpringStatusMessageLookupFunctionTest.java
index 3261075af..5002fcf01 100644
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/context/navigate/SpringStatusMessageLookupFunctionTest.java
+++ b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/context/navigate/tests/SpringStatusMessageLookupFunctionTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.profile.context.navigate;
+package net.shibboleth.idp.profile.context.navigate.tests;
 
 import java.util.Locale;
 
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/AbstractProfileActionTest.java b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/impl/AbstractProfileActionTest.java
similarity index 98%
rename from idp-profile-api/src/test/java/net/shibboleth/idp/profile/AbstractProfileActionTest.java
rename to idp-profile-impl/src/test/java/net/shibboleth/idp/profile/impl/AbstractProfileActionTest.java
index ddeed26bf..22e40be85 100644
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/AbstractProfileActionTest.java
+++ b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/impl/AbstractProfileActionTest.java
@@ -15,8 +15,9 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.profile;
+package net.shibboleth.idp.profile.impl;
 
+import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.utilities.java.support.component.UninitializedComponentException;
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/ScriptedActionTest.java b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/impl/ScriptedActionTest.java
similarity index 97%
rename from idp-profile-api/src/test/java/net/shibboleth/idp/profile/ScriptedActionTest.java
rename to idp-profile-impl/src/test/java/net/shibboleth/idp/profile/impl/ScriptedActionTest.java
index eae91d5da..28ed9f80f 100644
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/ScriptedActionTest.java
+++ b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/impl/ScriptedActionTest.java
@@ -15,8 +15,9 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.profile;
+package net.shibboleth.idp.profile.impl;
 
+import net.shibboleth.idp.profile.ScriptedAction;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptorTest.java b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/interceptor/impl/ProfileInterceptorFlowDescriptorTest.java
similarity index 96%
rename from idp-profile-api/src/test/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptorTest.java
rename to idp-profile-impl/src/test/java/net/shibboleth/idp/profile/interceptor/impl/ProfileInterceptorFlowDescriptorTest.java
index 777b3819e..8d8f8acf3 100644
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptorTest.java
+++ b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/interceptor/impl/ProfileInterceptorFlowDescriptorTest.java
@@ -15,9 +15,10 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.profile.interceptor;
+package net.shibboleth.idp.profile.interceptor.impl;
 
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
+import net.shibboleth.idp.profile.interceptor.ProfileInterceptorFlowDescriptor;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.utilities.java.support.component.UnmodifiableComponentException;
 
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/relyingparty/RelyingPartyConfigurationTest.java b/idp-profile-impl/src/test/java/net/shibboleth/idp/relyingparty/impl/RelyingPartyConfigurationTest.java
similarity index 98%
rename from idp-profile-api/src/test/java/net/shibboleth/idp/relyingparty/RelyingPartyConfigurationTest.java
rename to idp-profile-impl/src/test/java/net/shibboleth/idp/relyingparty/impl/RelyingPartyConfigurationTest.java
index 7e1f2a9c3..9bfc967df 100644
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/relyingparty/RelyingPartyConfigurationTest.java
+++ b/idp-profile-impl/src/test/java/net/shibboleth/idp/relyingparty/impl/RelyingPartyConfigurationTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.relyingparty;
+package net.shibboleth.idp.relyingparty.impl;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -24,6 +24,7 @@ import java.util.Map;
 import com.google.common.base.Predicates;
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.testing.MockProfileConfiguration;
+import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
 import net.shibboleth.utilities.java.support.logic.FunctionSupport;
diff --git a/idp-saml-api/pom.xml b/idp-saml-api/pom.xml
index 89fbf3e56..5da8e4666 100644
--- a/idp-saml-api/pom.xml
+++ b/idp-saml-api/pom.xml
@@ -92,69 +92,23 @@
         <!-- Runtime Dependencies -->
 
         <!-- Test Dependencies -->
+        <!-- Needed for XMLObject providers. -->
         <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>idp-profile-api</artifactId>
-            <version>${project.version}</version>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>net.shibboleth</groupId>
-            <artifactId>shib-attribute-impl</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>net.shibboleth</groupId>
-            <artifactId>shib-saml-attribute-impl</artifactId>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-core-impl</artifactId>
             <scope>test</scope>
         </dependency>
-
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-saml-impl</artifactId>
             <scope>test</scope>
         </dependency>
+        
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-testing</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <dependency>
-            <groupId>${shib-shared.groupId}</groupId>
-            <artifactId>shib-service</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- Needed despite what dependency:analyze says -->
-        <dependency>
-            <groupId>jakarta.servlet</groupId>
-            <artifactId>jakarta.servlet-api</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- Needed despite what dependency:analyze says -->
-        <dependency>
-            <groupId>${spring.groupId}</groupId>
-            <artifactId>spring-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>${spring-webflow.groupId}</groupId>
-            <artifactId>spring-webflow</artifactId>
-            <scope>test</scope>
-        </dependency>
-        
-        <!-- Needed despite what dependency:analyze says -->
-        <dependency>
-            <groupId>org.xmlunit</groupId>
-            <artifactId>xmlunit-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-
     </dependencies>
 
     <scm>
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfigurationTest.java b/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfigurationTest.java
index cd431a4e6..07cf21283 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfigurationTest.java
+++ b/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/AbstractSAML2ProfileConfigurationTest.java
@@ -20,7 +20,6 @@ package net.shibboleth.idp.saml.saml2.profile.config;
 import java.util.HashSet;
 import java.util.Set;
 
-import net.shibboleth.idp.saml.saml2.profile.config.AbstractSAML2ProfileConfiguration;
 import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
 
 import net.shibboleth.utilities.java.support.logic.FunctionSupport;
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/ArtifactResolutionProfileConfigurationTest.java b/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/ArtifactResolutionProfileConfigurationTest.java
index d58cfe305..c581887a2 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/ArtifactResolutionProfileConfigurationTest.java
+++ b/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/ArtifactResolutionProfileConfigurationTest.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.saml.saml2.profile.config;
 
-import net.shibboleth.idp.saml.saml2.profile.config.ArtifactResolutionProfileConfiguration;
-
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git a/idp-saml-impl/pom.xml b/idp-saml-impl/pom.xml
index ae6997b53..cca9d83f7 100644
--- a/idp-saml-impl/pom.xml
+++ b/idp-saml-impl/pom.xml
@@ -125,11 +125,11 @@
         </dependency>
         <dependency>
             <groupId>${spring.groupId}</groupId>
-            <artifactId>spring-core</artifactId>
+            <artifactId>spring-context</artifactId>
         </dependency>
         <dependency>
             <groupId>${spring.groupId}</groupId>
-            <artifactId>spring-context</artifactId>
+            <artifactId>spring-core</artifactId>
         </dependency>
         <dependency>
             <groupId>${spring.groupId}</groupId>
@@ -160,13 +160,6 @@
         </dependency>
 
         <!-- Test Dependencies -->
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>idp-core</artifactId>
-            <version>${project.version}</version>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>idp-session-impl</artifactId>
@@ -181,32 +174,16 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>idp-profile-api</artifactId>
-            <version>${project.version}</version>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>idp-saml-api</artifactId>
+            <artifactId>idp-testing</artifactId>
             <version>${project.version}</version>
-            <type>test-jar</type>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>idp-session-impl</artifactId>
-            <version>${project.version}</version>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>        
 
         <dependency>
-            <groupId>net.shibboleth</groupId>
-            <artifactId>shib-attribute-resolver-api</artifactId>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-core-impl</artifactId>
             <scope>test</scope>
         </dependency>
-
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-storage-impl</artifactId>
@@ -229,17 +206,6 @@
             <scope>test</scope>
         </dependency>
 
-        <dependency>
-            <groupId>org.xmlunit</groupId>
-            <artifactId>xmlunit-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.xmlunit</groupId>
-            <artifactId>xmlunit-matchers</artifactId>
-            <scope>test</scope>
-        </dependency>
-
         <dependency>
             <groupId>${spring.groupId}</groupId>
             <artifactId>spring-test</artifactId>
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/profile/logic/DefaultNameIdentifierFormatStrategyTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/DefaultNameIdentifierFormatStrategyTest.java
similarity index 98%
rename from idp-saml-api/src/test/java/net/shibboleth/idp/saml/profile/logic/DefaultNameIdentifierFormatStrategyTest.java
rename to idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/DefaultNameIdentifierFormatStrategyTest.java
index 5920669aa..99e0208a2 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/profile/logic/DefaultNameIdentifierFormatStrategyTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/DefaultNameIdentifierFormatStrategyTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.profile.logic;
+package net.shibboleth.idp.saml.profile.logic.tests;
 
 import java.util.Arrays;
 import java.util.Collections;
@@ -23,6 +23,7 @@ import java.util.List;
 
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
+import net.shibboleth.idp.saml.profile.logic.DefaultNameIdentifierFormatStrategy;
 import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/profile/logic/EntityAttributesPredicateTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/EntityAttributesPredicateTest.java
similarity index 98%
rename from idp-saml-api/src/test/java/net/shibboleth/idp/saml/profile/logic/EntityAttributesPredicateTest.java
rename to idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/EntityAttributesPredicateTest.java
index 705713012..2e59b8034 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/profile/logic/EntityAttributesPredicateTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/logic/tests/EntityAttributesPredicateTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.profile.logic;
+package net.shibboleth.idp.saml.profile.logic.tests;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -43,6 +43,7 @@ import org.w3c.dom.Document;
 
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.impl.AttributeMappingNodeProcessor;
+import net.shibboleth.idp.saml.profile.logic.MappedEntityAttributesPredicate;
 import net.shibboleth.shared.spring.config.StringToDurationConverter;
 import net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
index 0911f01c9..60a1263f4 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
@@ -57,7 +57,7 @@ import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML1AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1StringAttributeTranscoder;
-import net.shibboleth.idp.saml.saml1.profile.SAML1ActionTestingSupport;
+import net.shibboleth.idp.saml.saml1.profile.testing.SAML1ActionTestingSupport;
 import net.shibboleth.shared.testing.MockApplicationContext;
 import net.shibboleth.shared.testing.MockReloadableService;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAuthenticationStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAuthenticationStatementToAssertionTest.java
index 849dc7123..fc949a03f 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAuthenticationStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAuthenticationStatementToAssertionTest.java
@@ -48,7 +48,7 @@ import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileR
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.saml.authn.principal.AuthenticationMethodPrincipal;
-import net.shibboleth.idp.saml.saml1.profile.SAML1ActionTestingSupport;
+import net.shibboleth.idp.saml.saml1.profile.testing.SAML1ActionTestingSupport;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 /** {@link AddAuthenticationStatementToAssertion} unit test. */
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest.java
similarity index 96%
rename from idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest.java
rename to idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest.java
index 3cdcb5b0d..54c809f45 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.saml2.profile.config.navigate;
+package net.shibboleth.idp.saml.saml2.profile.config.navigate.tests;
 
 import java.security.Principal;
 import java.util.Collection;
@@ -31,6 +31,7 @@ import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.saml.authn.principal.AuthenticationMethodPrincipal;
 import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
 import net.shibboleth.idp.saml.authn.principal.AuthnContextDeclRefPrincipal;
+import net.shibboleth.idp.saml.saml2.profile.config.navigate.ProxyAwareDefaultAuthenticationMethodsLookupFunction;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/ProxyRestrictionLookupFunctionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyRestrictionLookupFunctionTest.java
similarity index 98%
rename from idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/ProxyRestrictionLookupFunctionTest.java
rename to idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyRestrictionLookupFunctionTest.java
index 076b732ba..6853433be 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/ProxyRestrictionLookupFunctionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyRestrictionLookupFunctionTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.saml2.profile.config.navigate;
+package net.shibboleth.idp.saml.saml2.profile.config.navigate.tests;
 
 import java.util.Collections;
 import java.util.Set;
@@ -28,6 +28,7 @@ import net.shibboleth.idp.authn.principal.ProxyAuthenticationPrincipal;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
+import net.shibboleth.idp.saml.saml2.profile.config.navigate.ProxyRestrictionLookupFunction;
 import net.shibboleth.utilities.java.support.collection.Pair;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
index 641bad529..8bfe107f0 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
@@ -41,7 +41,7 @@ import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.SAML2AttributeTranscoder;
 import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2StringAttributeTranscoder;
-import net.shibboleth.idp.saml.saml2.profile.SAML2ActionTestingSupport;
+import net.shibboleth.idp.saml.saml2.profile.testing.SAML2ActionTestingSupport;
 import net.shibboleth.shared.testing.MockApplicationContext;
 import net.shibboleth.shared.testing.MockReloadableService;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnRequestTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnRequestTest.java
index 0f6617bd9..fd974a385 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnRequestTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnRequestTest.java
@@ -38,8 +38,8 @@ import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.idp.saml.authn.principal.AuthenticationMethodPrincipal;
 import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
-import net.shibboleth.idp.saml.saml2.profile.SAML2ActionTestingSupport;
 import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
+import net.shibboleth.idp.saml.saml2.profile.testing.SAML2ActionTestingSupport;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnStatementToAssertionTest.java
index ac79f1753..b97ff8d1a 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnStatementToAssertionTest.java
@@ -53,8 +53,8 @@ import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileR
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
-import net.shibboleth.idp.saml.saml2.profile.SAML2ActionTestingSupport;
 import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
+import net.shibboleth.idp.saml.saml2.profile.testing.SAML2ActionTestingSupport;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 /** {@link AddAuthnStatementToAssertion} unit test. */
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/PreProcessLogoutMessageTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/PreProcessLogoutMessageTest.java
index fd9290b51..669224244 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/PreProcessLogoutMessageTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/PreProcessLogoutMessageTest.java
@@ -20,7 +20,7 @@ package net.shibboleth.idp.saml.saml2.profile.impl;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-import net.shibboleth.idp.saml.saml2.profile.SAML2ActionTestingSupport;
+import net.shibboleth.idp.saml.saml2.profile.testing.SAML2ActionTestingSupport;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java
index 6ebdf1cbe..f46abe131 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java
@@ -31,8 +31,8 @@ import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-import net.shibboleth.idp.saml.saml2.profile.SAML2ActionTestingSupport;
 import net.shibboleth.idp.saml.saml2.profile.config.SingleLogoutProfileConfiguration;
+import net.shibboleth.idp.saml.saml2.profile.testing.SAML2ActionTestingSupport;
 import net.shibboleth.idp.saml.session.SAML1SPSession;
 import net.shibboleth.idp.saml.session.SAML2SPSession;
 import net.shibboleth.idp.saml.session.impl.SAML1SPSessionSerializer;
@@ -44,7 +44,6 @@ import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.idp.session.context.LogoutContext;
 import net.shibboleth.idp.session.context.SessionContext;
 import net.shibboleth.idp.session.criterion.HttpServletRequestCriterion;
-import net.shibboleth.idp.session.impl.testing.SessionManagerBaseTestCase;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseContext;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContextTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContextTest.java
index 50719468b..e1cf23309 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContextTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContextTest.java
@@ -25,8 +25,8 @@ import net.shibboleth.idp.authn.context.RequestedPrincipalContext;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-import net.shibboleth.idp.saml.saml2.profile.SAML2ActionTestingSupport;
 import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
+import net.shibboleth.idp.saml.saml2.profile.testing.SAML2ActionTestingSupport;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import java.util.Collections;
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/SessionManagerBaseTestCase.java
similarity index 98%
copy from idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java
copy to idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/SessionManagerBaseTestCase.java
index f0059565a..35c9aa149 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/SessionManagerBaseTestCase.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.session.impl.testing;
+package net.shibboleth.idp.saml.saml2.profile.impl;
 
 import java.time.Duration;
 import java.util.function.Supplier;
diff --git a/idp-saml-api/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-mapping-metadata.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-mapping-metadata.xml
similarity index 100%
rename from idp-saml-api/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-mapping-metadata.xml
rename to idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-mapping-metadata.xml
diff --git a/idp-saml-api/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry-service.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry-service.xml
similarity index 100%
rename from idp-saml-api/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry-service.xml
rename to idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry-service.xml
diff --git a/idp-saml-api/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry.xml b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry.xml
similarity index 100%
rename from idp-saml-api/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry.xml
rename to idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/attribute-registry.xml
diff --git a/idp-saml-api/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/subjectid.txt b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/subjectid.txt
similarity index 100%
rename from idp-saml-api/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/subjectid.txt
rename to idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/subjectid.txt
diff --git a/idp-saml-api/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/zorkmids.txt b/idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/zorkmids.txt
similarity index 100%
rename from idp-saml-api/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/zorkmids.txt
rename to idp-saml-impl/src/test/resources/net/shibboleth/idp/saml/profile/logic/rules/zorkmids.txt
diff --git a/idp-session-impl/pom.xml b/idp-session-impl/pom.xml
index a03e8265a..0d02f98b6 100644
--- a/idp-session-impl/pom.xml
+++ b/idp-session-impl/pom.xml
@@ -115,25 +115,17 @@
         <!-- Test Dependencies -->
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>idp-profile-api</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-            <type>test-jar</type>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>idp-authn-api</artifactId>
+            <artifactId>idp-authn-impl</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
-            <type>test-jar</type>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>idp-authn-impl</artifactId>
+            <artifactId>idp-testing</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
-        
+
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-core-impl</artifactId>
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
index aaf5421bc..5296a4235 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
@@ -43,7 +43,6 @@ import net.shibboleth.idp.session.context.LogoutContext;
 import net.shibboleth.idp.session.context.SessionContext;
 import net.shibboleth.idp.session.criterion.HttpServletRequestCriterion;
 import net.shibboleth.idp.session.criterion.SessionIdCriterion;
-import net.shibboleth.idp.session.impl.testing.SessionManagerBaseTestCase;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseContext;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DetectIdentitySwitchTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DetectIdentitySwitchTest.java
index 5a5b360e9..cb409e6c9 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DetectIdentitySwitchTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DetectIdentitySwitchTest.java
@@ -29,7 +29,6 @@ import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.idp.session.context.SessionContext;
-import net.shibboleth.idp.session.impl.testing.SessionManagerBaseTestCase;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseContext;
 
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/PopulateSessionContextTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/PopulateSessionContextTest.java
index 289228779..6bd344dcd 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/PopulateSessionContextTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/PopulateSessionContextTest.java
@@ -36,7 +36,6 @@ import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.idp.session.context.SessionContext;
-import net.shibboleth.idp.session.impl.testing.SessionManagerBaseTestCase;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseContext;
 
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/ProcessLogoutTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/ProcessLogoutTest.java
index bf62f9f87..0f2efd5ed 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/ProcessLogoutTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/ProcessLogoutTest.java
@@ -46,7 +46,6 @@ import net.shibboleth.idp.session.SPSessionSerializerRegistry;
 import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.idp.session.context.LogoutContext;
 import net.shibboleth.idp.session.criterion.HttpServletRequestCriterion;
-import net.shibboleth.idp.session.impl.testing.SessionManagerBaseTestCase;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseContext;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/SessionManagerBaseTestCase.java
similarity index 99%
rename from idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java
rename to idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/SessionManagerBaseTestCase.java
index f0059565a..29f1e35fd 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/SessionManagerBaseTestCase.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.session.impl.testing;
+package net.shibboleth.idp.session.impl;
 
 import java.time.Duration;
 import java.util.function.Supplier;
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedSessionManagerTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedSessionManagerTest.java
index 9ea6993d1..1b3757f6c 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedSessionManagerTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedSessionManagerTest.java
@@ -45,7 +45,6 @@ import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.idp.session.criterion.HttpServletRequestCriterion;
 import net.shibboleth.idp.session.criterion.SPSessionCriterion;
 import net.shibboleth.idp.session.criterion.SessionIdCriterion;
-import net.shibboleth.idp.session.impl.testing.SessionManagerBaseTestCase;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
 import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseContext;
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResultTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResultTest.java
index fe56d2ae8..b824393e0 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResultTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResultTest.java
@@ -33,7 +33,6 @@ import net.shibboleth.idp.session.IdPSession;
 import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.idp.session.context.SessionContext;
 import net.shibboleth.idp.session.criterion.SessionIdCriterion;
-import net.shibboleth.idp.session.impl.testing.SessionManagerBaseTestCase;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseContext;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithSPSessionTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithSPSessionTest.java
index 9d4ae92ec..adb608e00 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithSPSessionTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithSPSessionTest.java
@@ -31,7 +31,6 @@ import net.shibboleth.idp.session.SPSession;
 import net.shibboleth.idp.session.SPSessionSerializerRegistry;
 import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.idp.session.context.SessionContext;
-import net.shibboleth.idp.session.impl.testing.SessionManagerBaseTestCase;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.logic.FunctionSupport;
 import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseContext;
diff --git a/idp-testing/.checkstyle b/idp-testing/.checkstyle
new file mode 100644
index 000000000..4147bd1de
--- /dev/null
+++ b/idp-testing/.checkstyle
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+
+  <local-check-config name="Shibboleth Checkstyle" location="/idp-parent/resources/checkstyle/checkstyle.xml" type="project" description="">
+    <additional-data name="cache-file" value="true"/>
+    <additional-data name="cache-props-file-location" value="null_1312636288299_cache.properties"/>
+    <additional-data name="cache-file-location" value="null_1312636288299_cache.xml"/>
+  </local-check-config>
+ 
+  <fileset name="main source" enabled="true" check-config-name="Shibboleth Checkstyle" local="true">
+    <file-match-pattern match-pattern="src/main/java/.*\.java$" include-pattern="true"/>
+  </fileset>
+  
+</fileset-config>
diff --git a/idp-testing/.gitignore b/idp-testing/.gitignore
new file mode 100644
index 000000000..1df25bfc8
--- /dev/null
+++ b/idp-testing/.gitignore
@@ -0,0 +1,2 @@
+/test-output
+/target
diff --git a/idp-consent-impl/pom.xml b/idp-testing/pom.xml
similarity index 74%
copy from idp-consent-impl/pom.xml
copy to idp-testing/pom.xml
index 7a90c1c3a..bd640b127 100644
--- a/idp-consent-impl/pom.xml
+++ b/idp-testing/pom.xml
@@ -11,20 +11,20 @@
         <relativePath>../idp-parent</relativePath>
     </parent>
 
-    <name>Shibboleth IdP :: Consent Implementation</name>
-    <description>Consent Implementation</description>
-    <artifactId>idp-consent-impl</artifactId>
+    <name>Shibboleth IdP :: Testing</name>
+    <description>Testing APIs for IdP components</description>
+    <artifactId>idp-testing</artifactId>
     <packaging>jar</packaging>
 
     <properties>
-        <automatic.module.name>net.shibboleth.idp.consent.impl</automatic.module.name>
+        <automatic.module.name>net.shibboleth.idp.testing</automatic.module.name>
     </properties>
 
     <dependencies>
         <!-- Compile Dependencies -->
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>idp-consent-api</artifactId>
+            <artifactId>idp-authn-api</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
@@ -32,40 +32,51 @@
             <artifactId>idp-profile-api</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>idp-saml-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
 
         <dependency>
             <groupId>net.shibboleth</groupId>
             <artifactId>shib-attribute-api</artifactId>
         </dependency>
-
         <dependency>
-            <groupId>${opensaml.groupId}</groupId>
-            <artifactId>opensaml-core-api</artifactId>
+            <groupId>net.shibboleth</groupId>
+            <artifactId>shib-attribute-resolver-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>${opensaml.groupId}</groupId>
-            <artifactId>opensaml-messaging-api</artifactId>
+            <groupId>net.shibboleth</groupId>
+            <artifactId>shib-saml-attribute-impl</artifactId>
         </dependency>
+
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
-            <artifactId>opensaml-profile-api</artifactId>
+            <artifactId>opensaml-messaging-api</artifactId>
         </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
-            <artifactId>opensaml-saml-api</artifactId>
+            <artifactId>opensaml-profile-api</artifactId>
         </dependency>
+
+        <!-- Normally test scope. -->
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
-            <artifactId>opensaml-storage-api</artifactId>
+            <artifactId>opensaml-testing</artifactId>
+            <scope>compile</scope>
         </dependency>
 
+        <!-- Normally test scope. -->
         <dependency>
-            <groupId>${shib-shared.groupId}</groupId>
-            <artifactId>shib-service</artifactId>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <scope>compile</scope>
         </dependency>
         <dependency>
-            <groupId>${shib-shared.groupId}</groupId>
-            <artifactId>shib-spring</artifactId>
+            <groupId>org.hsqldb</groupId>
+            <artifactId>hsqldb</artifactId>
+            <scope>compile</scope>
         </dependency>
 
         <dependency>
@@ -75,7 +86,8 @@
 
         <dependency>
             <groupId>${spring.groupId}</groupId>
-            <artifactId>spring-context</artifactId>
+            <artifactId>spring-test</artifactId>
+            <scope>compile</scope>
         </dependency>
         <dependency>
             <groupId>${spring-webflow.groupId}</groupId>
@@ -83,11 +95,6 @@
         </dependency>
 
         <!-- Provided Dependencies -->
-        <dependency>
-            <groupId>jakarta.json</groupId>
-            <artifactId>jakarta.json-api</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
@@ -97,14 +104,7 @@
         <!-- Runtime Dependencies -->
 
         <!-- Test Dependencies -->
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>idp-profile-api</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-            <type>test-jar</type>
-        </dependency>
-
+        <!-- Needed for XMLObject providers. -->
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
             <artifactId>opensaml-core-impl</artifactId>
@@ -112,21 +112,14 @@
         </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
-            <artifactId>opensaml-storage-impl</artifactId>
+            <artifactId>opensaml-saml-api</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${opensaml.groupId}</groupId>
-            <artifactId>opensaml-testing</artifactId>
+            <artifactId>opensaml-saml-impl</artifactId>
             <scope>test</scope>
         </dependency>
-
-        <dependency>
-            <groupId>${spring.groupId}</groupId>
-            <artifactId>spring-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-
     </dependencies>
 
     <scm>
diff --git a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/testing/MockAuthenticationProfileConfiguration.java b/idp-testing/src/main/java/net/shibboleth/idp/authn/testing/MockAuthenticationProfileConfiguration.java
similarity index 97%
rename from idp-authn-api/src/test/java/net/shibboleth/idp/authn/testing/MockAuthenticationProfileConfiguration.java
rename to idp-testing/src/main/java/net/shibboleth/idp/authn/testing/MockAuthenticationProfileConfiguration.java
index 6a63a1d07..923140017 100644
--- a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/testing/MockAuthenticationProfileConfiguration.java
+++ b/idp-testing/src/main/java/net/shibboleth/idp/authn/testing/MockAuthenticationProfileConfiguration.java
@@ -110,7 +110,12 @@ public class MockAuthenticationProfileConfiguration extends AbstractProfileConfi
         defaultAuthenticationMethods = List.copyOf(Constraint.isNotNull(methods, "List of methods cannot be null"));
     }
     
-    /** {@inheritDoc} */
+    /**
+     * Get the name identifier formats to use.
+     * 
+     * @param profileRequestContext profile request context
+     * @return formats to use
+     */
     @Nonnull @NonnullElements @NotLive @Unmodifiable public List<String> getNameIDFormatPrecedence(
             @Nullable final ProfileRequestContext profileRequestContext) {
         return nameIDFormatPrecedence;
diff --git a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/testing/TestPrincipal.java b/idp-testing/src/main/java/net/shibboleth/idp/authn/testing/TestPrincipal.java
similarity index 100%
rename from idp-authn-api/src/test/java/net/shibboleth/idp/authn/testing/TestPrincipal.java
rename to idp-testing/src/main/java/net/shibboleth/idp/authn/testing/TestPrincipal.java
diff --git a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/testing/package-info.java b/idp-testing/src/main/java/net/shibboleth/idp/authn/testing/package-info.java
similarity index 100%
copy from idp-authn-api/src/test/java/net/shibboleth/idp/authn/testing/package-info.java
copy to idp-testing/src/main/java/net/shibboleth/idp/authn/testing/package-info.java
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/testing/ActionTestingSupport.java b/idp-testing/src/main/java/net/shibboleth/idp/profile/testing/ActionTestingSupport.java
similarity index 100%
rename from idp-profile-api/src/test/java/net/shibboleth/idp/profile/testing/ActionTestingSupport.java
rename to idp-testing/src/main/java/net/shibboleth/idp/profile/testing/ActionTestingSupport.java
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/testing/MockProfileConfiguration.java b/idp-testing/src/main/java/net/shibboleth/idp/profile/testing/MockProfileConfiguration.java
similarity index 100%
rename from idp-profile-api/src/test/java/net/shibboleth/idp/profile/testing/MockProfileConfiguration.java
rename to idp-testing/src/main/java/net/shibboleth/idp/profile/testing/MockProfileConfiguration.java
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/testing/RequestContextBuilder.java b/idp-testing/src/main/java/net/shibboleth/idp/profile/testing/RequestContextBuilder.java
similarity index 100%
rename from idp-profile-api/src/test/java/net/shibboleth/idp/profile/testing/RequestContextBuilder.java
rename to idp-testing/src/main/java/net/shibboleth/idp/profile/testing/RequestContextBuilder.java
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/testing/package-info.java b/idp-testing/src/main/java/net/shibboleth/idp/profile/testing/package-info.java
similarity index 100%
rename from idp-profile-api/src/test/java/net/shibboleth/idp/profile/testing/package-info.java
rename to idp-testing/src/main/java/net/shibboleth/idp/profile/testing/package-info.java
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/impl/testing/TestSources.java b/idp-testing/src/main/java/net/shibboleth/idp/saml/impl/testing/TestSources.java
similarity index 100%
rename from idp-saml-impl/src/test/java/net/shibboleth/idp/saml/impl/testing/TestSources.java
rename to idp-testing/src/main/java/net/shibboleth/idp/saml/impl/testing/TestSources.java
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/profile/ActionTestSupportAction.java b/idp-testing/src/main/java/net/shibboleth/idp/saml/profile/testing/ActionTestSupportAction.java
similarity index 96%
rename from idp-saml-api/src/test/java/net/shibboleth/idp/saml/profile/ActionTestSupportAction.java
rename to idp-testing/src/main/java/net/shibboleth/idp/saml/profile/testing/ActionTestSupportAction.java
index 854eb553b..148aef252 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/profile/ActionTestSupportAction.java
+++ b/idp-testing/src/main/java/net/shibboleth/idp/saml/profile/testing/ActionTestSupportAction.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.profile;
+package net.shibboleth.idp.saml.profile.testing;
 
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml1/profile/SAML1ActionTestingSupport.java b/idp-testing/src/main/java/net/shibboleth/idp/saml/saml1/profile/testing/SAML1ActionTestingSupport.java
similarity index 98%
rename from idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml1/profile/SAML1ActionTestingSupport.java
rename to idp-testing/src/main/java/net/shibboleth/idp/saml/saml1/profile/testing/SAML1ActionTestingSupport.java
index 0b26c4ad8..463778ca8 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml1/profile/SAML1ActionTestingSupport.java
+++ b/idp-testing/src/main/java/net/shibboleth/idp/saml/saml1/profile/testing/SAML1ActionTestingSupport.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.saml1.profile;
+package net.shibboleth.idp.saml.saml1.profile.testing;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/package-info.java b/idp-testing/src/main/java/net/shibboleth/idp/saml/saml1/profile/testing/package-info.java
similarity index 89%
rename from idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/package-info.java
rename to idp-testing/src/main/java/net/shibboleth/idp/saml/saml1/profile/testing/package-info.java
index f53019cb3..1d22f977b 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/package-info.java
+++ b/idp-testing/src/main/java/net/shibboleth/idp/saml/saml1/profile/testing/package-info.java
@@ -16,7 +16,6 @@
  */
 
 /**
- * Testing utility classes.
+ * Testing APIs for SAML 1 profile testing. 
  */
-
-package net.shibboleth.idp.session.impl.testing;
\ No newline at end of file
+package net.shibboleth.idp.saml.saml1.profile.testing;
\ No newline at end of file
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/SAML2ActionTestingSupport.java b/idp-testing/src/main/java/net/shibboleth/idp/saml/saml2/profile/testing/SAML2ActionTestingSupport.java
similarity index 98%
rename from idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/SAML2ActionTestingSupport.java
rename to idp-testing/src/main/java/net/shibboleth/idp/saml/saml2/profile/testing/SAML2ActionTestingSupport.java
index 0b6d8cf73..89df8fdc9 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/SAML2ActionTestingSupport.java
+++ b/idp-testing/src/main/java/net/shibboleth/idp/saml/saml2/profile/testing/SAML2ActionTestingSupport.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.saml2.profile;
+package net.shibboleth.idp.saml.saml2.profile.testing;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/testing/package-info.java b/idp-testing/src/main/java/net/shibboleth/idp/saml/saml2/profile/testing/package-info.java
similarity index 89%
rename from idp-authn-api/src/test/java/net/shibboleth/idp/authn/testing/package-info.java
rename to idp-testing/src/main/java/net/shibboleth/idp/saml/saml2/profile/testing/package-info.java
index 9a87953a4..31ab8d040 100644
--- a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/testing/package-info.java
+++ b/idp-testing/src/main/java/net/shibboleth/idp/saml/saml2/profile/testing/package-info.java
@@ -16,7 +16,6 @@
  */
 
 /**
- * Testing utility classes.
+ * Testing APIs for SAML 2 profile testing. 
  */
-
-package net.shibboleth.idp.authn.testing;
\ No newline at end of file
+package net.shibboleth.idp.saml.saml2.profile.testing;
\ No newline at end of file
diff --git a/idp-core/src/test/java/net/shibboleth/idp/testing/DatabaseTestingSupport.java b/idp-testing/src/main/java/net/shibboleth/idp/testing/DatabaseTestingSupport.java
similarity index 100%
rename from idp-core/src/test/java/net/shibboleth/idp/testing/DatabaseTestingSupport.java
rename to idp-testing/src/main/java/net/shibboleth/idp/testing/DatabaseTestingSupport.java
diff --git a/idp-core/src/test/java/net/shibboleth/idp/testing/package-info.java b/idp-testing/src/main/java/net/shibboleth/idp/testing/package-info.java
similarity index 100%
rename from idp-core/src/test/java/net/shibboleth/idp/testing/package-info.java
rename to idp-testing/src/main/java/net/shibboleth/idp/testing/package-info.java
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml1/profile/SAML1ActionSupportTest.java b/idp-testing/src/test/java/net/shibboleth/idp/saml/saml1/profile/testing/SAML1ActionSupportTest.java
similarity index 97%
rename from idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml1/profile/SAML1ActionSupportTest.java
rename to idp-testing/src/test/java/net/shibboleth/idp/saml/saml1/profile/testing/SAML1ActionSupportTest.java
index bddbe74a8..2aaf79dc9 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml1/profile/SAML1ActionSupportTest.java
+++ b/idp-testing/src/test/java/net/shibboleth/idp/saml/saml1/profile/testing/SAML1ActionSupportTest.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.saml1.profile;
+package net.shibboleth.idp.saml.saml1.profile.testing;
 
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-import net.shibboleth.idp.saml.profile.ActionTestSupportAction;
+import net.shibboleth.idp.saml.profile.testing.ActionTestSupportAction;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import java.util.function.Function;
diff --git a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/SAML2ActionSupportTest.java b/idp-testing/src/test/java/net/shibboleth/idp/saml/saml2/profile/testing/SAML2ActionSupportTest.java
similarity index 97%
rename from idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/SAML2ActionSupportTest.java
rename to idp-testing/src/test/java/net/shibboleth/idp/saml/saml2/profile/testing/SAML2ActionSupportTest.java
index f1f0864b4..bbbdc96fd 100644
--- a/idp-saml-api/src/test/java/net/shibboleth/idp/saml/saml2/profile/SAML2ActionSupportTest.java
+++ b/idp-testing/src/test/java/net/shibboleth/idp/saml/saml2/profile/testing/SAML2ActionSupportTest.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package net.shibboleth.idp.saml.saml2.profile;
+package net.shibboleth.idp.saml.saml2.profile.testing;
 
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
-import net.shibboleth.idp.saml.profile.ActionTestSupportAction;
+import net.shibboleth.idp.saml.profile.testing.ActionTestSupportAction;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import java.util.function.Function;

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


More information about the commits mailing list