Migrate websocket-resources test to JUnit 5 and .editorconfig
This commit is contained in:
parent
19f7b207b7
commit
bd820e6d2e
|
@ -4,6 +4,16 @@
|
||||||
*/
|
*/
|
||||||
package org.whispersystems.websocket;
|
package org.whispersystems.websocket;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.Mockito.any;
|
||||||
|
import static org.mockito.Mockito.anyInt;
|
||||||
|
import static org.mockito.Mockito.anyString;
|
||||||
|
import static org.mockito.Mockito.eq;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
@ -12,27 +22,15 @@ import com.google.protobuf.InvalidProtocolBufferException;
|
||||||
import io.dropwizard.auth.Auth;
|
import io.dropwizard.auth.Auth;
|
||||||
import io.dropwizard.jersey.DropwizardResourceConfig;
|
import io.dropwizard.jersey.DropwizardResourceConfig;
|
||||||
import io.dropwizard.jersey.jackson.JacksonMessageBodyProvider;
|
import io.dropwizard.jersey.jackson.JacksonMessageBodyProvider;
|
||||||
import org.eclipse.jetty.websocket.api.CloseStatus;
|
import java.io.OutputStream;
|
||||||
import org.eclipse.jetty.websocket.api.RemoteEndpoint;
|
import java.nio.ByteBuffer;
|
||||||
import org.eclipse.jetty.websocket.api.Session;
|
import java.security.Principal;
|
||||||
import org.eclipse.jetty.websocket.api.UpgradeRequest;
|
import java.util.Arrays;
|
||||||
import org.eclipse.jetty.websocket.api.WriteCallback;
|
import java.util.LinkedList;
|
||||||
import org.glassfish.jersey.server.ApplicationHandler;
|
import java.util.List;
|
||||||
import org.glassfish.jersey.server.ContainerRequest;
|
import java.util.Map;
|
||||||
import org.glassfish.jersey.server.ContainerResponse;
|
import java.util.Optional;
|
||||||
import org.glassfish.jersey.server.ResourceConfig;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import org.junit.Test;
|
|
||||||
import org.mockito.ArgumentCaptor;
|
|
||||||
import org.mockito.stubbing.Answer;
|
|
||||||
import org.whispersystems.websocket.auth.WebsocketAuthValueFactoryProvider;
|
|
||||||
import org.whispersystems.websocket.logging.WebsocketRequestLog;
|
|
||||||
import org.whispersystems.websocket.messages.protobuf.ProtobufWebSocketMessageFactory;
|
|
||||||
import org.whispersystems.websocket.messages.protobuf.SubProtocol;
|
|
||||||
import org.whispersystems.websocket.session.WebSocketSession;
|
|
||||||
import org.whispersystems.websocket.session.WebSocketSessionContext;
|
|
||||||
import org.whispersystems.websocket.session.WebSocketSessionContextValueFactoryProvider;
|
|
||||||
import org.whispersystems.websocket.setup.WebSocketConnectListener;
|
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.validation.constraints.Min;
|
import javax.validation.constraints.Min;
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
@ -48,30 +46,31 @@ import javax.ws.rs.core.MultivaluedMap;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import javax.ws.rs.ext.ExceptionMapper;
|
import javax.ws.rs.ext.ExceptionMapper;
|
||||||
import javax.ws.rs.ext.Provider;
|
import javax.ws.rs.ext.Provider;
|
||||||
import java.io.OutputStream;
|
import org.eclipse.jetty.websocket.api.CloseStatus;
|
||||||
import java.nio.ByteBuffer;
|
import org.eclipse.jetty.websocket.api.RemoteEndpoint;
|
||||||
import java.security.Principal;
|
import org.eclipse.jetty.websocket.api.Session;
|
||||||
import java.util.Arrays;
|
import org.eclipse.jetty.websocket.api.UpgradeRequest;
|
||||||
import java.util.LinkedList;
|
import org.eclipse.jetty.websocket.api.WriteCallback;
|
||||||
import java.util.List;
|
import org.glassfish.jersey.server.ApplicationHandler;
|
||||||
import java.util.Map;
|
import org.glassfish.jersey.server.ContainerRequest;
|
||||||
import java.util.Optional;
|
import org.glassfish.jersey.server.ContainerResponse;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import org.glassfish.jersey.server.ResourceConfig;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
|
import org.mockito.stubbing.Answer;
|
||||||
|
import org.whispersystems.websocket.auth.WebsocketAuthValueFactoryProvider;
|
||||||
|
import org.whispersystems.websocket.logging.WebsocketRequestLog;
|
||||||
|
import org.whispersystems.websocket.messages.protobuf.ProtobufWebSocketMessageFactory;
|
||||||
|
import org.whispersystems.websocket.messages.protobuf.SubProtocol;
|
||||||
|
import org.whispersystems.websocket.session.WebSocketSession;
|
||||||
|
import org.whispersystems.websocket.session.WebSocketSessionContext;
|
||||||
|
import org.whispersystems.websocket.session.WebSocketSessionContextValueFactoryProvider;
|
||||||
|
import org.whispersystems.websocket.setup.WebSocketConnectListener;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
class WebSocketResourceProviderTest {
|
||||||
import static org.mockito.Mockito.any;
|
|
||||||
import static org.mockito.Mockito.anyInt;
|
|
||||||
import static org.mockito.Mockito.anyString;
|
|
||||||
import static org.mockito.Mockito.eq;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
import static org.mockito.Mockito.never;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
public class WebSocketResourceProviderTest {
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnConnect() {
|
void testOnConnect() {
|
||||||
ApplicationHandler applicationHandler = mock(ApplicationHandler.class);
|
ApplicationHandler applicationHandler = mock(ApplicationHandler.class);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketConnectListener connectListener = mock(WebSocketConnectListener.class);
|
WebSocketConnectListener connectListener = mock(WebSocketConnectListener.class);
|
||||||
|
@ -93,17 +92,19 @@ public class WebSocketResourceProviderTest {
|
||||||
verify(session, never()).close();
|
verify(session, never()).close();
|
||||||
verify(session, never()).close(any(CloseStatus.class));
|
verify(session, never()).close(any(CloseStatus.class));
|
||||||
|
|
||||||
ArgumentCaptor<WebSocketSessionContext> contextArgumentCaptor = ArgumentCaptor.forClass(WebSocketSessionContext.class);
|
ArgumentCaptor<WebSocketSessionContext> contextArgumentCaptor = ArgumentCaptor.forClass(
|
||||||
|
WebSocketSessionContext.class);
|
||||||
verify(connectListener).onWebSocketConnect(contextArgumentCaptor.capture());
|
verify(connectListener).onWebSocketConnect(contextArgumentCaptor.capture());
|
||||||
|
|
||||||
assertThat(contextArgumentCaptor.getValue().getAuthenticated(TestPrincipal.class).getName()).isEqualTo("fooz");
|
assertThat(contextArgumentCaptor.getValue().getAuthenticated(TestPrincipal.class).getName()).isEqualTo("fooz");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMockedRouteMessageSuccess() throws Exception {
|
void testMockedRouteMessageSuccess() throws Exception {
|
||||||
ApplicationHandler applicationHandler = mock(ApplicationHandler.class);
|
ApplicationHandler applicationHandler = mock(ApplicationHandler.class);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, new TestPrincipal("foo"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, new TestPrincipal("foo"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -145,7 +146,8 @@ public class WebSocketResourceProviderTest {
|
||||||
verify(session, never()).close();
|
verify(session, never()).close();
|
||||||
verify(session, never()).close(any(CloseStatus.class));
|
verify(session, never()).close(any(CloseStatus.class));
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/bar", new LinkedList<>(), Optional.of("hello world!".getBytes())).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/bar",
|
||||||
|
new LinkedList<>(), Optional.of("hello world!".getBytes())).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -163,18 +165,21 @@ public class WebSocketResourceProviderTest {
|
||||||
verify(requestLog).log(eq("127.0.0.1"), eq(bundledRequest), eq(response));
|
verify(requestLog).log(eq("127.0.0.1"), eq(bundledRequest), eq(response));
|
||||||
verify(remoteEndpoint).sendBytesByFuture(responseCaptor.capture());
|
verify(remoteEndpoint).sendBytesByFuture(responseCaptor.capture());
|
||||||
|
|
||||||
SubProtocol.WebSocketMessage responseMessageContainer = SubProtocol.WebSocketMessage.parseFrom(responseCaptor.getValue().array());
|
SubProtocol.WebSocketMessage responseMessageContainer = SubProtocol.WebSocketMessage.parseFrom(
|
||||||
|
responseCaptor.getValue().array());
|
||||||
assertThat(responseMessageContainer.getResponse().getId()).isEqualTo(111L);
|
assertThat(responseMessageContainer.getResponse().getId()).isEqualTo(111L);
|
||||||
assertThat(responseMessageContainer.getResponse().getStatus()).isEqualTo(200);
|
assertThat(responseMessageContainer.getResponse().getStatus()).isEqualTo(200);
|
||||||
assertThat(responseMessageContainer.getResponse().getMessage()).isEqualTo("OK");
|
assertThat(responseMessageContainer.getResponse().getMessage()).isEqualTo("OK");
|
||||||
assertThat(responseMessageContainer.getResponse().getBody()).isEqualTo(ByteString.copyFrom("hello world!".getBytes()));
|
assertThat(responseMessageContainer.getResponse().getBody()).isEqualTo(
|
||||||
|
ByteString.copyFrom("hello world!".getBytes()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMockedRouteMessageFailure() throws Exception {
|
void testMockedRouteMessageFailure() throws Exception {
|
||||||
ApplicationHandler applicationHandler = mock(ApplicationHandler.class);
|
ApplicationHandler applicationHandler = mock(ApplicationHandler.class);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, new TestPrincipal("foo"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, new TestPrincipal("foo"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -183,7 +188,8 @@ public class WebSocketResourceProviderTest {
|
||||||
when(session.getUpgradeRequest()).thenReturn(request);
|
when(session.getUpgradeRequest()).thenReturn(request);
|
||||||
when(session.getRemote()).thenReturn(remoteEndpoint);
|
when(session.getRemote()).thenReturn(remoteEndpoint);
|
||||||
|
|
||||||
when(applicationHandler.apply(any(ContainerRequest.class), any(OutputStream.class))).thenReturn(CompletableFuture.failedFuture(new IllegalStateException("foo")));
|
when(applicationHandler.apply(any(ContainerRequest.class), any(OutputStream.class))).thenReturn(
|
||||||
|
CompletableFuture.failedFuture(new IllegalStateException("foo")));
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
|
@ -191,7 +197,8 @@ public class WebSocketResourceProviderTest {
|
||||||
verify(session, never()).close();
|
verify(session, never()).close();
|
||||||
verify(session, never()).close(any(CloseStatus.class));
|
verify(session, never()).close(any(CloseStatus.class));
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/bar", new LinkedList<>(), Optional.of("hello world!".getBytes())).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/bar",
|
||||||
|
new LinkedList<>(), Optional.of("hello world!".getBytes())).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -209,14 +216,15 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
verify(remoteEndpoint).sendBytesByFuture(responseCaptor.capture());
|
verify(remoteEndpoint).sendBytesByFuture(responseCaptor.capture());
|
||||||
|
|
||||||
SubProtocol.WebSocketMessage responseMessageContainer = SubProtocol.WebSocketMessage.parseFrom(responseCaptor.getValue().array());
|
SubProtocol.WebSocketMessage responseMessageContainer = SubProtocol.WebSocketMessage.parseFrom(
|
||||||
|
responseCaptor.getValue().array());
|
||||||
assertThat(responseMessageContainer.getResponse().getStatus()).isEqualTo(500);
|
assertThat(responseMessageContainer.getResponse().getStatus()).isEqualTo(500);
|
||||||
assertThat(responseMessageContainer.getResponse().getMessage()).isEqualTo("Error response");
|
assertThat(responseMessageContainer.getResponse().getMessage()).isEqualTo("Error response");
|
||||||
assertThat(responseMessageContainer.getResponse().hasBody()).isFalse();
|
assertThat(responseMessageContainer.getResponse().hasBody()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testActualRouteMessageSuccess() throws InvalidProtocolBufferException {
|
void testActualRouteMessageSuccess() throws InvalidProtocolBufferException {
|
||||||
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
||||||
resourceConfig.register(new TestResource());
|
resourceConfig.register(new TestResource());
|
||||||
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
||||||
|
@ -225,7 +233,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, new TestPrincipal("foo"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, new TestPrincipal("foo"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -236,7 +245,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/hello", new LinkedList<>(), Optional.empty()).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/hello",
|
||||||
|
new LinkedList<>(), Optional.empty()).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -253,17 +263,17 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testActualRouteMessageNotFound() throws InvalidProtocolBufferException {
|
void testActualRouteMessageNotFound() throws InvalidProtocolBufferException {
|
||||||
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
||||||
resourceConfig.register(new TestResource());
|
resourceConfig.register(new TestResource());
|
||||||
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
||||||
resourceConfig.register(new WebsocketAuthValueFactoryProvider.Binder<>(TestPrincipal.class));
|
resourceConfig.register(new WebsocketAuthValueFactoryProvider.Binder<>(TestPrincipal.class));
|
||||||
resourceConfig.register(new JacksonMessageBodyProvider(new ObjectMapper()));
|
resourceConfig.register(new JacksonMessageBodyProvider(new ObjectMapper()));
|
||||||
|
|
||||||
|
|
||||||
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, new TestPrincipal("foo"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, new TestPrincipal("foo"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -274,7 +284,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/doesntexist", new LinkedList<>(), Optional.empty()).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET",
|
||||||
|
"/v1/test/doesntexist", new LinkedList<>(), Optional.empty()).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -291,7 +302,7 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testActualRouteMessageAuthorized() throws InvalidProtocolBufferException {
|
void testActualRouteMessageAuthorized() throws InvalidProtocolBufferException {
|
||||||
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
||||||
resourceConfig.register(new TestResource());
|
resourceConfig.register(new TestResource());
|
||||||
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
||||||
|
@ -300,7 +311,9 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, new TestPrincipal("authorizedUserName"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, new TestPrincipal("authorizedUserName"), new ProtobufWebSocketMessageFactory(), Optional.empty(),
|
||||||
|
30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -311,7 +324,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/world", new LinkedList<>(), Optional.empty()).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/world",
|
||||||
|
new LinkedList<>(), Optional.empty()).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -328,7 +342,7 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testActualRouteMessageUnauthorized() throws InvalidProtocolBufferException {
|
void testActualRouteMessageUnauthorized() throws InvalidProtocolBufferException {
|
||||||
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
||||||
resourceConfig.register(new TestResource());
|
resourceConfig.register(new TestResource());
|
||||||
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
||||||
|
@ -337,7 +351,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, null, new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, null, new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -348,7 +363,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/world", new LinkedList<>(), Optional.empty()).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/world",
|
||||||
|
new LinkedList<>(), Optional.empty()).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -364,7 +380,7 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testActualRouteMessageOptionalAuthorizedPresent() throws InvalidProtocolBufferException {
|
void testActualRouteMessageOptionalAuthorizedPresent() throws InvalidProtocolBufferException {
|
||||||
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
||||||
resourceConfig.register(new TestResource());
|
resourceConfig.register(new TestResource());
|
||||||
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
||||||
|
@ -373,7 +389,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, new TestPrincipal("something"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, new TestPrincipal("something"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -384,7 +401,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/optional", new LinkedList<>(), Optional.empty()).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/optional",
|
||||||
|
new LinkedList<>(), Optional.empty()).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -401,7 +419,7 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testActualRouteMessageOptionalAuthorizedEmpty() throws InvalidProtocolBufferException {
|
void testActualRouteMessageOptionalAuthorizedEmpty() throws InvalidProtocolBufferException {
|
||||||
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
||||||
resourceConfig.register(new TestResource());
|
resourceConfig.register(new TestResource());
|
||||||
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
||||||
|
@ -410,7 +428,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, null, new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, null, new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -421,7 +440,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/optional", new LinkedList<>(), Optional.empty()).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/optional",
|
||||||
|
new LinkedList<>(), Optional.empty()).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -438,7 +458,7 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testActualRouteMessagePutAuthenticatedEntity() throws InvalidProtocolBufferException, JsonProcessingException {
|
void testActualRouteMessagePutAuthenticatedEntity() throws InvalidProtocolBufferException, JsonProcessingException {
|
||||||
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
||||||
resourceConfig.register(new TestResource());
|
resourceConfig.register(new TestResource());
|
||||||
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
||||||
|
@ -447,7 +467,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, new TestPrincipal("gooduser"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, new TestPrincipal("gooduser"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -458,7 +479,9 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "PUT", "/v1/test/some/testparam", List.of("Content-Type: application/json"), Optional.of(new ObjectMapper().writeValueAsBytes(new TestResource.TestEntity("mykey", 1001)))).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "PUT",
|
||||||
|
"/v1/test/some/testparam", List.of("Content-Type: application/json"),
|
||||||
|
Optional.of(new ObjectMapper().writeValueAsBytes(new TestResource.TestEntity("mykey", 1001)))).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -475,7 +498,8 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testActualRouteMessagePutAuthenticatedBadEntity() throws InvalidProtocolBufferException, JsonProcessingException {
|
void testActualRouteMessagePutAuthenticatedBadEntity()
|
||||||
|
throws InvalidProtocolBufferException, JsonProcessingException {
|
||||||
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
||||||
resourceConfig.register(new TestResource());
|
resourceConfig.register(new TestResource());
|
||||||
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
resourceConfig.register(new WebSocketSessionContextValueFactoryProvider.Binder());
|
||||||
|
@ -484,7 +508,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, new TestPrincipal("gooduser"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, new TestPrincipal("gooduser"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -495,7 +520,9 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "PUT", "/v1/test/some/testparam", List.of("Content-Type: application/json"), Optional.of(new ObjectMapper().writeValueAsBytes(new TestResource.TestEntity("mykey", 5)))).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "PUT",
|
||||||
|
"/v1/test/some/testparam", List.of("Content-Type: application/json"),
|
||||||
|
Optional.of(new ObjectMapper().writeValueAsBytes(new TestResource.TestEntity("mykey", 5)))).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -512,7 +539,7 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testActualRouteMessageExceptionMapping() throws InvalidProtocolBufferException {
|
void testActualRouteMessageExceptionMapping() throws InvalidProtocolBufferException {
|
||||||
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
||||||
resourceConfig.register(new TestResource());
|
resourceConfig.register(new TestResource());
|
||||||
resourceConfig.register(new TestExceptionMapper());
|
resourceConfig.register(new TestExceptionMapper());
|
||||||
|
@ -522,7 +549,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, new TestPrincipal("gooduser"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, new TestPrincipal("gooduser"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -533,7 +561,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/exception/map", List.of("Content-Type: application/json"), Optional.empty()).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET",
|
||||||
|
"/v1/test/exception/map", List.of("Content-Type: application/json"), Optional.empty()).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -549,7 +578,7 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testActualRouteSessionContextInjection() throws InvalidProtocolBufferException {
|
void testActualRouteSessionContextInjection() throws InvalidProtocolBufferException {
|
||||||
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
ResourceConfig resourceConfig = new DropwizardResourceConfig();
|
||||||
resourceConfig.register(new TestResource());
|
resourceConfig.register(new TestResource());
|
||||||
resourceConfig.register(new TestExceptionMapper());
|
resourceConfig.register(new TestExceptionMapper());
|
||||||
|
@ -559,7 +588,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
ApplicationHandler applicationHandler = new ApplicationHandler(resourceConfig);
|
||||||
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
WebsocketRequestLog requestLog = mock(WebsocketRequestLog.class);
|
||||||
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler, requestLog, new TestPrincipal("gooduser"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
WebSocketResourceProvider<TestPrincipal> provider = new WebSocketResourceProvider<>("127.0.0.1", applicationHandler,
|
||||||
|
requestLog, new TestPrincipal("gooduser"), new ProtobufWebSocketMessageFactory(), Optional.empty(), 30000);
|
||||||
|
|
||||||
Session session = mock(Session.class);
|
Session session = mock(Session.class);
|
||||||
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
RemoteEndpoint remoteEndpoint = mock(RemoteEndpoint.class);
|
||||||
|
@ -570,7 +600,8 @@ public class WebSocketResourceProviderTest {
|
||||||
|
|
||||||
provider.onWebSocketConnect(session);
|
provider.onWebSocketConnect(session);
|
||||||
|
|
||||||
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/keepalive", new LinkedList<>(), Optional.empty()).toByteArray();
|
byte[] message = new ProtobufWebSocketMessageFactory().createRequest(Optional.of(111L), "GET", "/v1/test/keepalive",
|
||||||
|
new LinkedList<>(), Optional.empty()).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(message, 0, message.length);
|
provider.onWebSocketBinary(message, 0, message.length);
|
||||||
|
|
||||||
|
@ -583,7 +614,8 @@ public class WebSocketResourceProviderTest {
|
||||||
assertThat(requestMessage.getPath()).isEqualTo("/v1/miccheck");
|
assertThat(requestMessage.getPath()).isEqualTo("/v1/miccheck");
|
||||||
assertThat(requestMessage.getBody().toStringUtf8()).isEqualTo("smert ze smert");
|
assertThat(requestMessage.getBody().toStringUtf8()).isEqualTo("smert ze smert");
|
||||||
|
|
||||||
byte[] clientResponse = new ProtobufWebSocketMessageFactory().createResponse(requestMessage.getId(), 200, "OK", new LinkedList<>(), Optional.of("my response".getBytes())).toByteArray();
|
byte[] clientResponse = new ProtobufWebSocketMessageFactory().createResponse(requestMessage.getId(), 200, "OK",
|
||||||
|
new LinkedList<>(), Optional.of("my response".getBytes())).toByteArray();
|
||||||
|
|
||||||
provider.onWebSocketBinary(clientResponse, 0, clientResponse.length);
|
provider.onWebSocketBinary(clientResponse, 0, clientResponse.length);
|
||||||
|
|
||||||
|
@ -600,7 +632,7 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetHeaderList() {
|
void testGetHeaderList() {
|
||||||
assertThat(WebSocketResourceProvider.getHeaderList(new MultivaluedHashMap<>())).isEmpty();
|
assertThat(WebSocketResourceProvider.getHeaderList(new MultivaluedHashMap<>())).isEmpty();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -615,7 +647,7 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testShouldIncludeUpgradeRequestHeader() {
|
void testShouldIncludeUpgradeRequestHeader() {
|
||||||
assertThat(WebSocketResourceProvider.shouldIncludeUpgradeRequestHeader("Upgrade")).isFalse();
|
assertThat(WebSocketResourceProvider.shouldIncludeUpgradeRequestHeader("Upgrade")).isFalse();
|
||||||
assertThat(WebSocketResourceProvider.shouldIncludeUpgradeRequestHeader("Connection")).isFalse();
|
assertThat(WebSocketResourceProvider.shouldIncludeUpgradeRequestHeader("Connection")).isFalse();
|
||||||
assertThat(WebSocketResourceProvider.shouldIncludeUpgradeRequestHeader("Sec-WebSocket-Key")).isFalse();
|
assertThat(WebSocketResourceProvider.shouldIncludeUpgradeRequestHeader("Sec-WebSocket-Key")).isFalse();
|
||||||
|
@ -624,13 +656,13 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testShouldIncludeRequestMessageHeader() {
|
void testShouldIncludeRequestMessageHeader() {
|
||||||
assertThat(WebSocketResourceProvider.shouldIncludeRequestMessageHeader("X-Forwarded-For")).isFalse();
|
assertThat(WebSocketResourceProvider.shouldIncludeRequestMessageHeader("X-Forwarded-For")).isFalse();
|
||||||
assertThat(WebSocketResourceProvider.shouldIncludeRequestMessageHeader("User-Agent")).isTrue();
|
assertThat(WebSocketResourceProvider.shouldIncludeRequestMessageHeader("User-Agent")).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetCombinedHeaders() {
|
void testGetCombinedHeaders() {
|
||||||
final Map<String, List<String>> upgradeRequestHeaders = Map.of(
|
final Map<String, List<String>> upgradeRequestHeaders = Map.of(
|
||||||
"Host", List.of("server.example.com"),
|
"Host", List.of("server.example.com"),
|
||||||
"Upgrade", List.of("websocket"),
|
"Upgrade", List.of("websocket"),
|
||||||
|
@ -650,14 +682,17 @@ public class WebSocketResourceProviderTest {
|
||||||
"X-Forwarded-For", List.of("127.0.0.1"),
|
"X-Forwarded-For", List.of("127.0.0.1"),
|
||||||
"User-Agent", List.of("Request message user agent"));
|
"User-Agent", List.of("Request message user agent"));
|
||||||
|
|
||||||
assertThat(WebSocketResourceProvider.getCombinedHeaders(upgradeRequestHeaders, requestMessageHeaders)).isEqualTo(expectedHeaders);
|
assertThat(WebSocketResourceProvider.getCombinedHeaders(upgradeRequestHeaders, requestMessageHeaders)).isEqualTo(
|
||||||
|
expectedHeaders);
|
||||||
}
|
}
|
||||||
|
|
||||||
private SubProtocol.WebSocketResponseMessage getResponse(ArgumentCaptor<ByteBuffer> responseCaptor) throws InvalidProtocolBufferException {
|
private SubProtocol.WebSocketResponseMessage getResponse(ArgumentCaptor<ByteBuffer> responseCaptor)
|
||||||
|
throws InvalidProtocolBufferException {
|
||||||
return SubProtocol.WebSocketMessage.parseFrom(responseCaptor.getValue().array()).getResponse();
|
return SubProtocol.WebSocketMessage.parseFrom(responseCaptor.getValue().array()).getResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
private SubProtocol.WebSocketRequestMessage getRequest(ArgumentCaptor<ByteBuffer> requestCaptor) throws InvalidProtocolBufferException {
|
private SubProtocol.WebSocketRequestMessage getRequest(ArgumentCaptor<ByteBuffer> requestCaptor)
|
||||||
|
throws InvalidProtocolBufferException {
|
||||||
return SubProtocol.WebSocketMessage.parseFrom(requestCaptor.getValue().array()).getRequest();
|
return SubProtocol.WebSocketMessage.parseFrom(requestCaptor.getValue().array()).getRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -677,6 +712,7 @@ public class WebSocketResourceProviderTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TestException extends Exception {
|
public static class TestException extends Exception {
|
||||||
|
|
||||||
public TestException(String message) {
|
public TestException(String message) {
|
||||||
super(message);
|
super(message);
|
||||||
}
|
}
|
||||||
|
@ -703,7 +739,9 @@ public class WebSocketResourceProviderTest {
|
||||||
@GET
|
@GET
|
||||||
@Path("/world")
|
@Path("/world")
|
||||||
public String testAuthorizedHello(@Auth TestPrincipal user) {
|
public String testAuthorizedHello(@Auth TestPrincipal user) {
|
||||||
if (user == null) throw new AssertionError();
|
if (user == null) {
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
|
||||||
return "World: " + user.getName();
|
return "World: " + user.getName();
|
||||||
}
|
}
|
||||||
|
@ -711,8 +749,11 @@ public class WebSocketResourceProviderTest {
|
||||||
@GET
|
@GET
|
||||||
@Path("/optional")
|
@Path("/optional")
|
||||||
public String testAuthorizedHello(@Auth Optional<TestPrincipal> user) {
|
public String testAuthorizedHello(@Auth Optional<TestPrincipal> user) {
|
||||||
if (user.isPresent()) return "World: " + user.get().getName();
|
if (user.isPresent()) {
|
||||||
else return "Empty world";
|
return "World: " + user.get().getName();
|
||||||
|
} else {
|
||||||
|
return "Empty world";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
|
|
|
@ -4,47 +4,46 @@
|
||||||
*/
|
*/
|
||||||
package org.whispersystems.websocket.logging;
|
package org.whispersystems.websocket.logging;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
import ch.qos.logback.classic.LoggerContext;
|
import ch.qos.logback.classic.LoggerContext;
|
||||||
import ch.qos.logback.core.OutputStreamAppender;
|
import ch.qos.logback.core.OutputStreamAppender;
|
||||||
import ch.qos.logback.core.spi.DeferredProcessingAware;
|
import ch.qos.logback.core.spi.DeferredProcessingAware;
|
||||||
import io.dropwizard.logging.AbstractOutputStreamAppenderFactory;
|
import io.dropwizard.logging.AbstractOutputStreamAppenderFactory;
|
||||||
import org.glassfish.jersey.internal.MapPropertiesDelegate;
|
|
||||||
import org.glassfish.jersey.server.ContainerRequest;
|
|
||||||
import org.glassfish.jersey.server.ContainerResponse;
|
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.whispersystems.websocket.WebSocketSecurityContext;
|
|
||||||
import org.whispersystems.websocket.session.ContextPrincipal;
|
|
||||||
import org.whispersystems.websocket.session.WebSocketSessionContext;
|
|
||||||
|
|
||||||
import javax.ws.rs.core.Response;
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import org.glassfish.jersey.internal.MapPropertiesDelegate;
|
||||||
import static org.mockito.Mockito.mock;
|
import org.glassfish.jersey.server.ContainerRequest;
|
||||||
|
import org.glassfish.jersey.server.ContainerResponse;
|
||||||
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.whispersystems.websocket.WebSocketSecurityContext;
|
||||||
|
import org.whispersystems.websocket.session.ContextPrincipal;
|
||||||
|
import org.whispersystems.websocket.session.WebSocketSessionContext;
|
||||||
|
|
||||||
public class WebSocketRequestLogTest {
|
public class WebSocketRequestLogTest {
|
||||||
|
|
||||||
private final static Locale ORIGINAL_DEFAULT_LOCALE = Locale.getDefault();
|
private final static Locale ORIGINAL_DEFAULT_LOCALE = Locale.getDefault();
|
||||||
|
|
||||||
@Before
|
@BeforeEach
|
||||||
public void beforeEachTest() {
|
void beforeEachTest() {
|
||||||
Locale.setDefault(Locale.ENGLISH);
|
Locale.setDefault(Locale.ENGLISH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@AfterEach
|
||||||
public void afterEachTest() {
|
void afterEachTest() {
|
||||||
Locale.setDefault(ORIGINAL_DEFAULT_LOCALE);
|
Locale.setDefault(ORIGINAL_DEFAULT_LOCALE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLogLineWithoutHeaders() throws InterruptedException {
|
void testLogLineWithoutHeaders() throws InterruptedException {
|
||||||
WebSocketSessionContext sessionContext = mock(WebSocketSessionContext.class);
|
WebSocketSessionContext sessionContext = mock(WebSocketSessionContext.class);
|
||||||
|
|
||||||
ListAppender<WebsocketEvent> listAppender = new ListAppender<>();
|
ListAppender<WebsocketEvent> listAppender = new ListAppender<>();
|
||||||
|
@ -52,7 +51,9 @@ public class WebSocketRequestLogTest {
|
||||||
requestLoggerFactory.appenders = List.of(new ListAppenderFactory<>(listAppender));
|
requestLoggerFactory.appenders = List.of(new ListAppenderFactory<>(listAppender));
|
||||||
|
|
||||||
WebsocketRequestLog requestLog = requestLoggerFactory.build("test-logger");
|
WebsocketRequestLog requestLog = requestLoggerFactory.build("test-logger");
|
||||||
ContainerRequest request = new ContainerRequest (null, URI.create("/v1/test"), "GET", new WebSocketSecurityContext(new ContextPrincipal(sessionContext)), new MapPropertiesDelegate(new HashMap<>()), null);
|
ContainerRequest request = new ContainerRequest(null, URI.create("/v1/test"), "GET",
|
||||||
|
new WebSocketSecurityContext(new ContextPrincipal(sessionContext)), new MapPropertiesDelegate(new HashMap<>()),
|
||||||
|
null);
|
||||||
ContainerResponse response = new ContainerResponse(request, Response.ok("My response body").build());
|
ContainerResponse response = new ContainerResponse(request, Response.ok("My response body").build());
|
||||||
|
|
||||||
requestLog.log("123.456.789.123", request, response);
|
requestLog.log("123.456.789.123", request, response);
|
||||||
|
@ -61,11 +62,12 @@ public class WebSocketRequestLogTest {
|
||||||
assertThat(listAppender.list.size()).isEqualTo(1);
|
assertThat(listAppender.list.size()).isEqualTo(1);
|
||||||
|
|
||||||
String loggedLine = new String(listAppender.outputStream.toByteArray());
|
String loggedLine = new String(listAppender.outputStream.toByteArray());
|
||||||
assertThat(loggedLine).matches("123\\.456\\.789\\.123 \\- \\- \\[[0-9]{2}\\/[a-zA-Z]{3}\\/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2} (\\-|\\+)[0-9]{4}\\] \"GET \\/v1\\/test WS\" 200 \\- \"\\-\" \"\\-\"\n");
|
assertThat(loggedLine).matches(
|
||||||
|
"123\\.456\\.789\\.123 \\- \\- \\[[0-9]{2}\\/[a-zA-Z]{3}\\/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2} (\\-|\\+)[0-9]{4}\\] \"GET \\/v1\\/test WS\" 200 \\- \"\\-\" \"\\-\"\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLogLineWithHeaders() throws InterruptedException {
|
void testLogLineWithHeaders() throws InterruptedException {
|
||||||
WebSocketSessionContext sessionContext = mock(WebSocketSessionContext.class);
|
WebSocketSessionContext sessionContext = mock(WebSocketSessionContext.class);
|
||||||
|
|
||||||
ListAppender<WebsocketEvent> listAppender = new ListAppender<>();
|
ListAppender<WebsocketEvent> listAppender = new ListAppender<>();
|
||||||
|
@ -73,7 +75,9 @@ public class WebSocketRequestLogTest {
|
||||||
requestLoggerFactory.appenders = List.of(new ListAppenderFactory<>(listAppender));
|
requestLoggerFactory.appenders = List.of(new ListAppenderFactory<>(listAppender));
|
||||||
|
|
||||||
WebsocketRequestLog requestLog = requestLoggerFactory.build("test-logger");
|
WebsocketRequestLog requestLog = requestLoggerFactory.build("test-logger");
|
||||||
ContainerRequest request = new ContainerRequest (null, URI.create("/v1/test"), "GET", new WebSocketSecurityContext(new ContextPrincipal(sessionContext)), new MapPropertiesDelegate(new HashMap<>()), null);
|
ContainerRequest request = new ContainerRequest(null, URI.create("/v1/test"), "GET",
|
||||||
|
new WebSocketSecurityContext(new ContextPrincipal(sessionContext)), new MapPropertiesDelegate(new HashMap<>()),
|
||||||
|
null);
|
||||||
request.header("User-Agent", "SmertZeSmert");
|
request.header("User-Agent", "SmertZeSmert");
|
||||||
request.header("Referer", "https://moxie.org");
|
request.header("Referer", "https://moxie.org");
|
||||||
ContainerResponse response = new ContainerResponse(request, Response.ok("My response body").build());
|
ContainerResponse response = new ContainerResponse(request, Response.ok("My response body").build());
|
||||||
|
@ -84,14 +88,16 @@ public class WebSocketRequestLogTest {
|
||||||
assertThat(listAppender.list.size()).isEqualTo(1);
|
assertThat(listAppender.list.size()).isEqualTo(1);
|
||||||
|
|
||||||
String loggedLine = new String(listAppender.outputStream.toByteArray());
|
String loggedLine = new String(listAppender.outputStream.toByteArray());
|
||||||
assertThat(loggedLine).matches("123\\.456\\.789\\.123 \\- \\- \\[[0-9]{2}\\/[a-zA-Z]{3}\\/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2} (\\-|\\+)[0-9]{4}\\] \"GET \\/v1\\/test WS\" 200 \\- \"https://moxie.org\" \"SmertZeSmert\"\n");
|
assertThat(loggedLine).matches(
|
||||||
|
"123\\.456\\.789\\.123 \\- \\- \\[[0-9]{2}\\/[a-zA-Z]{3}\\/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2} (\\-|\\+)[0-9]{4}\\] \"GET \\/v1\\/test WS\" 200 \\- \"https://moxie.org\" \"SmertZeSmert\"\n");
|
||||||
|
|
||||||
System.out.println(listAppender.list.get(0));
|
System.out.println(listAppender.list.get(0));
|
||||||
System.out.println(new String(listAppender.outputStream.toByteArray()));
|
System.out.println(new String(listAppender.outputStream.toByteArray()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class ListAppenderFactory<T extends DeferredProcessingAware> extends
|
||||||
|
AbstractOutputStreamAppenderFactory<T> {
|
||||||
|
|
||||||
private static class ListAppenderFactory<T extends DeferredProcessingAware> extends AbstractOutputStreamAppenderFactory<T> {
|
|
||||||
private final ListAppender<T> listAppender;
|
private final ListAppender<T> listAppender;
|
||||||
|
|
||||||
public ListAppenderFactory(ListAppender<T> listAppender) {
|
public ListAppenderFactory(ListAppender<T> listAppender) {
|
||||||
|
|
Loading…
Reference in New Issue