This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 9998b7f4c4 Consolidate remaining duplicate test utilities (TODO-191)
9998b7f4c4 is described below

commit 9998b7f4c42b248dce4d179719b338e657c1c2a8
Author: James Bognar <[email protected]>
AuthorDate: Sun Jul 12 21:23:11 2026 -0400

    Consolidate remaining duplicate test utilities (TODO-191)
    
    Reconcile and consolidate SamlTestSupport: the integration-tests copy had
    drifted from the owner (juneau-rest-server-auth-saml) by ~207 additive
    lines of newer builder helpers, never back-ported. The owner's version is
    canonical; publish it via a maven-jar-plugin test-jar execution restricted
    to just SamlTestSupport (and nested types), consumed by juneau-integration-
    tests as a test-jar dependency, and delete the local duplicate.
    
    Consolidate the org.apache.juneau.testing.{SpringbootTest,
    JettyMicroserviceTest,TomcatMicroserviceTest} @Tag marker annotations,
    found byte-identical (MD5-verified) across 7 modules rather than the 3
    originally flagged. Canonical copies now live in the marshall-free
    juneau-test-utils module (already a test dependency of every consumer),
    consumed from its plain jar rather than another test-jar to avoid
    re-triggering the FQN-collision class of issue these markers were
    previously implicated in. Duplicates removed from all other modules.
    
    Full reactor `mvn clean install`: BUILD SUCCESS, 135,088 tests, 0 failures,
    0 errors.
    
    Co-authored-by: Cursor <[email protected]>
---
 .../juneau/testing/JettyMicroserviceTest.java      |   0
 .../org/apache/juneau/testing/SpringbootTest.java  |   0
 .../juneau/testing/TomcatMicroserviceTest.java     |   0
 juneau-integration-tests/pom.xml                   |   7 +
 .../rest/server/auth/saml/SamlTestSupport.java     | 194 ---------------------
 .../juneau/testing/JettyMicroserviceTest.java      |  30 ----
 .../org/apache/juneau/testing/SpringbootTest.java  |  30 ----
 .../juneau/testing/TomcatMicroserviceTest.java     |  30 ----
 .../juneau/testing/JettyMicroserviceTest.java      |  30 ----
 .../org/apache/juneau/testing/SpringbootTest.java  |  30 ----
 .../juneau/testing/TomcatMicroserviceTest.java     |  30 ----
 .../juneau/testing/JettyMicroserviceTest.java      |  30 ----
 .../org/apache/juneau/testing/SpringbootTest.java  |  30 ----
 .../juneau/testing/TomcatMicroserviceTest.java     |  30 ----
 .../juneau/testing/JettyMicroserviceTest.java      |  30 ----
 .../org/apache/juneau/testing/SpringbootTest.java  |  30 ----
 juneau-rest/juneau-rest-server-auth-saml/pom.xml   |  14 ++
 .../org/apache/juneau/testing/SpringbootTest.java  |  30 ----
 18 files changed, 21 insertions(+), 554 deletions(-)

diff --git 
a/juneau-integration-tests/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
 
b/juneau-core/juneau-test-utils/src/main/java/org/apache/juneau/testing/JettyMicroserviceTest.java
similarity index 100%
rename from 
juneau-integration-tests/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
rename to 
juneau-core/juneau-test-utils/src/main/java/org/apache/juneau/testing/JettyMicroserviceTest.java
diff --git 
a/juneau-integration-tests/src/test/java/org/apache/juneau/testing/SpringbootTest.java
 
b/juneau-core/juneau-test-utils/src/main/java/org/apache/juneau/testing/SpringbootTest.java
similarity index 100%
rename from 
juneau-integration-tests/src/test/java/org/apache/juneau/testing/SpringbootTest.java
rename to 
juneau-core/juneau-test-utils/src/main/java/org/apache/juneau/testing/SpringbootTest.java
diff --git 
a/juneau-integration-tests/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
 
b/juneau-core/juneau-test-utils/src/main/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
similarity index 100%
rename from 
juneau-integration-tests/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
rename to 
juneau-core/juneau-test-utils/src/main/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
diff --git a/juneau-integration-tests/pom.xml b/juneau-integration-tests/pom.xml
index f423b118ff..edc82b0479 100644
--- a/juneau-integration-tests/pom.xml
+++ b/juneau-integration-tests/pom.xml
@@ -221,6 +221,13 @@
                        <version>${project.version}</version>
                        <scope>test</scope>
                </dependency>
+               <dependency>
+                       <groupId>org.apache.juneau</groupId>
+                       <artifactId>juneau-rest-server-auth-saml</artifactId>
+                       <version>${project.version}</version>
+                       <type>test-jar</type>
+                       <scope>test</scope>
+               </dependency>
                <dependency>
                        <groupId>org.opensaml</groupId>
                        <artifactId>opensaml-core-api</artifactId>
diff --git 
a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlTestSupport.java
 
b/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlTestSupport.java
deleted file mode 100644
index 2f794e4af7..0000000000
--- 
a/juneau-integration-tests/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlTestSupport.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.rest.server.auth.saml;
-
-import java.io.*;
-import java.security.*;
-import java.time.*;
-
-import javax.xml.transform.*;
-import javax.xml.transform.dom.*;
-import javax.xml.transform.stream.*;
-
-import org.opensaml.core.config.*;
-import org.opensaml.core.xml.config.*;
-import org.opensaml.core.xml.io.*;
-import org.opensaml.saml.common.*;
-import org.opensaml.saml.saml2.core.*;
-import org.opensaml.security.credential.*;
-import org.opensaml.xmlsec.signature.impl.*;
-import org.opensaml.xmlsec.signature.support.*;
-import org.opensaml.xmlsec.signature.support.Signer;
-
-/**
- * Test-fixture helpers for building and signing minimal SAML 2.0 {@code 
<Response>} XML documents.
- *
- * <p>
- * Centralizes the OpenSAML builder boilerplate so individual test classes 
stay focused on the assertion
- * shapes they care about.
- */
-@SuppressWarnings({
-       "unchecked"  // Unchecked cast required for generic test utility.
-})
-final class SamlTestSupport {
-
-       static {
-               try {
-                       InitializationService.initialize();
-               } catch (Exception e) {
-                       throw new RuntimeException("OpenSAML init failed", e);
-               }
-       }
-
-       // Fixed issue-instant: the response/assertion IssueInstant is 
informational (the validator checks
-       // only the explicit NotBefore/NotOnOrAfter window), so a constant 
replaces the system clock (java:S8692).
-       private static final Instant ISSUE_INSTANT = 
Instant.parse("2026-01-01T00:00:00Z");
-
-       private SamlTestSupport() {}
-
-       static KeyPair generateRsaKeyPair() throws Exception {
-               var kp = KeyPairGenerator.getInstance("RSA");
-               kp.initialize(2048);
-               return kp.generateKeyPair();
-       }
-
-       static BasicCredential credential(KeyPair pair) {
-               var c = new BasicCredential(pair.getPublic(), 
pair.getPrivate());
-               c.setUsageType(UsageType.SIGNING);
-               return c;
-       }
-
-       /**
-        * Builds a minimal signed {@code <samlp:Response>} carrying a single 
{@code <Assertion>} with the
-        * supplied subject, issuer, audience, and notBefore/notOnOrAfter 
window.
-        */
-       static String buildSignedResponse(
-                       BasicCredential signingCred,
-                       String issuer,
-                       String audience,
-                       String subjectName,
-                       Instant notBefore,
-                       Instant notOnOrAfter,
-                       java.util.Map<String,String> attributes) throws 
Exception {
-
-               var bf = XMLObjectProviderRegistrySupport.getBuilderFactory();
-               var responseBuilder = (SAMLObjectBuilder<Response>) 
bf.getBuilder(Response.DEFAULT_ELEMENT_NAME);
-               var response = responseBuilder.buildObject();
-               response.setID("_resp-" + System.nanoTime());
-               response.setIssueInstant(ISSUE_INSTANT);
-               
response.setVersion(org.opensaml.saml.common.SAMLVersion.VERSION_20);
-
-               response.setIssuer(buildIssuer(bf, issuer));
-               response.setStatus(buildStatus(bf));
-
-               var assertion = buildAssertion(bf, issuer, audience, 
subjectName, notBefore, notOnOrAfter, attributes);
-
-               // Build a Signature object and attach to the assertion.
-               var sig = new SignatureBuilder().buildObject();
-               sig.setSigningCredential(signingCred);
-               
sig.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
-               
sig.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
-               assertion.setSignature(sig);
-
-               response.getAssertions().add(assertion);
-
-               // Marshal first so the Signature element is bound to the DOM; 
then sign.
-               MarshallerFactory mf = 
XMLObjectProviderRegistrySupport.getMarshallerFactory();
-               var mar = mf.getMarshaller(response);
-               var dom = mar.marshall(response);
-               Signer.signObject(sig);
-
-               // Serialize to XML string.
-               var sw = new StringWriter();
-               var tf = TransformerFactory.newInstance();
-               var transformer = tf.newTransformer();
-               transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, 
"yes");
-               transformer.transform(new DOMSource(dom), new StreamResult(sw));
-               return sw.toString();
-       }
-
-       private static Issuer 
buildIssuer(org.opensaml.core.xml.XMLObjectBuilderFactory bf, String value) {
-               var b = (SAMLObjectBuilder<Issuer>) 
bf.getBuilder(Issuer.DEFAULT_ELEMENT_NAME);
-               var i = b.buildObject();
-               i.setValue(value);
-               return i;
-       }
-
-       private static Status 
buildStatus(org.opensaml.core.xml.XMLObjectBuilderFactory bf) {
-               var sb = (SAMLObjectBuilder<Status>) 
bf.getBuilder(Status.DEFAULT_ELEMENT_NAME);
-               var scb = (SAMLObjectBuilder<StatusCode>) 
bf.getBuilder(StatusCode.DEFAULT_ELEMENT_NAME);
-               var status = sb.buildObject();
-               var code = scb.buildObject();
-               code.setValue(StatusCode.SUCCESS);
-               status.setStatusCode(code);
-               return status;
-       }
-
-       private static Assertion buildAssertion(
-                       org.opensaml.core.xml.XMLObjectBuilderFactory bf,
-                       String issuer, String audience, String subjectName,
-                       Instant notBefore, Instant notOnOrAfter,
-                       java.util.Map<String,String> attributes) {
-               var ab = (SAMLObjectBuilder<Assertion>) 
bf.getBuilder(Assertion.DEFAULT_ELEMENT_NAME);
-               var assertion = ab.buildObject();
-               assertion.setID("_a-" + System.nanoTime());
-               assertion.setIssueInstant(ISSUE_INSTANT);
-               
assertion.setVersion(org.opensaml.saml.common.SAMLVersion.VERSION_20);
-               assertion.setIssuer(buildIssuer(bf, issuer));
-
-               var subBuilder = (SAMLObjectBuilder<Subject>) 
bf.getBuilder(Subject.DEFAULT_ELEMENT_NAME);
-               var nidBuilder = (SAMLObjectBuilder<NameID>) 
bf.getBuilder(NameID.DEFAULT_ELEMENT_NAME);
-               var sub = subBuilder.buildObject();
-               var nid = nidBuilder.buildObject();
-               nid.setValue(subjectName);
-               nid.setFormat(NameIDType.UNSPECIFIED);
-               sub.setNameID(nid);
-               assertion.setSubject(sub);
-
-               var condBuilder = (SAMLObjectBuilder<Conditions>) 
bf.getBuilder(Conditions.DEFAULT_ELEMENT_NAME);
-               var arBuilder = (SAMLObjectBuilder<AudienceRestriction>) 
bf.getBuilder(AudienceRestriction.DEFAULT_ELEMENT_NAME);
-               var audBuilder = (SAMLObjectBuilder<Audience>) 
bf.getBuilder(Audience.DEFAULT_ELEMENT_NAME);
-               var conditions = condBuilder.buildObject();
-               conditions.setNotBefore(notBefore);
-               conditions.setNotOnOrAfter(notOnOrAfter);
-               var ar = arBuilder.buildObject();
-               var aud = audBuilder.buildObject();
-               aud.setURI(audience);
-               ar.getAudiences().add(aud);
-               conditions.getAudienceRestrictions().add(ar);
-               assertion.setConditions(conditions);
-
-               if (attributes != null && !attributes.isEmpty()) {
-                       var asBuilder = (SAMLObjectBuilder<AttributeStatement>) 
bf.getBuilder(AttributeStatement.DEFAULT_ELEMENT_NAME);
-                       var attrBuilder = (SAMLObjectBuilder<Attribute>) 
bf.getBuilder(Attribute.DEFAULT_ELEMENT_NAME);
-                       var stringBuilder = 
(org.opensaml.core.xml.schema.impl.XSStringBuilder)
-                               
bf.getBuilder(org.opensaml.core.xml.schema.XSString.TYPE_NAME);
-                       var stmt = asBuilder.buildObject();
-                       for (var e : attributes.entrySet()) {
-                               var attr = attrBuilder.buildObject();
-                               attr.setName(e.getKey());
-                               var av = 
stringBuilder.buildObject(AttributeValue.DEFAULT_ELEMENT_NAME,
-                                       
org.opensaml.core.xml.schema.XSString.TYPE_NAME);
-                               av.setValue(e.getValue());
-                               attr.getAttributeValues().add(av);
-                               stmt.getAttributes().add(attr);
-                       }
-                       assertion.getAttributeStatements().add(stmt);
-               }
-               return assertion;
-       }
-}
diff --git 
a/juneau-microservice/juneau-microservice-jetty/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
 
b/juneau-microservice/juneau-microservice-jetty/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
deleted file mode 100644
index ed3aa7037e..0000000000
--- 
a/juneau-microservice/juneau-microservice-jetty/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Jetty microservice tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("jetty")
-public @interface JettyMicroserviceTest {}
diff --git 
a/juneau-microservice/juneau-microservice-jetty/src/test/java/org/apache/juneau/testing/SpringbootTest.java
 
b/juneau-microservice/juneau-microservice-jetty/src/test/java/org/apache/juneau/testing/SpringbootTest.java
deleted file mode 100644
index fbb311a7bd..0000000000
--- 
a/juneau-microservice/juneau-microservice-jetty/src/test/java/org/apache/juneau/testing/SpringbootTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Spring Boot tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("springboot")
-public @interface SpringbootTest {}
diff --git 
a/juneau-microservice/juneau-microservice-jetty/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
 
b/juneau-microservice/juneau-microservice-jetty/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
deleted file mode 100644
index 0039ee0f81..0000000000
--- 
a/juneau-microservice/juneau-microservice-jetty/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Tomcat microservice tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("tomcat")
-public @interface TomcatMicroserviceTest {}
diff --git 
a/juneau-microservice/juneau-microservice-tomcat/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
 
b/juneau-microservice/juneau-microservice-tomcat/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
deleted file mode 100644
index ed3aa7037e..0000000000
--- 
a/juneau-microservice/juneau-microservice-tomcat/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Jetty microservice tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("jetty")
-public @interface JettyMicroserviceTest {}
diff --git 
a/juneau-microservice/juneau-microservice-tomcat/src/test/java/org/apache/juneau/testing/SpringbootTest.java
 
b/juneau-microservice/juneau-microservice-tomcat/src/test/java/org/apache/juneau/testing/SpringbootTest.java
deleted file mode 100644
index fbb311a7bd..0000000000
--- 
a/juneau-microservice/juneau-microservice-tomcat/src/test/java/org/apache/juneau/testing/SpringbootTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Spring Boot tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("springboot")
-public @interface SpringbootTest {}
diff --git 
a/juneau-microservice/juneau-microservice-tomcat/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
 
b/juneau-microservice/juneau-microservice-tomcat/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
deleted file mode 100644
index 0039ee0f81..0000000000
--- 
a/juneau-microservice/juneau-microservice-tomcat/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Tomcat microservice tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("tomcat")
-public @interface TomcatMicroserviceTest {}
diff --git 
a/juneau-microservice/juneau-microservice/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
 
b/juneau-microservice/juneau-microservice/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
deleted file mode 100644
index ed3aa7037e..0000000000
--- 
a/juneau-microservice/juneau-microservice/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Jetty microservice tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("jetty")
-public @interface JettyMicroserviceTest {}
diff --git 
a/juneau-microservice/juneau-microservice/src/test/java/org/apache/juneau/testing/SpringbootTest.java
 
b/juneau-microservice/juneau-microservice/src/test/java/org/apache/juneau/testing/SpringbootTest.java
deleted file mode 100644
index fbb311a7bd..0000000000
--- 
a/juneau-microservice/juneau-microservice/src/test/java/org/apache/juneau/testing/SpringbootTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Spring Boot tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("springboot")
-public @interface SpringbootTest {}
diff --git 
a/juneau-microservice/juneau-microservice/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
 
b/juneau-microservice/juneau-microservice/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
deleted file mode 100644
index 0039ee0f81..0000000000
--- 
a/juneau-microservice/juneau-microservice/src/test/java/org/apache/juneau/testing/TomcatMicroserviceTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Tomcat microservice tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("tomcat")
-public @interface TomcatMicroserviceTest {}
diff --git 
a/juneau-petstore/juneau-petstore-jetty/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
 
b/juneau-petstore/juneau-petstore-jetty/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
deleted file mode 100644
index ed3aa7037e..0000000000
--- 
a/juneau-petstore/juneau-petstore-jetty/src/test/java/org/apache/juneau/testing/JettyMicroserviceTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Jetty microservice tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("jetty")
-public @interface JettyMicroserviceTest {}
diff --git 
a/juneau-petstore/juneau-petstore-springboot/src/test/java/org/apache/juneau/testing/SpringbootTest.java
 
b/juneau-petstore/juneau-petstore-springboot/src/test/java/org/apache/juneau/testing/SpringbootTest.java
deleted file mode 100644
index fbb311a7bd..0000000000
--- 
a/juneau-petstore/juneau-petstore-springboot/src/test/java/org/apache/juneau/testing/SpringbootTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Spring Boot tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("springboot")
-public @interface SpringbootTest {}
diff --git a/juneau-rest/juneau-rest-server-auth-saml/pom.xml 
b/juneau-rest/juneau-rest-server-auth-saml/pom.xml
index aac0c01ad9..b835cab809 100644
--- a/juneau-rest/juneau-rest-server-auth-saml/pom.xml
+++ b/juneau-rest/juneau-rest-server-auth-saml/pom.xml
@@ -190,6 +190,20 @@
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-jar-plugin</artifactId>
+                               <executions>
+                                       <execution>
+                                               <goals>
+                                                       <goal>test-jar</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <!-- Publish only the 
shared fixture; keep module-local tests out of consumers' classpaths. -->
+                                                       <includes>
+                                                               
<include>**/SamlTestSupport.class</include>
+                                                               
<include>**/SamlTestSupport$*.class</include>
+                                                       </includes>
+                                               </configuration>
+                                       </execution>
+                               </executions>
                        </plugin>
                        <plugin>
                                <groupId>org.jacoco</groupId>
diff --git 
a/juneau-rest/juneau-rest-server-springboot/src/test/java/org/apache/juneau/testing/SpringbootTest.java
 
b/juneau-rest/juneau-rest-server-springboot/src/test/java/org/apache/juneau/testing/SpringbootTest.java
deleted file mode 100644
index fbb311a7bd..0000000000
--- 
a/juneau-rest/juneau-rest-server-springboot/src/test/java/org/apache/juneau/testing/SpringbootTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.testing;
-
-import java.lang.annotation.*;
-
-import org.junit.jupiter.api.*;
-
-/**
- * Marker for container-backed Spring Boot tests.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Tag("container")
-@Tag("springboot")
-public @interface SpringbootTest {}

Reply via email to