public async Task Test_TokenController_Default_Fail() { //Arrange SecuritySettings securitySettings = new SecuritySettings() { Secret = "a secret that needs to be at least 16 characters long", Issuer = "your app", Audience = "the client of your app", IdType = IdType.Name, TokenExpiryInHours = 1.2, }; var securityService = new SecurityService(securitySettings); //Authenticator returns a false, token is not generated. var authenticator = new DefaultAuthenticator(false); var controller = new TokenController(securityService, authenticator); User user = new User { Id = "John Doe", Password = "******" }; //Act var result = await controller.Create(user); //Assert Assert.IsType <BadRequestResult>(result); }
public async Task Test_TokenController_Default_Pass() { //Arrange SecuritySettings securitySettings = new SecuritySettings() { Secret = "a secret that needs to be at least 16 characters long", Issuer = "your app", Audience = "the client of your app", IdType = IdType.Name, TokenExpiryInHours = 1.2, }; var securityService = new SecurityService(securitySettings); //Authenticator returns a true, token is generated. var authenticator = new DefaultAuthenticator(true); var controller = new TokenController(securityService, authenticator); User user = new User { Id = "John Doe", Password = "******" }; //Act var result = await controller.Create(user); //Assert Assert.IsType <ObjectResult>(result); Assert.True((result as ObjectResult).Value.ToString().IsValidJwtToken()); }
public void TestCreateWithInvalidIntegrationKey_ShouldReturnUnauthorized() { var tokenService = new Mock <ITokenService <TokenViewModel, Token> >(); TokenViewModel tokenViewModel = null; tokenService.Setup(s => s.CreateNewToken(It.IsAny <CreateTokenViewModel>())).Returns(tokenViewModel); var subject = new TokenController(tokenService.Object); var response = subject.Create(new Models.CreateTokenModel()); Assert.AreEqual((new UnauthorizedResult()).GetType(), response.GetType()); }
public void TokenTest() { using (var context = GetContextWithData()) using (var controller = new TokenController()) { IActionResult result = controller.Create(new DAL.Models.Requests.TokenRequest("test1", "test1")); Assert.IsType <OkObjectResult>(result); TokenResponse token = (TokenResponse)((ObjectResult)result).Value; Assert.NotEmpty(token.Token); } }
public void CreateTokenHappyPath() { TokenController controller = new TokenController(serviceUnderTest, serviceUnderTest, controllerLogger); TokenCreateRequest request = ttu.BuildTokenCreateRequest(); CreatedResult result = controller.Create(request) as CreatedResult; TokenCreateResponse response = result.Value as TokenCreateResponse; Assert.NotNull(response); Assert.Equal("1.0", response.ModelVersion); Assert.NotEmpty(response.JwtToken); // shouldn't be any messages Assert.Equal(0, response.Messages.Count); }
public void ValidateTokenHappyPath() { TokenController controller = new TokenController(serviceUnderTest, serviceUnderTest, controllerLogger); TokenCreateRequest request = ttu.BuildTokenCreateRequest(); CreatedResult result = controller.Create(request) as CreatedResult; TokenCreateResponse response = result.Value as TokenCreateResponse; // assume CreateTokenHappyPath() validates the create path so now lets run the validate path TokenValidateRequest validateThis = ttu.BuildTokenValidateRequest(response.JwtToken, request.ProtectedResource); Assert.Equal(validateThis.JwtToken, response.JwtToken); // shouldn't be any messages Assert.Equal(0, response.Messages.Count); }
public async Task Test_TokenController_CustomUserModel_SecurityException_Fail() { //Arrange SecuritySettings securitySettings = new SecuritySettings() { Secret = "a secret that needs to be at least 16 characters long", Issuer = "your app", Audience = "the client of your app", IdType = IdType.Name, TokenExpiryInHours = 1.2, }; var userModel = new UserModel { Id = "John Doe", Pwd = "xxxxxxxxx", Role = "xxx", DOB = DateTime.Now.ToShortDateString() }; var securityService = new SecurityService <UserModel>(securitySettings, builder => { builder.AddClaim(IdType.Name, model => model.Id) .AddClaim(IdType.Role, model => model.Role) .AddClaim("DOB", model => model.DOB); }); //Authenticator returns a false, token is not generated. var authenticator = this.InitMockCustomAuthenticator(false); var controller = new TokenController <UserModel>(securityService, authenticator.Object); try { //Act var result = await controller.Create(userModel); } catch (SecurityException ex) { //Assert Assert.IsType <SecurityException>(ex); Assert.True(ex.Message == "Test exception"); } }
public void CreateTokenTest() { TokenController controller = new TokenController(); IActionResult result = controller.Create(); Assert.IsNotNull(result); ObjectResult obj = result as ObjectResult; Assert.IsNotNull(obj); string token = obj.Value as string; Assert.IsNotNull(token); Assert.IsFalse(string.IsNullOrEmpty(token)); string[] parts = token.Split('.'); Assert.AreEqual(3, parts.Length); foreach (string part in parts) { Assert.IsFalse(string.IsNullOrEmpty(part)); } }
public async Task Test_TokenController_CustomUserModel_Pass() { //Arrange SecuritySettings securitySettings = new SecuritySettings() { Secret = "a secret that needs to be at least 16 characters long", Issuer = "your app", Audience = "the client of your app", IdType = IdType.Name, TokenExpiryInHours = 1.2, }; var userModel = new UserModel { Id = "John Doe", Pwd = "xxxxxxxxx", Role = "xxx", DOB = DateTime.Now.ToShortDateString() }; var securityService = new SecurityService <UserModel>(securitySettings, builder => { builder.AddClaim(IdType.Name, model => model.Id) .AddClaim(IdType.Role, model => model.Role) .AddClaim("DOB", model => model.DOB); }); //Authenticator returns a true, token is generated. var authenticator = new CustomAuthenticator(true); var controller = new TokenController <UserModel>(securityService, authenticator); //Act var result = await controller.Create(userModel); //Assert Assert.IsType <ObjectResult>(result); Assert.True((result as ObjectResult).Value.ToString().IsValidJwtToken()); }
public void TestCreateWithCorrectIntegrationKey_ShouldReturnOk() { var tokenService = new Mock <ITokenService <TokenViewModel, Token> >(); var dueDate = DateTime.Now.AddDays(1); var id = 123; var key = "NEW_KEY"; TokenViewModel tokenViewModel = new TokenViewModel() { DueDate = dueDate, Id = id, Key = key }; tokenService.Setup(s => s.CreateNewToken(It.IsAny <CreateTokenViewModel>())).Returns(tokenViewModel); var subject = new TokenController(tokenService.Object); var response = subject.Create(new Models.CreateTokenModel()); Assert.AreEqual((new OkObjectResult(tokenViewModel)).GetType(), response.GetType()); var responseValue = ((TokenModel)((OkObjectResult)response).Value); Assert.AreEqual(dueDate, responseValue.DueDate); Assert.AreEqual(key, responseValue.Key); }
public async Task Test_TokenController_Default_SecurityException_Pass() { //Arrange SecuritySettings securitySettings = new SecuritySettings() { Secret = "a secret that needs to be at least 16 characters long", Issuer = "your app", Audience = "the client of your app", IdType = IdType.Name, TokenExpiryInHours = 1.2, }; var securityService = new SecurityService(securitySettings); //Authenticator returns a false, token is not generated. var authenticator = this.InitMockDefaultAuthenticator(false); var controller = new TokenController(securityService, authenticator.Object); User user = new User { Id = "John Doe", Password = "******" }; try { //Act var result = await controller.Create(user); } catch (SecurityException ex) { //Assert Assert.IsType <SecurityException>(ex); Assert.True(ex.Message == "Test exception"); } }