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())); }
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)); }