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 {}