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 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 ChangePasswordPost_InvalidPasswordReturnsCorrectMessage_ExpectedMessageEqualsActual() { var session = new SessionHelperFake(); var user = new User { ID = 1, UserName = "******", Email = "*****@*****.**", Bio = "Hello I am the Sixth test user", ProfileImagePath = "../Images/TestUserSix/Profile.png", DateJoined = new DateTime(2017, 1, 14), DOB = new DateTime(1955, 5, 7), GenderId = 1, UserType = new UserType { ID = 2, Description = "FeaturedUser" }, Nationality = new Nationality { ID = 1, Description = "US and A" }, NationalityID = 1, UserTypeID = 2, }; session.Add("CurrentUser", user); var viewModel = new ChangePasswordViewModel { UserName = "******", NewPassword = "******", ConfirmPassword = "******", CurrentPassword = "******" }; var userManager = new UserManagerFake { ValidPassword = "******" }; using (var controller = new AccountController(userManager, new NationalityManagerFake(), new GenderManagerFake(), session)) { var result = controller.ChangePassword(viewModel) as ViewResult; var expectedView = "Invalid Password"; Assert.AreEqual(expectedView, result.ViewBag.Message); } }
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 async Task CreatePost_SuccessfullCreationRedirectsToCorrectView_ReturnsEditIntegraionView() { var userManager = new UserManagerFake { ValidPassword = "******" }; using (var controller = new AccountController(userManager, new NationalityManagerFake(), new GenderManagerFake(), new SessionHelperFake())) { var viewModel = new CreateUserViewModel { CurrentUser = new User { UserName = "******", Email = "*****@*****.**", Bio = "Hello I am the Sixth test user", ProfileImagePath = "../Images/TestUserSix/Profile.png", DateJoined = new DateTime(2017, 1, 14), DOB = new DateTime(1955, 5, 7), GenderId = 1, UserType = new UserType { ID = 2, Description = "FeaturedUser" }, Nationality = new Nationality { ID = 1, Description = "US and A" }, NationalityID = 1, UserTypeID = 2, }, Password = "******" }; var result = await controller.Create(viewModel) as RedirectToRouteResult; var expectedViewName = "EditIntegrations"; Assert.AreEqual(expectedViewName, result.RouteValues["Action"]); } //public ActionResult EditIntegrations() }
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 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 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 void LoginPost_SuccessfullLoginReturnsCorrectView_ViewNameEqualIndex() { var userManager = new UserManagerFake { ValidPassword = "******" }; var model = new LoginModel { Username = "******", Password = "******" }; using (var controller = new LoginController(userManager, new SessionHelperFake())) { var result = controller.Login(model) as RedirectToRouteResult; string expectedAction = "Index"; string expectedController = "Home"; Assert.AreEqual(expectedAction, result.RouteValues["Action"]); Assert.AreEqual(expectedController, result.RouteValues["Controller"]); } }
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"); }