Beispiel #1
0
        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");
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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");
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
            }
        }
Beispiel #7
0
        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();
        }
Beispiel #8
0
        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()
        }
Beispiel #10
0
        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();
        }
Beispiel #11
0
        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("/");
        }
Beispiel #12
0
        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));
        }
Beispiel #13
0
        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();
        }
Beispiel #14
0
        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");
        }
Beispiel #15
0
        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"]);
            }
        }
Beispiel #17
0
        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");
        }