public async Task ExternalLoginCallback_ShouldReturnLockoutView_IfExternalLoginSignInAsyncResultIsLockedOut() { //Arrange var userManager = new UserManagerFake(isUserConfirmed: true, identityResult: IdentityResult.Success); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, Microsoft.AspNetCore.Identity.SignInResult.LockedOut, new ExternalLoginInfo(new System.Security.Claims.ClaimsPrincipal(), string.Empty, string.Empty, string.Empty)); var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object) { Url = _urlHelper.Object }; sut.Url = _urlHelper.Object; //Act var result = (ViewResult)await sut.ExternalLoginCallback("/Home/Index"); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ViewResult>(); result.ViewName.Should().Be("Lockout"); }
public async Task ExternalLoginCallback_ShouldReturnExternalLoginConfirmationViewWithFilledViewData_IfUserDoesNotHaveAnAccount() { //Arrange var userManager = new UserManagerFake(isUserConfirmed: true, identityResult: IdentityResult.Success); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, Microsoft.AspNetCore.Identity.SignInResult.Failed, new ExternalLoginInfo(new System.Security.Claims.ClaimsPrincipal(), string.Empty, string.Empty, string.Empty)); var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object) { Url = _urlHelper.Object }; sut.Url = _urlHelper.Object; //Act var result = (ViewResult)await sut.ExternalLoginCallback("/Home/Index"); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ViewResult>(); result.ViewData.ContainsKey("ReturnUrl").Should().BeTrue(); result.ViewData.ContainsKey("LoginProvider").Should().BeTrue(); result.ViewData["ReturnUrl"].Should().Be("/Home/Index"); result.ViewData["LoginProvider"].Should().Be(signInManager.GetExternalLoginInfoAsync().Result.LoginProvider); }
public async Task Register_ShouldReturnInfoMessageViewWithFilledViewBag_IfCreateAsyncIdentityResultReturnSuccess() { //Arrange var userManager = new UserManagerFake(isUserConfirmed: true, identityResult: IdentityResult.Success); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, signInResult: Microsoft.AspNetCore.Identity.SignInResult.Failed); var captchaResponse = new CaptchaResponse { Success = "true" }; _mediatorMock.Setup(m => m.Send(It.IsAny <ValidateCaptchaQuery>(), It.IsAny <CancellationToken>())).ReturnsAsync(captchaResponse); var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); sut.ControllerContext.HttpContext = new DefaultHttpContext(); sut.Url = _urlHelper.Object; //Act var result = (ViewResult)await sut.Register(A.New <RegisterViewModel>()); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ViewResult>(); result.Should().NotBeNull(); result.ViewData.Should().NotBeEmpty(); result.ViewData.ContainsKey("InfoMessage").Should().BeTrue(); result.ViewData["InfoMessage"].Should().Be("RegistrationConfirmEmail"); }
public async Task Register_ShouldCallSendEmailAsync_ExactlyOnce() { //Arrange var userManager = new UserManagerFake(isUserConfirmed: true, identityResult: IdentityResult.Success); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, signInResult: Microsoft.AspNetCore.Identity.SignInResult.Failed); var captchaResponse = new CaptchaResponse { Success = "true" }; _mediatorMock.Setup(m => m.Send(It.IsAny <ValidateCaptchaQuery>(), It.IsAny <CancellationToken>())).ReturnsAsync(captchaResponse); var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); sut.ControllerContext.HttpContext = new DefaultHttpContext(); sut.Url = _urlHelper.Object; //Act var result = (ViewResult)await sut.Register(A.New <RegisterViewModel>()); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ViewResult>(); _emailSender.Verify(e => e.SendEmailAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once); }
public AccountControllerTests() { var fixture = new Fixture(); fixture.Customize(new AutoMoqCustomization()); _mapper = new MapperConfiguration(c => c.AddProfile <AutoMapperConfiguration>()).CreateMapper(); _mockMapper = fixture.Freeze <Mock <IMapper> >(); _jwtTokenFactory = new Mock <IJwtTokenFactory>(); _signInManager = new Mock <SignInManager <IdentityUser> >(); _signInManagerFake = new SignInManagerFake(); }
public async Task LogOff_ShouldRedirectTo_HomeIndex() { var userManager = new UserManagerFake(isUserConfirmed: true, identityResult: IdentityResult.Success); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, signInResult: Microsoft.AspNetCore.Identity.SignInResult.Failed); var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); var result = (RedirectToActionResult)await sut.LogOff(); result.Should().NotBeNull(); result.Should().BeOfType <RedirectToActionResult>(); result.ControllerName.Should().Be("Home"); result.ActionName.Should().Be(nameof(HomeController.Index)); }
public void Login_ShouldReturnDefaultView_WhenNoParameterSupplied() { var userManager = new UserManagerFake(isUserConfirmed: false); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, signInResult: Microsoft.AspNetCore.Identity.SignInResult.Success); // Arrange var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); //Act var result = (ViewResult)sut.Login(returnUrl: null); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ViewResult>(); result.ViewName.Should().BeNull(); }
public async Task LoginPost_ShouldReturnDefaultView_IfUserIsNotConfirmed() { var userManager = new UserManagerFake(isUserConfirmed: false); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, signInResult: Microsoft.AspNetCore.Identity.SignInResult.Success); //Arrange var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); //Act var result = (ViewResult)await sut.Login(A.New <LoginViewModel>(), returnUrl : "/"); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ViewResult>(); result.ViewName.Should().BeNull(); }
public void LoginPost_ShouldReturnFilledReturnUrlViewData_WhenNoParameterSupplied() { var userManager = new UserManagerFake(isUserConfirmed: false); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, signInResult: Microsoft.AspNetCore.Identity.SignInResult.Success); //Arrange var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); //Act var result = (ViewResult)sut.Login(returnUrl: "/"); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ViewResult>(); result.ViewData.Should().NotBeNull(); result.ViewData.Should().NotBeEmpty(); result.ViewData.ContainsKey("ReturnUrl").Should().BeTrue(); result.ViewData["ReturnUrl"].Should().Be("/"); }
public void ExternalLogin_ShouldReturnANew_ChallengeResult() { //Arrange var userManager = new UserManagerFake(isUserConfirmed: true, identityResult: IdentityResult.Success); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, signInResult: Microsoft.AspNetCore.Identity.SignInResult.Failed); var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); sut.Url = _urlHelper.Object; //Act var result = (ChallengeResult)sut.ExternalLogin("google"); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ChallengeResult>(); result.Properties.Should().NotBeNull(); }
public async Task ExternalLoginCallback_ShouldRedirectToLogin_IfExternalLoginInfoIsNull() { //Arrange var userManager = new UserManagerFake(isUserConfirmed: true, identityResult: IdentityResult.Success); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, Microsoft.AspNetCore.Identity.SignInResult.Failed, null); var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); sut.ControllerContext.HttpContext = new DefaultHttpContext(); //Act var result = (RedirectToActionResult)await sut.ExternalLoginCallback(); //Assert result.Should().NotBeNull(); result.Should().BeOfType <RedirectToActionResult>(); result.ActionName.Should().Be(nameof(AccountController.Login)); }
void Register_ShouldReturnDefaultView_AllTheTime() { var userManager = new UserManagerFake(isUserConfirmed: true); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, signInResult: Microsoft.AspNetCore.Identity.SignInResult.Success); //Arrange var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); _urlHelper.Setup(u => u.IsLocalUrl(It.IsAny <string>())).Returns(false); sut.Url = _urlHelper.Object; //Act var result = (ViewResult)sut.Register(); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ViewResult>(); result.ViewName.Should().BeNull(); }
public async Task LoginPost_ShouldReturnLockOutView_IfSignInResultIsLockedOut() { var userManager = new UserManagerFake(isUserConfirmed: true); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, signInResult: Microsoft.AspNetCore.Identity.SignInResult.LockedOut); //Arrange var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); _urlHelper.Setup(u => u.IsLocalUrl(It.IsAny <string>())).Returns(false); sut.Url = _urlHelper.Object; //Act var result = (ViewResult)await sut.Login(A.New <LoginViewModel>(), returnUrl : "http://google.com"); //Assert result.Should().NotBeNull(); result.Should().BeOfType <ViewResult>(); result.ViewName.Should().Be("Lockout"); }
public async Task Register_ShouldReturnRegisterView_IfCreateAsyncIdentityResultReturnFailed() { //Arrange var userManager = new UserManagerFake(isUserConfirmed: true, identityResult: IdentityResult.Failed()); var signInManager = new SignInManagerFake(_httpContextAccessor.Object, signInResult: Microsoft.AspNetCore.Identity.SignInResult.Failed); var captchaResponse = new CaptchaResponse { Success = "true" }; _mediatorMock.Setup(m => m.Send(It.IsAny <ValidateCaptchaQuery>(), It.IsAny <CancellationToken>())).ReturnsAsync(captchaResponse); var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object); //Act var result = (ViewResult)await sut.Register(A.New <RegisterViewModel>()); result.Should().NotBeNull(); result.Should().BeOfType <ViewResult>(); result.ViewName.Should().BeNull(); }
public async Task ExternalLoginConfirmation_ShouldRedirectToActionIndexOfManageController_IfTheUserIsSignedIn() { //Arrange var userManager = new UserManagerFake(isUserConfirmed: true, identityResult: IdentityResult.Success); var signInManager = new SignInManagerFake( _httpContextAccessor.Object, Microsoft.AspNetCore.Identity.SignInResult.Failed, new ExternalLoginInfo(new System.Security.Claims.ClaimsPrincipal(), string.Empty, string.Empty, string.Empty), isSignIn: true); var sut = new AccountController(userManager, signInManager, _emailSender.Object, _loggerFactoryWrapper.Object, _razorViewToString.Object, _mediatorMock.Object) { Url = _urlHelper.Object }; //Act var result = (RedirectToActionResult)await sut.ExternalLoginConfirmation(It.IsAny <ExternalLoginConfirmationViewModel>()); result.Should().BeOfType <RedirectToActionResult>(); result.ControllerName.Should().Be("Manage"); result.ActionName.Should().Be("Index"); }