Example #1
0
 public void Setup()
 {
     _config     = new Mock <IConfiguration>();
     _user       = new Mock <IRepository <Authen> >();
     _auth1      = new Mock <IAuthRepo>();
     _controller = new AuthApiController(_config.Object, _user.Object, _auth1.Object);
 }
Example #2
0
        public async Task TestSignUpAnonymous()
        {
            // Arrange
            var userManager   = new Mock <StubUserManager>();
            var signInManager = new Mock <StubSignInManager>();

            var controller
                = new AuthApiController(userManager.Object, signInManager.Object);

            // Act
            var result = await controller.SignUpAnonymous();

            // Assert
            Assert.IsType <OkResult>(result);

            signInManager.Verify(s => s.SignOutAsync(), Times.Once());
            signInManager.Verify(s => s.PasswordSignInAsync
                                     (It.IsAny <ApplicationUser>(), It.IsAny <string>(), false, false)
                                 , Times.Once);
            userManager.Verify(u => u.CreateAsync
                                   (It.IsAny <ApplicationUser>(), It.IsAny <string>()), Times.Once);

            VerifyLoggers(signInManager, userManager);
            signInManager.VerifyNoOtherCalls();
            userManager.VerifyNoOtherCalls();
        }
Example #3
0
        public async Task TestSignUpError()
        {
            // Arrange
            var signInManager = new Mock <StubSignInManager>();
            var userManager   = new Mock <StubUserManager>();
            var models        = new[] { AuthData.LoginWithUname, AuthData.LoginWithEmail
                                        , AuthData.BadLoginNoPw, AuthData.BadLoginOnlyPw };

            userManager.Setup(u => u.CreateAsync
                                  (It.IsAny <ApplicationUser>(), It.IsAny <string>()))
            .ReturnsAsync(IdentityResult.Failed());

            var controller
                = new AuthApiController(userManager.Object, signInManager.Object);

            // Act
            var unauthorized = await controller.SignUp(AuthData.LoginAllProps);

            var badResults = Task
                             .WhenAll(from m in models select controller.SignUp(m)).Result;

            // Assert
            Assert.IsType <UnauthorizedObjectResult>(unauthorized);
            Assert.All(badResults, a => Assert.IsType <BadRequestResult>(a));

            signInManager.Verify(s => s.SignOutAsync()
                                 , Times.Exactly(models.Length + 1));
            userManager.Verify(u => u.CreateAsync
                                   (It.IsAny <ApplicationUser>(), It.IsAny <string>()), Times.Once);

            VerifyLoggers(signInManager, userManager);
            signInManager.VerifyNoOtherCalls();
            userManager.VerifyNoOtherCalls();
        }
Example #4
0
        public async Task TestSignUp()
        {
            // Arrange
            var signInManager = new Mock <StubSignInManager>();
            var userManager   = new Mock <StubUserManager>();
            var userModel     = AuthData.LoginAllProps;

            userManager.Setup(u => u.CreateAsync
                                  (It.IsAny <ApplicationUser>(), It.IsAny <string>()))
            .ReturnsAsync(IdentityResult.Success);

            var controller = new AuthApiController(userManager.Object, signInManager.Object);

            // Act
            var result = await controller.SignUp(userModel);

            // Assert
            Assert.IsType <OkResult>(result);

            signInManager.Verify(s => s.SignOutAsync(), Times.Once);
            signInManager.Verify(s => s.PasswordSignInAsync
                                     (It.IsAny <ApplicationUser>(), userModel.Password, true, false), Times.Once);
            userManager.Verify(u => u.CreateAsync
                                   (It.IsAny <ApplicationUser>(), It.IsAny <string>()), Times.Once);

            VerifyLoggers(signInManager, userManager);
            signInManager.VerifyNoOtherCalls();
            userManager.VerifyNoOtherCalls();
        }
Example #5
0
        public AuthApiControllerTest()
        {
            var userService  = new Mock <IUserService>();
            var tokenFactory = new Mock <ITokenGenerator>();

            _authController = new AuthApiController(userService.Object, tokenFactory.Object);
        }
Example #6
0
        public async Task TestLoginError()
        {
            // Arrange
            var userManager   = new Mock <StubUserManager>();
            var signInManager = new Mock <StubSignInManager>();

            var user          = new ApplicationUser();
            var model         = AuthData.LoginWithUname;
            var model2        = AuthData.LoginWithEmail;
            var invalidModels = new[] {
                AuthData.BadLoginNoPw, AuthData.BadLoginOnlyPw
            };

            userManager.Setup(u => u.FindByNameAsync(model.Username))
            .Returns(Task.FromResult <ApplicationUser>(null));
            userManager.Setup(u => u.FindByEmailAsync(model2.Email))
            .ReturnsAsync(user);
            signInManager.Setup(s => s.PasswordSignInAsync
                                    (user, model2.Password, true, false))
            .ReturnsAsync(SignInResult.Failed);

            var controller = new AuthApiController(userManager.Object
                                                   , signInManager.Object);

            // Act
            var unAuth = new [] { await controller.Login(model)
                                  , await controller.Login(model2) };
            var badReq = new [] { await controller.Login(invalidModels[0])
                                  , await controller.Login(invalidModels[1]) };

            // Assert
            Assert.All(unAuth, r => Assert.IsType <UnauthorizedResult>(r));
            Assert.All(badReq, r => Assert.IsType <BadRequestResult>(r));

            userManager.Verify(u => u.FindByNameAsync(model.Username), Times.Once);
            userManager.Verify(u => u.FindByEmailAsync(model2.Email), Times.Once);
            signInManager.Verify(s => s.SignOutAsync(), Times.Exactly(4));
            signInManager.Verify(s => s.PasswordSignInAsync
                                     (user, model2.Password, true, false), Times.Once);

            VerifyLoggers(signInManager, userManager);
            userManager.VerifyNoOtherCalls();
            signInManager.VerifyNoOtherCalls();
        }
Example #7
0
        public async Task TestLogout()
        {
            // Arrange
            var signInManager = new Mock <StubSignInManager>();
            var controller    = new AuthApiController(
                new Mock <StubUserManager>().Object
                , signInManager.Object
                );

            // Act
            var result = await controller.Logout();

            // Assert
            Assert.IsType <OkResult>(result);

            signInManager.Verify(s => s.SignOutAsync(), Times.Once);
            VerifyLoggers(signInManager);
            signInManager.VerifyNoOtherCalls();
        }
Example #8
0
        public async Task TestLogin()
        {
            // Arrange
            var userManager   = new Mock <StubUserManager>();
            var signinManager = new Mock <StubSignInManager>();

            var user   = new ApplicationUser();
            var models = new [] { AuthData.LoginWithUname, AuthData.LoginWithEmail };
            var pws    = new[] { models[0].Password, models[1].Password };

            userManager.Setup(u => u.FindByEmailAsync(models[1].Email))
            .ReturnsAsync(user);
            userManager.Setup(u => u.FindByNameAsync(models[0].Username))
            .ReturnsAsync(user);
            signinManager.Setup
                (s => s.PasswordSignInAsync(user, It.IsIn(pws), true, false))
            .ReturnsAsync(SignInResult.Success);

            var controller = new AuthApiController(
                userManager.Object, signinManager.Object);

            // Act
            var result = await controller.Login(models[0]);

            await controller.Login(models[1]);

            // Assert
            Assert.IsType <OkResult>(result);

            signinManager.Verify(s => s.SignOutAsync(), Times.Exactly(2));
            signinManager.Verify
                (s => s.PasswordSignInAsync(user, It.IsIn(pws), true, false)
                , Times.Exactly(2));
            userManager.Verify(u => u.FindByEmailAsync(models[1].Email), Times.Once);
            userManager.Verify(u => u.FindByNameAsync(models[0].Username), Times.Once);

            VerifyLoggers(signinManager, userManager);
            userManager.VerifyNoOtherCalls();
            signinManager.VerifyNoOtherCalls();
        }