You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2022/11/10 17:48:58 UTC
[cxf] branch main updated: CXF-8792: Address tests failures due to Servlet 6.0 baseline in Spring Test (#1024)
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/main by this push:
new a43799c833 CXF-8792: Address tests failures due to Servlet 6.0 baseline in Spring Test (#1024)
a43799c833 is described below
commit a43799c83305ad33905d757011cb9c7cce4ee6b3
Author: Andriy Redko <dr...@gmail.com>
AuthorDate: Thu Nov 10 12:48:50 2022 -0500
CXF-8792: Address tests failures due to Servlet 6.0 baseline in Spring Test (#1024)
---
rt/rs/sse/pom.xml | 10 --
.../cxf/jaxrs/sse/SseBroadcasterImplTest.java | 15 +--
.../jaxrs/sse/SseEventSinkContextProviderTest.java | 15 +--
.../org/apache/cxf/jaxrs/sse/TestAsyncContext.java | 117 +++++++++++++++++++++
4 files changed, 133 insertions(+), 24 deletions(-)
diff --git a/rt/rs/sse/pom.xml b/rt/rs/sse/pom.xml
index c551f96300..e85af95f10 100644
--- a/rt/rs/sse/pom.xml
+++ b/rt/rs/sse/pom.xml
@@ -55,16 +55,6 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>${cxf.servlet-api.group}</groupId>
<artifactId>${cxf.servlet-api.artifact}</artifactId>
diff --git a/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/SseBroadcasterImplTest.java b/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/SseBroadcasterImplTest.java
index 9c2b30de54..fdfefd9dcc 100644
--- a/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/SseBroadcasterImplTest.java
+++ b/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/SseBroadcasterImplTest.java
@@ -24,13 +24,13 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.atomic.LongAdder;
+import jakarta.servlet.AsyncContext;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.ext.MessageBodyWriter;
import jakarta.ws.rs.sse.OutboundSseEvent;
import jakarta.ws.rs.sse.SseBroadcaster;
-import org.springframework.mock.web.MockAsyncContext;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
import org.junit.Before;
import org.junit.Test;
@@ -44,16 +44,17 @@ import static org.mockito.Mockito.when;
public class SseBroadcasterImplTest {
private SseBroadcaster broadcaster;
private MessageBodyWriter<OutboundSseEvent> writer;
- private MockHttpServletResponse response;
- private MockAsyncContext ctx;
+ private HttpServletResponse response;
+ private AsyncContext ctx;
@SuppressWarnings("unchecked")
@Before
public void setUp() {
broadcaster = new SseBroadcasterImpl();
- response = new MockHttpServletResponse();
+ response = mock(HttpServletResponse.class);
writer = mock(MessageBodyWriter.class);
- ctx = new MockAsyncContext(new MockHttpServletRequest(), response);
+ final HttpServletRequest request = mock(HttpServletRequest.class);
+ ctx = new TestAsyncContext(request, response);
}
@Test
diff --git a/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/SseEventSinkContextProviderTest.java b/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/SseEventSinkContextProviderTest.java
index 8b116ad46c..8f59c4104e 100644
--- a/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/SseEventSinkContextProviderTest.java
+++ b/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/SseEventSinkContextProviderTest.java
@@ -24,6 +24,9 @@ import java.util.concurrent.CompletionException;
import java.util.concurrent.CompletionStage;
import java.util.stream.IntStream;
+import jakarta.servlet.AsyncContext;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import jakarta.ws.rs.sse.OutboundSseEvent;
import jakarta.ws.rs.sse.SseEventSink;
import org.apache.cxf.continuations.ContinuationProvider;
@@ -32,9 +35,6 @@ import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
-import org.springframework.mock.web.MockAsyncContext;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
import org.junit.Before;
import org.junit.Rule;
@@ -63,15 +63,16 @@ public class SseEventSinkContextProviderTest {
final Endpoint endpoint = mock(Endpoint.class);
final ContinuationProvider continuationProvider = mock(ContinuationProvider.class);
- final MockHttpServletResponse response = new MockHttpServletResponse();
- final MockHttpServletRequest request = new MockHttpServletRequest();
- final MockAsyncContext ctx = new MockAsyncContext(request, response) {
+ final HttpServletResponse response = mock(HttpServletResponse.class);
+ final HttpServletRequest request = mock(HttpServletRequest.class);
+ final AsyncContext ctx = new TestAsyncContext(request, response) {
@Override
public void start(Runnable runnable) {
/* do nothing */
}
};
- request.setAsyncContext(ctx);
+
+ when(request.getAsyncContext()).thenReturn(ctx);
message = new MessageImpl();
message.setExchange(exchange);
diff --git a/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/TestAsyncContext.java b/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/TestAsyncContext.java
new file mode 100644
index 0000000000..63b937e389
--- /dev/null
+++ b/rt/rs/sse/src/test/java/org/apache/cxf/jaxrs/sse/TestAsyncContext.java
@@ -0,0 +1,117 @@
+/**
+ * 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.cxf.jaxrs.sse;
+
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import jakarta.servlet.AsyncContext;
+import jakarta.servlet.AsyncEvent;
+import jakarta.servlet.AsyncListener;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+class TestAsyncContext implements AsyncContext {
+ private final HttpServletRequest request;
+ private final HttpServletResponse response;
+ private final Collection<AsyncListener> listeners = new ArrayList<>();
+
+ TestAsyncContext(HttpServletRequest request, HttpServletResponse response) {
+ this.request = request;
+ this.response = response;
+ }
+
+ @Override
+ public ServletRequest getRequest() {
+ return this.request;
+ }
+
+ @Override
+ public ServletResponse getResponse() {
+ return this.response;
+ }
+
+ @Override
+ public boolean hasOriginalRequestAndResponse() {
+ throw new UnsupportedOperationException("The operation is not supported by test implementation");
+ }
+
+ @Override
+ public void dispatch() {
+ throw new UnsupportedOperationException("The operation is not supported by test implementation");
+ }
+
+ @Override
+ public void dispatch(String path) {
+ throw new UnsupportedOperationException("The operation is not supported by test implementation");
+ }
+
+ @Override
+ public void dispatch(ServletContext context, String path) {
+ throw new UnsupportedOperationException("The operation is not supported by test implementation");
+ }
+
+ @Override
+ public void complete() {
+ for (AsyncListener listener : this.listeners) {
+ try {
+ listener.onComplete(new AsyncEvent(this, this.request, this.response));
+ } catch (final IOException ex) {
+ throw new UncheckedIOException(ex);
+ }
+ }
+ }
+
+ @Override
+ public void start(Runnable runnable) {
+ runnable.run();
+ }
+
+ @Override
+ public void addListener(AsyncListener listener) {
+ this.listeners.add(listener);
+ }
+
+ @Override
+ public void addListener(AsyncListener listener, ServletRequest req, ServletResponse resp) {
+ this.listeners.add(listener);
+ }
+
+ @Override
+ public <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {
+ throw new UnsupportedOperationException("The operation is not supported by test implementation");
+ }
+
+ @Override
+ public void setTimeout(long timeout) {
+ throw new UnsupportedOperationException("The operation is not supported by test implementation");
+ }
+
+ @Override
+ public long getTimeout() {
+ throw new UnsupportedOperationException("The operation is not supported by test implementation");
+ }
+}