/**
  * Run the following test case.
  *
  * <ol>
  *   <li>Attempt to login
  *   <li>Have the login fail with a status code of 404
  *   <li>Check to make sure the callback is called
  *   <li>Check to make sure the events handler is called
  *   <li>Make sure the frontend failure handler is called
  * </ol>
  */
 @Test
 public void testLoginAsync_404_failure() {
   String testUser = "******"; // $NON-NLS-1$
   String testPassword = "******"; // $NON-NLS-1$
   String testProfile = "testprofile"; // $NON-NLS-1$
   frontend.initLoggedInUser(new DbUser(), testPassword);
   when(mockAsyncQuery.isHandleFailure()).thenReturn(Boolean.TRUE);
   frontend.loginAsync(testUser, testPassword, testProfile, false, mockAsyncQuery);
   verify(mockService)
       .login(
           eq(testUser),
           eq(testPassword),
           eq(testProfile),
           eq(VdcActionType.LoginUser),
           callbackAction.capture());
   StatusCodeException exception =
       new StatusCodeException(HttpServletResponse.SC_NOT_FOUND, "404 status code"); // $NON-NLS-1$
   callbackAction.getValue().onFailure(exception);
   verify(mockEventsHandler).runQueryFailed(null);
   verify(mockFrontendFailureEvent).raise(eq(Frontend.class), (EventArgs) any());
   assertNull("Logged in user should be null", frontend.getLoggedInUser()); // $NON-NLS-1$
   verify(mockAsyncCallback).onSuccess(any(), any());
 }
 /**
  * Run the following test case.
  *
  * <ol>
  *   <li>Attempt to login
  *   <li>Have the login fail
  *   <li>Check to make sure the callback is called
  *   <li>Check to make sure the events handler is called
  *   <li>Make sure the frontend failure handler is not called
  * </ol>
  */
 @Test
 public void testLoginAsync_login_failure() {
   Object model = new Object();
   when(mockAsyncQuery.getModel()).thenReturn(model);
   String testUser = "******"; // $NON-NLS-1$
   String testPassword = "******"; // $NON-NLS-1$
   String testProfile = "testprofile"; // $NON-NLS-1$
   frontend.initLoggedInUser(new DbUser(), testPassword);
   when(mockAsyncQuery.isHandleFailure()).thenReturn(Boolean.TRUE);
   frontend.loginAsync(testUser, testPassword, testProfile, false, mockAsyncQuery);
   verify(mockService)
       .login(
           eq(testUser),
           eq(testPassword),
           eq(testProfile),
           eq(VdcActionType.LoginUser),
           callbackAction.capture());
   VdcReturnValueBase returnValue = new VdcReturnValueBase();
   returnValue.setSucceeded(false); // Yes I know this is the default, just to be sure.
   callbackAction.getValue().onSuccess(returnValue);
   verify(mockAsyncCallback).onSuccess(model, returnValue);
   verify(mockLoginHandler, never()).onLoginSuccess(testUser, testPassword, testProfile);
   verify(mockFrontendFailureEvent, never()).raise(eq(Frontend.class), (EventArgs) any());
 }