Exemple #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");
        }
Exemple #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);
        }
Exemple #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");
        }
Exemple #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);
        }
        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();
        }
Exemple #6
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));
        }
Exemple #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();
        }
Exemple #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();
        }
Exemple #9
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("/");
        }
Exemple #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();
        }
Exemple #11
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));
        }
Exemple #12
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();
        }
Exemple #13
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");
        }
Exemple #14
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();
        }
Exemple #15
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");
        }