public void Auth_WhenBodyViewModelWithPasswordGrantTypeAndUserName_ShouldReturnTokenResponse() { //Arrange var userName = _fixture.Create <string>(); var password = _fixture.Create <string>(); var token = _fixture.Create <Token>(); var tokenData = new TokenData { ExporationTimeInMinutes = 60, EncodedToken = token.Value }; TokenRequestViewModel viewModel = new TokenRequestViewModel { Username = userName, ClientId = token.ClientId, Password = password, GrantType = "password" }; var userResult = new GetUserQueryResult { User = new ApplicationUser { Id = token.UserId, UserName = userName } }; _serviceMock.Setup(x => x.GenerateRefreshToken(token.ClientId, token.UserId)).Returns(token); _serviceMock.Setup(x => x.CreateAccessToken(token.UserId)).Returns(tokenData); _queryDispatcherMock.Setup(x => x.DispatchAsync <GetUserByNameQuery, GetUserQueryResult>(It.IsAny <GetUserByNameQuery>())) .Returns(Task.FromResult(userResult)); _queryDispatcherMock.Setup(x => x.DispatchAsync <CheckUserPasswordQuery, CheckUserPasswordQueryResult>(It.IsAny <CheckUserPasswordQuery>())) .Returns(Task.FromResult(new CheckUserPasswordQueryResult { IsCorrect = true })); _commandDispatcherMock.Setup(x => x.DispatchAsync <AddTokenCommand>(It.IsAny <AddTokenCommand>())) .Returns(Task.CompletedTask); //Act var result = _controller.Auth(viewModel).Result as JsonResult; //Assert Assert.IsNotNull(result); var json = new JsonResult(new TokenResponseViewModel { Expiration = tokenData.ExporationTimeInMinutes, RefreshToken = tokenData.EncodedToken, Token = token.Value }); Assert.AreEqual(result.Value.ToString(), json.Value.ToString()); }
public void Auth_WhenBodyViewModelWithPasswordGrantTypeWrongPassword_ShouldReturnUnauthorizedResult() { var username = "******"; var userId = Guid.NewGuid().ToString(); var clientId = Guid.NewGuid().ToString(); TokenRequestViewModel viewModel = new TokenRequestViewModel { Username = username, ClientId = clientId, Password = "******", GrantType = "password" }; ApplicationUser user = new ApplicationUser { Id = userId, UserName = username }; var mockUserAndRolesRepo = new Mock <IUserAndRoleRepository>(); mockUserAndRolesRepo.Setup(x => x.GetUserByNameAsync(username)).Returns(Task.FromResult(user)); mockUserAndRolesRepo.Setup(x => x.CheckPasswordAsync(user, It.IsAny <string>())).Returns(Task.FromResult(false)); var mockTokenRepo = new Mock <ITokenRepository>(); mockTokenRepo.Setup(x => x.AddRefreshToken(It.IsAny <Token>())).Verifiable(); var controller = new TokenController(mockUserAndRolesRepo.Object, mockTokenRepo.Object, null); Assert.IsInstanceOf <UnauthorizedResult>(controller.Auth(viewModel).Result); }
public void Auth_WhenNullViewModel_ShouldReturnBadRequest() { var controller = new TokenController(null, null, null); var result = controller.Auth(null).Result as BadRequestResult; Assert.IsNotNull(result); Assert.AreEqual(result.StatusCode, 400); }
public void Auth_WhenInvalidViewModelWithRefreshTokenGrantType_ShouldReturnUnauthorizedResult() { TokenRequestViewModel viewModel = new TokenRequestViewModel { Username = null, ClientId = null, Password = "******", GrantType = "refresh_token" }; var mockTokenRepo = new Mock <ITokenRepository>(); mockTokenRepo.Setup(x => x.CheckRefreshTokenForClient(viewModel.ClientId, It.IsAny <string>())) .Returns(Task.FromResult((Token)null)); var controller = new TokenController(null, mockTokenRepo.Object, null); Assert.IsInstanceOf <UnauthorizedResult>(controller.Auth(viewModel).Result); }
public void Auth(IOptions <Audience> settings, IRTokenRepository repo) { //Arrage Parameters parameters = new Parameters(); parameters.grant_type = "password"; parameters.username = "******"; parameters.fullname = "Sample User"; TokenController controller = new TokenController(settings, repo); //Act var result = controller.Auth(parameters) as ActionResult; var viewResult = result.ToBsonDocument(); var filter = viewResult["Value"].AsBsonDocument; var code = filter["Code"].AsString; var message = filter["Message"].AsString; //Assert Assert.IsNotNull(result); Assert.AreEqual("999", code); }
public void Auth_WhenBodyViewModelWithRefreshTokenGrantTypeAndWrongUserName_ShouldReturnUnauthorizedResult() { var username = "******"; var userId = Guid.NewGuid().ToString(); var clientId = Guid.NewGuid().ToString(); var refreshToken = new Token { ClientId = clientId, UserId = userId, Id = 1, CreationDate = DateTime.Now, Value = Guid.NewGuid().ToString() }; TokenRequestViewModel viewModel = new TokenRequestViewModel { Username = username, ClientId = clientId, Password = "******", GrantType = "refresh_token" }; var mockUserAndRolesRepo = new Mock <IUserAndRoleRepository>(); mockUserAndRolesRepo.Setup(x => x.GetUserById(userId)).Returns(Task.FromResult <ApplicationUser>(null)); var mockTokenRepo = new Mock <ITokenRepository>(); mockTokenRepo.Setup(x => x.CheckRefreshTokenForClient(viewModel.ClientId, It.IsAny <string>())) .Returns(Task.FromResult(refreshToken)); var controller = new TokenController(mockUserAndRolesRepo.Object, mockTokenRepo.Object, null); Assert.IsInstanceOf <UnauthorizedResult>(controller.Auth(viewModel).Result); }
public void Auth_WhenBodyViewModelWithPasswordGrantTypeAndEmail_ShouldReturnTokenResponse() { var username = "******"; var userId = Guid.NewGuid().ToString(); var clientId = Guid.NewGuid().ToString(); var token = new Token { ClientId = clientId, UserId = userId, Id = 1, CreationDate = DateTime.Now, Value = Guid.NewGuid().ToString() }; var tokenData = new TokenData { ExporationTimeInMinutes = 60, EncodedToken = token.Value }; TokenRequestViewModel viewModel = new TokenRequestViewModel { Username = username, ClientId = clientId, Password = "******", GrantType = "password" }; ApplicationUser user = new ApplicationUser { Id = userId, UserName = username }; var mockServie = new Mock <ITokenService>(); mockServie.Setup(x => x.GenerateRefreshToken(clientId, userId)).Returns(token); mockServie.Setup(x => x.CreateAccessToken(userId)).Returns(tokenData); var mockUserAndRolesRepo = new Mock <IUserAndRoleRepository>(); mockUserAndRolesRepo.Setup(x => x.GetUserByNameAsync(username)).Returns(Task.FromResult <ApplicationUser>(null)); mockUserAndRolesRepo.Setup(x => x.GetUserByEmailAsync(username)).Returns(Task.FromResult(user)); mockUserAndRolesRepo.Setup(x => x.CheckPasswordAsync(user, It.IsAny <string>())).Returns(Task.FromResult(true)); var mockTokenRepo = new Mock <ITokenRepository>(); mockTokenRepo.Setup(x => x.AddRefreshToken(It.IsAny <Token>())).Verifiable(); var controller = new TokenController(mockUserAndRolesRepo.Object, mockTokenRepo.Object, mockServie.Object); var result = controller.Auth(viewModel).Result as JsonResult; Assert.IsNotNull(result); var json = new JsonResult(new TokenResponseViewModel { Expiration = tokenData.ExporationTimeInMinutes, RefreshToken = tokenData.EncodedToken, Token = token.Value }); Assert.AreEqual(result.Value.ToString(), json.Value.ToString()); }