public async Task <IReadOnlyCollection <CertificateAuthority> > GetAsync(string accessToken, CancellationToken token)
        {
            try
            {
                var requestArgs = new TokenSendRequestArgs(_requestUri, accessToken: accessToken);
                var response    = await _client.SendRequestAsync(requestArgs, token);

                var clientAssertion = _jwtTokenParser.Parse(response);
                if (!_tokenResponseValidator.IsValid(clientAssertion))
                {
                    throw new UnsuccessfulResponseException("Token which was retrieved from SO is corrupted.");
                }

                return(TokenConvert.DeserializeClaim <List <CertificateAuthority> >(
                           clientAssertion.JwtSecurityToken,
                           "trusted_list"));
            }
            catch (UnsuccessfulResponseException)
            {
                throw;
            }
            catch (Exception e)
            {
                throw new UnsuccessfulResponseException("Trusted list request was unsuccessful.", e);
            }
        }
        public void IsValid_ExceptionOccurs_HandlesAndReturnsFalse()
        {
            _decodedJwtValidatorMock
            .Setup(x => x.IsIShareCompliant(It.IsAny <TokenValidationArgs>()))
            .Returns(true);
            var jwtString      = CreateJwtString();
            var assertionModel = new AssertionModel(null, CreateToken(jwtString), jwtString);

            var result = _sut.IsValid(assertionModel);

            result.Should().BeFalse();
        }
        public async Task <PartiesResponse> GetAsync(PartiesRequestArgs args, CancellationToken token)
        {
            try
            {
                var requestArgs = MapIntoTokenSendRequestArgs(args);
                var response    = await _client.SendRequestAsync(requestArgs, token);

                var clientAssertion = _jwtTokenParser.Parse(response);
                if (!_tokenResponseValidator.IsValid(clientAssertion))
                {
                    throw new UnsuccessfulResponseException("Token which was retrieved from SO is corrupted.");
                }

                return(TokenConvert.DeserializeClaim <PartiesResponse>(clientAssertion.JwtSecurityToken, "parties_info"));
            }
            catch (UnsuccessfulResponseException)
            {
                throw;
            }
            catch (Exception e)
            {
                throw new UnsuccessfulResponseException("Parties request was unsuccessful.", e);
            }
        }