public async Task <List <Data.IdCard> > ExecuteAsync(int cchId, Employer employer)
        {
            if (cchId < 1)
            {
                throw new InvalidOperationException("Invalid member context.");
            }

            if (employer == null || string.IsNullOrEmpty(employer.ConnectionString))
            {
                throw new InvalidOperationException("Invalid employer context.");
            }

            _repository.Initialize(employer.ConnectionString);

            List <Data.IdCard> result = new List <Data.IdCard>();

            switch (employer.Id)
            {
            case 34:
                result = await _repository.GetIdCardsByCchIdAsyncV2(cchId, employer);

                break;

            default:
                result = await _repository.GetIdCardsByCchIdAsync(cchId);

                break;
            }



            var cardBaseAddress = "CardBaseAddress".GetConfigurationValue();
            var timeout         = "TimeoutInMinutes".GetConfigurationValue();


            result.ForEach(r => {
                System.Diagnostics.Debug.Write(r.DetailText);
                //This whole section may have to be rethought depending on new data structures.
                //May require an interface break/ v2 in media as well.
                var cardToken = new CardToken()
                {
                    EmployerId = employer.Id,
                    CardDetail = JsonConvert.DeserializeObject <CardDetail>(r.DetailText),
                    Expires    = DateTime.UtcNow.AddMinutes(Convert.ToInt16(timeout))
                };

                cardToken.CardDetail.CardTypeFileName = r.CardType.FileName;
                cardToken.CardDetail.CardTypeId       = r.TypeId;
                cardToken.CardDetail.CardViewModeId   = r.ViewModeId;

                var jwt = JwtService.EncryptPayload(JsonConvert.SerializeObject(cardToken));

                r.Url           = string.Format("{0}/?tkn={1}|{2}", cardBaseAddress, employer.Id, jwt);
                r.SecurityToken = jwt;
                r.Detail        = JsonConvert.DeserializeObject <CardDetail>(r.DetailText);
            });

            return(result);
        }
Exemplo n.º 2
0
        public void CannotGetCardDetailForMismatchedEmployerId()
        {
            var service   = new CardService();
            var cardToken = JwtService.EncryptPayload(JsonConvert.SerializeObject(new CardToken()
            {
                Expires    = DateTime.UtcNow.AddMinutes(15),
                EmployerId = 11
            }));

            Debug.WriteLine(cardToken);
            var cardDetail = service.GetCardDetail(12, cardToken);

            Assert.IsTrue(cardDetail.Invalid);
        }
Exemplo n.º 3
0
        public async Task CannotGetCardDetailWithMismatchedEmployerId()
        {
            //This check can be removed after successfull deployment.
            if (!Debugger.IsAttached)
            {
                return;
            }

            var service   = new CardService();
            var cardToken = JwtService.EncryptPayload(JsonConvert.SerializeObject(new CardToken()
            {
                Expires    = DateTime.UtcNow.AddMinutes(15),
                EmployerId = 11
            }));

            var response = await WebApiService.GetCardDetail(12, cardToken);

            Assert.IsTrue(response.Invalid);
        }
Exemplo n.º 4
0
        public async Task CannotGetCardDetailWithExpiredJwt()
        {
            if (!Debugger.IsAttached)
            {
                return;
            }

            var service   = new CardService();
            var cardToken = JwtService.EncryptPayload(JsonConvert.SerializeObject(new CardToken()
            {
                Expires    = DateTime.UtcNow.AddMinutes(-2),
                EmployerId = 11
            }));

            Debug.WriteLine(cardToken);
            var response = await WebApiService.GetCardDetail(11, cardToken);

            Assert.IsTrue(response.Expired);
        }