[742] Modify JSON-B ContextProvider TCK test to use Arquillian
diff --git a/jaxrs-tck/pom.xml b/jaxrs-tck/pom.xml index 0a6779b..0182f32 100644 --- a/jaxrs-tck/pom.xml +++ b/jaxrs-tck/pom.xml
@@ -174,18 +174,6 @@ </dependency> <dependency> - <groupId>jakarta.json.bind</groupId> - <artifactId>jakarta.json.bind-api</artifactId> - <version>2.0.0</version> - </dependency> - - <dependency> - <groupId>jakarta.json</groupId> - <artifactId>jakarta.json-api</artifactId> - <version>2.0.1</version> - </dependency> - - <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>${junit.jupiter.version}</version>
diff --git a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/contextprovider/JsonbContextProviderIT.java b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/contextprovider/JsonbContextProviderIT.java index aa2f195..84bb2c5 100644 --- a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/contextprovider/JsonbContextProviderIT.java +++ b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/contextprovider/JsonbContextProviderIT.java
@@ -17,29 +17,28 @@ package jakarta.ws.rs.tck.contextprovider; import static java.util.concurrent.TimeUnit.HOURS; -import static java.util.concurrent.TimeUnit.SECONDS; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static jakarta.ws.rs.RuntimeType.CLIENT; import static jakarta.ws.rs.RuntimeType.SERVER; -import static jakarta.ws.rs.SeBootstrap.Configuration.FREE_PORT; import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON; import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON_TYPE; import java.lang.reflect.Type; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; import java.util.Collections; import java.util.Set; -import java.util.concurrent.CompletionStage; -import java.util.concurrent.ExecutionException; +import jakarta.ws.rs.ApplicationPath; import jakarta.ws.rs.Consumes; import jakarta.ws.rs.Path; import jakarta.ws.rs.POST; import jakarta.ws.rs.Produces; import jakarta.ws.rs.RuntimeType; -import jakarta.ws.rs.SeBootstrap; import jakarta.ws.rs.client.Client; import jakarta.ws.rs.client.ClientBuilder; import jakarta.ws.rs.client.Entity; @@ -56,6 +55,12 @@ import jakarta.json.stream.JsonParser; import jakarta.json.stream.JsonGenerator; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit5.ArquillianExtension; +import org.jboss.arquillian.test.api.ArquillianResource; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; @@ -66,34 +71,35 @@ * @since 3.1 */ @Timeout(value = 1, unit = HOURS) +@ExtendWith(ArquillianExtension.class) public final class JsonbContextProviderIT { + @ArquillianResource + private URL baseUrl; + + @Deployment(testable = false) + public static WebArchive createDeployment() { + WebArchive archive = ShrinkWrap.create(WebArchive.class, "jaxrs_contextprovider_jsonb_web.war"); + archive.addClasses(JsonbContextProviderIT.class); + + return archive; + } + /** * Verifies that an implementation will use the {@link Jsonb} instance * offered by an application-provided context resolver. - * - * @throws ExecutionException - * if the instance didn't boot correctly - * @throws InterruptedException - * if the test took much longer than usually expected + * @throws URISyntaxException if the baseUrl cannot be converted to a URI */ @Test - public final void shouldUseApplicationProvidedJsonbInstance() throws InterruptedException, ExecutionException { - // given - final Application application = new EchoApplication(); - final UriBuilder baseUri = UriBuilder.newInstance().scheme("http").host("localhost").port(FREE_PORT); - final SeBootstrap.Configuration requestedConfiguration = SeBootstrap.Configuration.builder().build(); - final CompletionStage<SeBootstrap.Instance> completionStage = SeBootstrap.start(application, requestedConfiguration); - final SeBootstrap.Instance instance = completionStage.toCompletableFuture().get(); - final SeBootstrap.Configuration actualConfiguration = instance.configuration(); - final int actualPort = actualConfiguration.port(); - final UriBuilder effectiveUri = baseUri.port(actualPort).path("echo"); + public final void shouldUseApplicationProvidedJsonbInstance() throws URISyntaxException { try (final Client client = ClientBuilder.newBuilder().register(new CustomJsonbProvider(CLIENT)).build()) { // when final String origin = String.format("Origin(%d)", mockInt()); final POJO requestPojo = new POJO(); requestPojo.setSeenBy(origin); + + final URI effectiveUri = UriBuilder.fromUri(baseUrl.toURI()).path("echo").build(); final POJO responsePojo = client.target(effectiveUri) .request(APPLICATION_JSON_TYPE) .buildPost(Entity.entity(requestPojo, APPLICATION_JSON_TYPE)) @@ -108,8 +114,6 @@ "CustomDeserializer(CLIENT)"); assertThat(responsePojo.getSeenBy(), is(expectedWaypoints)); } - - instance.stop().toCompletableFuture().get(); } public static final class CustomJsonbProvider implements ContextResolver<Jsonb> { @@ -157,6 +161,7 @@ } } + @ApplicationPath("") private static final class EchoApplication extends Application { @Override public final Set<Class<?>> getClasses() {