public async Task OnPostAsync_GivenCommandSucceedsWithReturnUrl_ExpectUserToBeAuthenticatedAndRedirectedToUrl() { var mediator = new Mock <IMediator>(); mediator .Setup(x => x.Send( It.IsAny <ValidateAppMfaCodeAgainstCurrentUserCommand>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => Result.Ok <ValidateAppMfaCodeAgainstCurrentUserCommandResult, ErrorData>( new ValidateAppMfaCodeAgainstCurrentUserCommandResult(TestVariables.UserId))); var authenticationService = new Mock <IAuthenticationService>(); authenticationService.Setup(x => x.SignInUserFromPartialStateAsync(It.IsAny <Guid>())) .ReturnsAsync("/some-page"); var currentAuthenticatedUserProvider = new Mock <ICurrentAuthenticatedUserProvider>(); var page = new ValidateAppMfaCode(mediator.Object, authenticationService.Object, currentAuthenticatedUserProvider.Object) { PageModel = new ValidateAppMfaCode.Model() }; Assert.IsType <LocalRedirectResult>(await page.OnPostAsync()); }
OnPostAsync_GivenCommandSucceedsWithNoReturnUrl_ExpectUserToBeAuthenticatedAndRedirectedToDashboard() { var mediator = new Mock <IMediator>(); mediator .Setup(x => x.Send( It.IsAny <ValidateAppMfaCodeAgainstCurrentUserCommand>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => Result.Ok <ValidateAppMfaCodeAgainstCurrentUserCommandResult, ErrorData>( new ValidateAppMfaCodeAgainstCurrentUserCommandResult(TestVariables.UserId))); var authenticationService = new Mock <IAuthenticationService>(); authenticationService.Setup(x => x.SignInUserFromPartialStateAsync(It.IsAny <Guid>())) .ReturnsAsync(string.Empty); var currentAuthenticatedUserProvider = new Mock <ICurrentAuthenticatedUserProvider>(); var page = new ValidateAppMfaCode(mediator.Object, authenticationService.Object, currentAuthenticatedUserProvider.Object) { PageModel = new ValidateAppMfaCode.Model() }; var result = Assert.IsType <RedirectToPageResult>(await page.OnPostAsync()); Assert.Equal(PageLocations.AppDashboard, result.PageName); }
public async Task OnPostAsync_GivenInvalidModelState_ExpectRedirectToPageResult() { var mediator = new Mock <IMediator>(); var authenticationService = new Mock <IAuthenticationService>(); var currentAuthenticatedUserProvider = new Mock <ICurrentAuthenticatedUserProvider>(); var page = new ValidateAppMfaCode(mediator.Object, authenticationService.Object, currentAuthenticatedUserProvider.Object); page.ModelState.AddModelError("Error", "Error"); var result = await page.OnPostAsync(); Assert.IsType <RedirectToPageResult>(result); }
public void OnGet_GivenNoUserIsAuthenticated_ExpectNoMfaTypesSet() { var mediator = new Mock <IMediator>(); var authenticationService = new Mock <IAuthenticationService>(); var currentAuthenticatedUserProvider = new Mock <ICurrentAuthenticatedUserProvider>(); currentAuthenticatedUserProvider.Setup(x => x.CurrentAuthenticatedUser).Returns(Maybe <ISystemUser> .Nothing); var page = new ValidateAppMfaCode(mediator.Object, authenticationService.Object, currentAuthenticatedUserProvider.Object); page.OnGet(); Assert.False(page.HasDevice); }
public async Task OnPostEmailMfaAsync_GivenCommandFails_ExpectPrgErrorStateAndRedirectToSamePage() { var mediator = new Mock <IMediator>(); mediator.Setup(x => x.Send(It.IsAny <EmailMfaRequestedCommand>(), It.IsAny <CancellationToken>())) .ReturnsAsync(ResultWithError.Fail(new ErrorData(ErrorCodes.AuthenticationFailed))); var authenticationService = new Mock <IAuthenticationService>(); var currentAuthenticatedUserProvider = new Mock <ICurrentAuthenticatedUserProvider>(); var page = new ValidateAppMfaCode(mediator.Object, authenticationService.Object, currentAuthenticatedUserProvider.Object); Assert.IsType <RedirectToPageResult>(await page.OnPostEmailMfaAsync()); Assert.Equal(PrgState.Failed, page.PrgState); }
public async Task OnPostEmailMfaAsync_GivenCommandSucceeds_ExpectRedirectAppMfaPage() { var mediator = new Mock <IMediator>(); mediator.Setup(x => x.Send(It.IsAny <EmailMfaRequestedCommand>(), It.IsAny <CancellationToken>())) .ReturnsAsync(ResultWithError.Ok <ErrorData>()); var authenticationService = new Mock <IAuthenticationService>(); var currentAuthenticatedUserProvider = new Mock <ICurrentAuthenticatedUserProvider>(); var page = new ValidateAppMfaCode(mediator.Object, authenticationService.Object, currentAuthenticatedUserProvider.Object); var result = Assert.IsType <RedirectToPageResult>(await page.OnPostEmailMfaAsync()); Assert.Equal(PageLocations.AuthEmailMfa, result.PageName); }
public void OnGet_GivenUserIsAuthenticated_ExpectMfaTypesToBeSet() { var mediator = new Mock <IMediator>(); var authenticationService = new Mock <IAuthenticationService>(); var currentAuthenticatedUserProvider = new Mock <ICurrentAuthenticatedUserProvider>(); currentAuthenticatedUserProvider.Setup(x => x.CurrentAuthenticatedUser) .Returns(Maybe.From( new UnauthenticatedUser( TestVariables.UserId, MfaProvider.App | MfaProvider.Device) as ISystemUser)); var page = new ValidateAppMfaCode(mediator.Object, authenticationService.Object, currentAuthenticatedUserProvider.Object); page.OnGet(); Assert.True(page.HasDevice); }
public async Task OnPostDeviceMfaAsync_GivenCommandSucceeds_ExpectRedirectDeviceMfaPage() { var mediator = new Mock <IMediator>(); mediator.Setup(x => x.Send(It.IsAny <DeviceMfaRequestCommand>(), It.IsAny <CancellationToken>())) .ReturnsAsync( Result.Ok <DeviceMfaRequestCommandResult, ErrorData>( new DeviceMfaRequestCommandResult(new AssertionOptions()))); var authenticationService = new Mock <IAuthenticationService>(); var currentAuthenticatedUserProvider = new Mock <ICurrentAuthenticatedUserProvider>(); var page = new ValidateAppMfaCode(mediator.Object, authenticationService.Object, currentAuthenticatedUserProvider.Object) { TempData = new Mock <ITempDataDictionary>().Object, }; var result = Assert.IsType <RedirectToPageResult>(await page.OnPostDeviceMfaAsync()); Assert.Equal(PageLocations.AuthDeviceMfa, result.PageName); }
public async Task OnPostAsync_GivenCommandFails_ExpectRedirectToPageResultToSamePageAndPrgStateSet() { var mediator = new Mock <IMediator>(); mediator .Setup(x => x.Send( It.IsAny <ValidateAppMfaCodeAgainstCurrentUserCommand>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => Result.Fail <ValidateAppMfaCodeAgainstCurrentUserCommandResult, ErrorData>( new ErrorData(ErrorCodes.SavingChanges))); var authenticationService = new Mock <IAuthenticationService>(); var currentAuthenticatedUserProvider = new Mock <ICurrentAuthenticatedUserProvider>(); var page = new ValidateAppMfaCode(mediator.Object, authenticationService.Object, currentAuthenticatedUserProvider.Object) { PageModel = new ValidateAppMfaCode.Model() }; var result = await page.OnPostAsync(); Assert.IsType <RedirectToPageResult>(result); Assert.Equal(PrgState.Failed, page.PrgState); }