package com.jenjinstudios.server.net;
import com.jenjinstudios.core.MessageIO;
import com.jenjinstudios.core.io.MessageInputStream;
import com.jenjinstudios.core.io.MessageOutputStream;
import com.jenjinstudios.server.sql.Authenticator;
import org.testng.annotations.Test;
import java.io.IOException;
import static org.mockito.Mockito.*;
import static org.testng.Assert.assertEquals;
/**
* @author Caleb Brinkman
*/
@SuppressWarnings("unchecked")
public class ClientHandlerTest
{
@Test
public void testSendLogoutStatus() throws Exception {
AuthServer server = mock(AuthServer.class);
MessageInputStream mis = mock(MessageInputStream.class);
MessageOutputStream mos = mock(MessageOutputStream.class);
MessageIO messageIO = new MessageIO(mis, mos);
ClientHandler clientHandler = new ClientHandler(server, messageIO);
clientHandler.sendLogoutStatus(true);
try
{
clientHandler.getMessageIO().writeAllMessages();
} catch (IOException e)
{
clientHandler.shutdown();
}
verify(mos, times(1)).writeMessage(any());
}
@Test
public void testSetID() throws Exception {
AuthServer server = mock(AuthServer.class);
MessageInputStream mis = mock(MessageInputStream.class);
MessageOutputStream mos = mock(MessageOutputStream.class);
MessageIO messageIO = new MessageIO(mis, mos);
ClientHandler clientHandler = new ClientHandler(server, messageIO);
clientHandler.setHandlerId(123);
assertEquals(clientHandler.getHandlerId(), 123);
assertEquals(clientHandler.getName(), "Client Handler 123");
}
@Test
public void testShutDown() throws Exception {
Authenticator authenticator = mock(Authenticator.class);
User user = mock(User.class);
AuthServer server = mock(AuthServer.class);
MessageInputStream mis = mock(MessageInputStream.class);
MessageOutputStream mos = mock(MessageOutputStream.class);
MessageIO messageIO = new MessageIO(mis, mos);
when(server.getAuthenticator()).thenReturn(authenticator);
ClientHandler clientHandler = new ClientHandler(server, messageIO);
clientHandler.setUser(user);
clientHandler.shutdown();
verify(authenticator).logOutUser(anyString());
verify(server).removeClient(clientHandler);
}
@Test
public void testLoggedInTime() {
AuthServer server = mock(AuthServer.class);
MessageInputStream mis = mock(MessageInputStream.class);
MessageOutputStream mos = mock(MessageOutputStream.class);
MessageIO messageIO = new MessageIO(mis, mos);
ClientHandler clientHandler = new ClientHandler(server, messageIO);
clientHandler.setLoggedInTime(12345l);
assertEquals(clientHandler.getLoggedInTime(), 12345l);
}
}