package cc.blynk.integration.websocket;
import cc.blynk.integration.BaseTest;
import cc.blynk.integration.model.websocket.WebSocketClient;
import cc.blynk.server.api.http.HttpAPIServer;
import cc.blynk.server.api.http.HttpsAPIServer;
import cc.blynk.server.core.BaseServer;
import cc.blynk.server.core.protocol.model.messages.ResponseMessage;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import static cc.blynk.server.core.protocol.enums.Response.OK;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.verify;
/**
* The Blynk Project.
* Created by Dmitriy Dumanskiy.
* Created on 13.01.16.
*/
@RunWith(MockitoJUnitRunner.class)
public class WebSslSocketTest extends BaseTest {
private static BaseServer webSocketServer;
public static int sslWebSocketPort = httpsPort;
@AfterClass
public static void shutdown() throws Exception {
webSocketServer.close();
}
@Before
public void init() throws Exception {
if (webSocketServer == null) {
webSocketServer = new HttpsAPIServer(holder, false).start();
}
}
@Override
public String getDataFolder() {
return getRelativeDataFolder("/profiles");
}
@Test
public void testBasicWebSocketCommandsOk() throws Exception{
WebSocketClient webSocketClient = new WebSocketClient("localhost", sslWebSocketPort, HttpAPIServer.WEBSOCKET_PATH, true);
webSocketClient.start();
webSocketClient.send("login 4ae3851817194e2596cf1b7103603ef8");
verify(webSocketClient.responseMock, timeout(500)).channelRead(any(), eq(new ResponseMessage(1, OK)));
webSocketClient.send("ping");
verify(webSocketClient.responseMock, timeout(500)).channelRead(any(), eq(new ResponseMessage(2, OK)));
}
}