### Question:
AuthnFailedErrorStateController extends AbstractAuthnFailedErrorStateController<AuthnFailedErrorState> implements IdpSelectingStateController { public void tryAnotherIdpResponse() { stateTransitionAction.transitionTo(createSessionStartedState()); } AuthnFailedErrorStateController(
            AuthnFailedErrorState state,
            ResponseFromHubFactory responseFromHubFactory,
            StateTransitionAction stateTransitionAction,
            TransactionsConfigProxy transactionsConfigProxy,
            IdentityProvidersConfigProxy identityProvidersConfigProxy,
            HubEventLogger hubEventLogger); FailureResponseDetails handleFailureResponse(); void tryAnotherIdpResponse(); @Override void handleIdpSelected(String idpEntityId, String principalIpAddress, boolean registering, LevelOfAssurance requestedLoa, String analyticsSessionId, String journeyType, String abTestVariant); @Override String getRequestIssuerId(); @Override AuthnRequestSignInProcess getSignInProcessDetails();  }### Answer:
@Test public void tryAnotherIdpResponse_shouldTransitionToSessionStartedState() { ArgumentCaptor<SessionStartedState> capturedState = ArgumentCaptor.forClass(SessionStartedState.class); SessionStartedState expectedState = aSessionStartedState(). withSessionId(aSessionId().with("sessionId").build()) .withForceAuthentication(true) .withTransactionSupportsEidas(true) .withSessionExpiryTimestamp(NOW) .withAssertionConsumerServiceUri(URI.create("/default-service-index")) .build(); controller.tryAnotherIdpResponse(); verify(stateTransitionAction).transitionTo(capturedState.capture()); assertThat(capturedState.getValue()).isInstanceOf(SessionStartedState.class); assertThat(capturedState.getValue()).isEqualToComparingFieldByField(expectedState); }