예제 #1
0
        public async Task Generate_jwt_token()
        {
            var userModel = new AuthorizeUserModel()
            {
                Email = "*****@*****.**", Password = "******"
            };
            var user = new User {
                AccessFailedCount = 0,
                ConcurrencyStamp  = "a1902bd1-a41b-444a-8831-54ee40a91e87",
                Email             = userModel.Email,
                EmailConfirmed    = false,
                Id                   = new Guid("AB188833-B28A-454D-8546-4E9DECC46E06"),
                LockoutEnabled       = true,
                LockoutEnd           = null,
                NormalizedEmail      = "*****@*****.**",
                NormalizedUserName   = "******",
                PasswordHash         = "AQAAAAEAACcQAAAAEKMROa5mCHYXeoXMSGm8k464VOgusHZB5u1o4WJjhFD03Gls8IGvxEpR2/ApIQTNFA==",
                PhoneNumber          = null,
                PhoneNumberConfirmed = false,
                SecurityStamp        = "WT7MRNUZCMBERNIDY3U4I52BDRCZIESJ",
                TwoFactorEnabled     = false,
                UserName             = userModel.Email
            };
            IList <string> roles = new List <string>();

            //arrange
            var mockedUserManager = new Mock <IUserManager>();

            mockedUserManager.Setup(x => x.GetUserByEmail(userModel.Email)).Returns(Task.FromResult(user));
            mockedUserManager.Setup(x => x.GetUserRoles(user)).Returns(Task.FromResult(roles));


            var mockedSignInManager = new Mock <ISignInManager>();

            mockedSignInManager.Setup(x => x.CheckPassword((User)userModel, userModel.Password, false))
            .Returns(Task.FromResult(new SignInResult()));

            var mockedTokenService = new Mock <ITokenService>();

            mockedTokenService.Setup(x => x.GetEncodedJwtToken()).Returns(string.Empty);

            var controller = new AccountController(
                mockedUserManager.Object,
                mockedSignInManager.Object,
                mockedTokenService.Object

                );

            //act
            var result = await controller.GenerateToken(userModel);


            //assert
            Assert.IsType <OkObjectResult>(result);
            Assert.NotNull(result);
            mockedUserManager.Verify(x => x.GetUserByEmail(It.Is <string>(email => email == userModel.Email)), Times.Once);
            mockedUserManager.Verify(x => x.GetUserRoles(It.IsAny <User>()), Times.Once);
            mockedSignInManager.Verify(x => x.CheckPassword(It.IsAny <User>(), It.Is <string>(pass => pass == userModel.Password), It.Is <bool>(bl => bl == false)), Times.Once);
            mockedTokenService.Verify(x => x.GetEncodedJwtToken(), Times.Once);
        }
예제 #2
0
        public async Task <IActionResult> GenerateToken([FromBody] AuthorizeUserModel user)
        {
            var userId = await _tokenService.IsValidUserAndPasswordCombination(user.Email, user.Password);

            if (userId != null)
            {
                return(new ObjectResult(_tokenService.GenerateToken(userId, user.Email)));
            }
            return(BadRequest());
        }
예제 #3
0
        public async Task <object> GenerateToken(AuthorizeUserModel authorizeRequest)
        {
            var actualUser = await _userManager.GetUserByEmail(authorizeRequest.Email);

            await _signInManager.CheckPassword(actualUser, authorizeRequest.Password, false);


            var configuredToken = new
            {
                access_token = _tokenService.GetEncodedJwtToken(),
                userEmail    = actualUser.Email
            };

            return(configuredToken);
        }