Пример #1
0
        public JsonResult AcquireToken(LoginModel model)
        {
            if (!ModelState.IsValid)
            {
                var errorResult = ModelState.GetErrorModel();
                return(Json(errorResult));
            }

            if (!checkUserExist.Invoke(model.Email, model.Password))
            {
                ModelState.AddModelError("Email", "Authentication failed");
                var errorResult = ModelState.GetErrorModel();

                return(Json(errorResult));
            }

            var parser = new JwtParser();

            var userId       = getUserId.Invoke(model.Email);
            var listUserApps = getUserApps.Invoke(userId);
            var appId        = listUserApps.Any() ? listUserApps.FirstOrDefault().Id : 0;

            var acquireResult = parser.AcquireToken(model.Email, appId);
            var result        = new ResultModel <string>(acquireResult.Token);

            return(Json(result));
        }
Пример #2
0
        public void AcquireToken_ForInvalidInput_ReturnsNull()
        {
            var parser = new JwtParser();

            AcquireTokenModel tokenModel = parser.AcquireToken(null, 0);

            Assert.Null(tokenModel);
        }
Пример #3
0
        public void AcquireToken_ForValidInput_ReturnsCorrectToken()
        {
            var parser = new JwtParser();

            AcquireTokenModel tokenModel = parser.AcquireToken("*****@*****.**", 1);

            Assert.NotNull(tokenModel.Token);
        }
Пример #4
0
        public void Verify_ForFreshToken_ReturnsOk()
        {
            var parser = new JwtParser();
            AcquireTokenModel tokenModel = parser.AcquireToken("*****@*****.**", 1);

            VerifyResultModel result = parser.Verify(tokenModel.Token);

            Assert.Equal(true, result.IsValid);
            Assert.NotNull(result.ExpiryDate);
        }
Пример #5
0
        public void AcquireToken_VerifyForTokenParametersData()
        {
            var parser = new JwtParser();
            AcquireTokenModel tokenModel = parser.AcquireToken("*****@*****.**", 1);

            var handler = new JwtSecurityTokenHandler();
            var param   = parser.GetParameters();
            JwtSecurityToken readToken = handler.ReadJwtToken(tokenModel.Token);

            var iss   = parser.GetClaim(readToken, "iss");
            var email = parser.GetClaim(readToken, "email");
            var appId = parser.GetClaim(readToken, "appId");

            Assert.Equal(param.ValidIssuer, iss);
            Assert.Equal("*****@*****.**", email);
            Assert.Equal("1", appId);
        }
Пример #6
0
        public JsonResult SwitchApp(int appId)
        {
            var userId = getUserId.Invoke(LoggedUser.Email);

            if (!checkUserPermissionToApp.Invoke(userId, appId))
            {
                ModelState.AddModelError("AppId", "Permission denied");
                var errorResult = ModelState.GetErrorModel();

                return(Json(errorResult));
            }

            var parser        = new JwtParser();
            var acquireResult = parser.AcquireToken(LoggedUser.Email, appId);
            var result        = new ResultModel <string>(acquireResult.Token);

            return(Json(result));
        }
Пример #7
0
        public void Verify_ForFreshToken_ReturnsCorrectExpiryDate()
        {
            var mockedDateTimeProvider = new Mock <IDateTimeProvider>();
            var dateFormat             = "yyyy-MM-dd HH:mm";
            var dateNow = DateTime.UtcNow;

            // we are using mocked IDateTimeProvider to make sure we are refering to same "now"
            mockedDateTimeProvider.Setup(p => p.GetNow()).Returns(dateNow);
            var parser = new JwtParser(mockedDateTimeProvider.Object);
            var dateNowFutureString = dateNow.AddDays(parser.GetExpiredDays()).ToString(dateFormat);

            AcquireTokenModel tokenModel       = parser.AcquireToken("*****@*****.**", 1);
            VerifyResultModel result           = parser.Verify(tokenModel.Token);
            string            expiryDateString = null;

            if (result.ExpiryDate != null)
            {
                expiryDateString = result.ExpiryDate.Value.ToString(dateFormat);
            }

            Assert.Equal(dateNowFutureString, expiryDateString);
        }