[Java] Add null ref test for websocket

This commit is contained in:
BrennanConroy 2018-10-30 15:30:29 -07:00
parent 46a3d7e342
commit 36ca210a65
2 changed files with 61 additions and 1 deletions

View File

@ -89,7 +89,7 @@ class WebSocketTransport implements Transport {
void onClose(Integer code, String reason) {
logger.info("WebSocket connection stopping with " +
"code {} and reason '{}'.", code, reason);
if (code != 1000) {
if (code == null || code != 1000) {
onClose.invoke(reason);
}
else {

View File

@ -6,10 +6,15 @@ package com.microsoft.signalr;
import static org.junit.jupiter.api.Assertions.*;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import org.junit.jupiter.api.Test;
import io.reactivex.Completable;
import io.reactivex.Single;
class WebSocketTransportTest {
@Test
public void WebsocketThrowsIfItCantConnect() {
@ -17,4 +22,59 @@ class WebSocketTransportTest {
RuntimeException exception = assertThrows(RuntimeException.class, () -> transport.start("http://www.example.com").blockingAwait(1, TimeUnit.SECONDS));
assertEquals("There was an error starting the Websockets transport.", exception.getMessage());
}
@Test
public void CanPassNullExitCodeToOnClosed() {
WebSocketTransport transport = new WebSocketTransport(new HashMap<>(), new WebSocketTestHttpClient());
AtomicBoolean closed = new AtomicBoolean();
transport.setOnClose(reason -> {
closed.set(true);
});
transport.start("");
transport.stop();
assertTrue(closed.get());
}
class WebSocketTestHttpClient extends HttpClient {
@Override
public Single<HttpResponse> send(HttpRequest request) {
return null;
}
@Override
public WebSocketWrapper createWebSocket(String url, Map<String, String> headers) {
return new TestWrapper();
}
}
class TestWrapper extends WebSocketWrapper {
private WebSocketOnClosedCallback onClose;
@Override
public Completable start() {
return Completable.complete();
}
@Override
public Completable stop() {
if (onClose != null) {
onClose.invoke(null, "");
}
return Completable.complete();
}
@Override
public Completable send(String message) {
return null;
}
@Override
public void setOnReceive(OnReceiveCallBack onReceive) {
}
@Override
public void setOnClose(WebSocketOnClosedCallback onClose) {
this.onClose = onClose;
}
}
}