package com.jenjinstudios.server.message;
import com.jenjinstudios.core.io.Message;
import com.jenjinstudios.core.io.MessageRegistry;
import com.jenjinstudios.server.net.AuthServer;
import com.jenjinstudios.server.net.ClientHandler;
import com.jenjinstudios.server.net.User;
import com.jenjinstudios.server.sql.Authenticator;
import org.mockito.Mockito;
import org.testng.annotations.Test;
import static org.mockito.Mockito.*;
/**
* @author Caleb Brinkman
*/
public class ExecutableLogoutRequestTest
{
@SuppressWarnings("unchecked")
@Test
public void testMessageExecution() throws Exception {
MessageRegistry messageRegistry = MessageRegistry.getInstance();
Message logoutRequest = messageRegistry.createMessage("LogoutRequest");
User user = new User();
user.setUsername("foo");
user.setUsername("bar");
ClientHandler clientHandler = mock(ClientHandler.class);
AuthServer server = mock(AuthServer.class);
ServerMessageFactory serverMessageFactory = new ServerMessageFactory();
Authenticator authenticator = mock(Authenticator.class);
when(server.getAuthenticator()).thenReturn(authenticator);
when(server.getCycleStartTime()).thenReturn(12345l);
when(authenticator.logOutUser(Mockito.<String>any())).thenReturn(new User());
when(clientHandler.getServer()).thenReturn(server);
when(clientHandler.getMessageFactory()).thenReturn(serverMessageFactory);
when(clientHandler.getUser()).thenReturn(user);
ExecutableLogoutRequest executableLogoutRequest = new ExecutableLogoutRequest(clientHandler, logoutRequest);
executableLogoutRequest.runImmediate();
executableLogoutRequest.runDelayed();
verify(clientHandler).setUser(null);
}
}