[Java] Add null ref test for websocket
This commit is contained in:
parent
46a3d7e342
commit
36ca210a65
|
|
@ -89,7 +89,7 @@ class WebSocketTransport implements Transport {
|
||||||
void onClose(Integer code, String reason) {
|
void onClose(Integer code, String reason) {
|
||||||
logger.info("WebSocket connection stopping with " +
|
logger.info("WebSocket connection stopping with " +
|
||||||
"code {} and reason '{}'.", code, reason);
|
"code {} and reason '{}'.", code, reason);
|
||||||
if (code != 1000) {
|
if (code == null || code != 1000) {
|
||||||
onClose.invoke(reason);
|
onClose.invoke(reason);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,15 @@ package com.microsoft.signalr;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import io.reactivex.Completable;
|
||||||
|
import io.reactivex.Single;
|
||||||
|
|
||||||
class WebSocketTransportTest {
|
class WebSocketTransportTest {
|
||||||
@Test
|
@Test
|
||||||
public void WebsocketThrowsIfItCantConnect() {
|
public void WebsocketThrowsIfItCantConnect() {
|
||||||
|
|
@ -17,4 +22,59 @@ class WebSocketTransportTest {
|
||||||
RuntimeException exception = assertThrows(RuntimeException.class, () -> transport.start("http://www.example.com").blockingAwait(1, TimeUnit.SECONDS));
|
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());
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue