diff options
author | elonen <elonen@iki.fi> | 2015-05-10 11:01:23 +0300 |
---|---|---|
committer | elonen <elonen@iki.fi> | 2015-05-10 11:01:23 +0300 |
commit | c3e84a21f5169dc4c26c277370ebf28bd52b0cad (patch) | |
tree | 0ed8d6376b7f2a40668a3da60fce2cb230205e66 /websocket/src/test | |
parent | 28ad0a8f0150fce97fa56b56c1d7b2274c39e4cb (diff) | |
parent | 6b640a9322686342d6f8df010807d1ae11add38b (diff) | |
download | nanohttpd-c3e84a21f5169dc4c26c277370ebf28bd52b0cad.tar.gz |
Merge pull request #176 from NanoHttpd/SingleClassWebsocketServer
Combine the websocket server into one class like NanoHttpd.
Diffstat (limited to 'websocket/src/test')
-rw-r--r-- | websocket/src/test/java/fi/iki/elonen/NanoWebSocketServerTest.java | 74 | ||||
-rw-r--r-- | websocket/src/test/java/fi/iki/elonen/WebSocketResponseHandlerTest.java | 66 |
2 files changed, 20 insertions, 120 deletions
diff --git a/websocket/src/test/java/fi/iki/elonen/NanoWebSocketServerTest.java b/websocket/src/test/java/fi/iki/elonen/NanoWebSocketServerTest.java deleted file mode 100644 index 1028d0e..0000000 --- a/websocket/src/test/java/fi/iki/elonen/NanoWebSocketServerTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package fi.iki.elonen; - -/* - * #%L - * NanoHttpd-Websocket - * %% - * Copyright (C) 2012 - 2015 nanohttpd - * %% - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of the nanohttpd nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * #L% - */ - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; - -import java.util.Map; - -import static org.junit.Assert.assertEquals; -import static org.mockito.Mockito.when; - -@RunWith(MockitoJUnitRunner.class) -public class NanoWebSocketServerTest { - @Mock - private NanoHTTPD.IHTTPSession session; - - private NanoWebSocketServer server; - - @Before - public void setUp() { - server = new NanoWebSocketServer(9090); - } - - @Test(expected = Error.class) - public void testMissingResponseFactoryThrowsErrorOnServe() { - server.openWebSocket(session); - } - - @Test - public void testMissingResponseFactoryThrowsErrorWithCorrectMessageOnServe() { - NanoWebSocketServer server = new NanoWebSocketServer(9090); - try { - server.openWebSocket(session); - } catch (Error e) { - assertEquals(NanoWebSocketServer.MISSING_FACTORY_MESSAGE, e.getMessage()); - } - } -}
\ No newline at end of file diff --git a/websocket/src/test/java/fi/iki/elonen/WebSocketResponseHandlerTest.java b/websocket/src/test/java/fi/iki/elonen/WebSocketResponseHandlerTest.java index b368f91..7519646 100644 --- a/websocket/src/test/java/fi/iki/elonen/WebSocketResponseHandlerTest.java +++ b/websocket/src/test/java/fi/iki/elonen/WebSocketResponseHandlerTest.java @@ -33,48 +33,36 @@ package fi.iki.elonen; * #L% */ +import static junit.framework.Assert.*; +import static org.mockito.Mockito.*; + import java.util.HashMap; import java.util.Map; import org.junit.Before; import org.junit.Test; - -import fi.iki.elonen.NanoHTTPD.IHTTPSession; -import fi.iki.elonen.NanoHTTPD.Response; import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; -import static junit.framework.Assert.*; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.atLeast; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import fi.iki.elonen.NanoHTTPD.IHTTPSession; +import fi.iki.elonen.NanoHTTPD.Response; @RunWith(MockitoJUnitRunner.class) public class WebSocketResponseHandlerTest { @Mock private IHTTPSession session; - @Mock - private WebSocket webSocket; - @Mock - private IWebSocketFactory webSocketFactory; - @Mock - private Response response; - @Captor - private ArgumentCaptor<String> headerNameCaptor; - @Captor - private ArgumentCaptor<String> headerCaptor; - private Map<String, String> headers; + private NanoWebSocketServer nanoWebSocketServer; - private WebSocketResponseHandler responseHandler; + private Map<String, String> headers; @Before public void setUp() { + nanoWebSocketServer = Mockito.mock(NanoWebSocketServer.class, Mockito.CALLS_REAL_METHODS); + headers = new HashMap<String, String>(); headers.put("upgrade", "websocket"); headers.put("connection", "Upgrade"); @@ -83,30 +71,23 @@ public class WebSocketResponseHandlerTest { headers.put("sec-websocket-version", "13"); when(session.getHeaders()).thenReturn(headers); - when(webSocketFactory.openWebSocket(any(IHTTPSession.class))).thenReturn(webSocket); - when(webSocket.getHandshakeResponse()).thenReturn(response); - - responseHandler = new WebSocketResponseHandler(webSocketFactory); } @Test public void testHandshakeReturnsResponseWithExpectedHeaders() { - Response handshakeResponse = responseHandler.serve(session); + Response handshakeResponse = nanoWebSocketServer.serve(session); - verify(webSocket).getHandshakeResponse(); assertNotNull(handshakeResponse); - assertSame(response, handshakeResponse); - verify(response, atLeast(1)).addHeader(headerNameCaptor.capture(), headerCaptor.capture()); - assertHeader(0, "sec-websocket-accept", "HSmrc0sMlYUkAGmm5OPpG2HaGWk="); - assertHeader(1, "sec-websocket-protocol", "chat"); + assertEquals(handshakeResponse.getHeader(NanoWebSocketServer.HEADER_WEBSOCKET_ACCEPT), "HSmrc0sMlYUkAGmm5OPpG2HaGWk="); + assertEquals(handshakeResponse.getHeader(NanoWebSocketServer.HEADER_WEBSOCKET_PROTOCOL), "chat"); } @Test public void testWrongWebsocketVersionReturnsErrorResponse() { headers.put("sec-websocket-version", "12"); - Response handshakeResponse = responseHandler.serve(session); + Response handshakeResponse = nanoWebSocketServer.serve(session); assertNotNull(handshakeResponse); assertEquals(Response.Status.BAD_REQUEST, handshakeResponse.getStatus()); @@ -116,7 +97,7 @@ public class WebSocketResponseHandlerTest { public void testMissingKeyReturnsErrorResponse() { headers.remove("sec-websocket-key"); - Response handshakeResponse = responseHandler.serve(session); + Response handshakeResponse = nanoWebSocketServer.serve(session); assertNotNull(handshakeResponse); assertEquals(Response.Status.BAD_REQUEST, handshakeResponse.getStatus()); @@ -125,29 +106,22 @@ public class WebSocketResponseHandlerTest { @Test public void testWrongUpgradeHeaderReturnsNullResponse() { headers.put("upgrade", "not a websocket"); - Response handshakeResponse = responseHandler.serve(session); - assertNull(handshakeResponse); + Response handshakeResponse = nanoWebSocketServer.serve(session); + assertNull(handshakeResponse.getHeader(NanoWebSocketServer.HEADER_UPGRADE)); } @Test public void testWrongConnectionHeaderReturnsNullResponse() { headers.put("connection", "Junk"); - Response handshakeResponse = responseHandler.serve(session); - assertNull(handshakeResponse); + Response handshakeResponse = nanoWebSocketServer.serve(session); + assertNull(handshakeResponse.getHeader(NanoWebSocketServer.HEADER_UPGRADE)); } @Test public void testConnectionHeaderHandlesKeepAlive_FixingFirefoxConnectIssue() { headers.put("connection", "keep-alive, Upgrade"); - Response handshakeResponse = responseHandler.serve(session); + Response handshakeResponse = nanoWebSocketServer.serve(session); - verify(webSocket).getHandshakeResponse(); assertNotNull(handshakeResponse); - assertSame(response, handshakeResponse); - } - - private void assertHeader(int index, String name, String value) { - assertEquals(name, headerNameCaptor.getAllValues().get(index)); - assertEquals(value, headerCaptor.getAllValues().get(index)); } } |