コード例 #1
0
        public void GetCard_Should_RaiseExceptionIfTokenSignedByWrongKey()
        {
            var jwt    = JwtSignedByWrongApiKey(faker.Random.AlphaNumeric(15));
            var client = new CardClient(AppSettings.CardsServiceAddress);

            Assert.ThrowsAsync <ClientException>(
                async() => await client.GetCardAsync(faker.CardId(), jwt.ToString()));
        }
コード例 #2
0
        public void CardManager_Should_RaiseExceptionIfGetsInvalidCard()
        {
            // STC-13
            var verifier = Substitute.For <ICardVerifier>();

            verifier.VerifyCard(Arg.Any <Card>()).Returns(false);

            var signCallBack = Substitute.For <Func <RawSignedModel, Task <RawSignedModel> > >();

            signCallBack.Invoke(Arg.Any <RawSignedModel>()).Returns(args => (RawSignedModel)args[0]);
            var jwtGenerator = new JwtGenerator(
                faker.AppId(),
                IntegrationHelper.ApiPrivateKey(),
                AppSettings.ApiPublicKeyId,
                TimeSpan.FromMinutes(10),
                new VirgilAccessTokenSigner()
                );
            var accessTokenProvider = Substitute.For <IAccessTokenProvider>();
            var identity            = faker.Random.AlphaNumeric(20);
            var token = jwtGenerator.GenerateToken(identity);

            accessTokenProvider.GetTokenAsync(Arg.Any <TokenContext>()).Returns(
                token
                );
            var model = faker.PredefinedRawSignedModel(null, true, true, true);

            var client = Substitute.For <ICardClient>();
            Func <Task <Tuple <RawSignedModel, bool> > > getStub = async() =>
            {
                return(new Tuple <RawSignedModel, bool>(model, false));
            };
            Func <Task <RawSignedModel> > publishStub = async() =>
            {
                return(model);
            };
            Func <Task <IEnumerable <RawSignedModel> > > searchStub = async() =>
            {
                return(new List <RawSignedModel>()
                {
                    model
                });
            };

            client.GetCardAsync(Arg.Any <string>(), Arg.Any <string>()).Returns(getStub.Invoke());
            client.PublishCardAsync(Arg.Any <RawSignedModel>(), Arg.Any <string>()).Returns(publishStub.Invoke());
            client.SearchCardsAsync(Arg.Any <string>(), Arg.Any <string>()).Returns(searchStub.Invoke());

            var cardId             = faker.CardId();
            var searchCardIdentity = faker.Random.AlphaNumeric(20);
            var manager            = new CardManager(new CardManagerParams()
            {
                CardCrypto          = new VirgilCardCrypto(),
                AccessTokenProvider = accessTokenProvider,
                SignCallBack        = signCallBack,
                Verifier            = verifier,
                ApiUrl = AppSettings.CardsServiceAddress
            }
                                                     )
            {
                Client = client
            };

            Assert.Throws <CardVerificationException>(() => manager.ImportCardFromJson(model.ExportAsJson()));
            Assert.Throws <CardVerificationException>(() => manager.ImportCardFromString(model.ExportAsString()));
            Assert.ThrowsAsync <CardVerificationException>(async() => await manager.GetCardAsync(cardId));
            Assert.ThrowsAsync <CardVerificationException>(async() => await manager.PublishCardAsync(model));
            Assert.ThrowsAsync <CardVerificationException>(async() => await manager.SearchCardsAsync(searchCardIdentity));
            Assert.Throws <CardVerificationException>(() => manager.ImportCard(model));
        }