package com.jenjinstudios.client.message;
import com.jenjinstudios.client.net.AuthClient;
import com.jenjinstudios.client.net.ClientUser;
import com.jenjinstudios.core.io.Message;
import com.jenjinstudios.core.io.MessageRegistry;
import org.testng.Assert;
import org.testng.annotations.Test;
import static org.mockito.Mockito.*;
/**
* Tests ExecutableLoginResponse.
*
* @author Caleb Brinkman
*/
public class ExecutableLoginResponseTest
{
/**
* Test execution of the message.
*/
@Test
public void testMessageExecution() {
Message loginResponse = MessageRegistry.getInstance().createMessage("LoginResponse");
loginResponse.setArgument("success", true);
loginResponse.setArgument("loginTime", 12345L);
ClientUser user = mock(ClientUser.class);
AuthClient authClient = mock(AuthClient.class);
AuthClient.LoginTracker loginTracker = mock(AuthClient.LoginTracker.class);
when(loginTracker.isLoggedIn()).thenReturn(true);
when(loginTracker.getLoggedInTime()).thenReturn(12345L);
when(authClient.getLoginTracker()).thenReturn(loginTracker);
when(authClient.getUser()).thenReturn(user);
ExecutableLoginResponse response = new ExecutableLoginResponse(authClient, loginResponse);
response.runImmediate();
response.runDelayed();
verify(loginTracker).setLoggedInTime(12345L);
Assert.assertEquals(loginTracker.getLoggedInTime(), 12345L, "Login time was not as expected.");
}
}