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());
        }
示例#4
0
        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);
                }
        }
示例#5
0
        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);
        }
示例#6
0
        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");
            }
        }
示例#8
0
        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");
            }
        }