public Result Insert(CardDTO cardDTO) { var validationRules = new CardValidator(); var validationResult = validationRules.Validate(cardDTO); if (!validationResult.IsValid) { string errors = null; foreach (var failure in validationResult.Errors) { errors += "Propriedade: " + failure.PropertyName + ". Erro: " + failure.ErrorMessage + " ."; } return(Results.Fail(errors)); } var card = _mapper.Map <CardDTO, Card>(cardDTO); _context.Card.Add(card); _context.SaveChanges(); cardDTO.Id = card.Id; return(Results.Ok(card.Id)); }
public ActionResult Index([Bind(Include = "CardType, CreditCardNumber")] CreditCard card) { if (ModelState.IsValid) { // Amex if (card.CardType == 1) { card.Result = CardValidator.IsValidAmex(card.CreditCardNumber) ? "Valid" : "Invalid"; } // Discover else if (card.CardType == 2) { card.Result = CardValidator.IsValidDiscover(card.CreditCardNumber) ? "Valid" : "Invalid"; } // Mastercard else if (card.CardType == 3) { card.Result = CardValidator.IsValidMastercard(card.CreditCardNumber) ? "Valid" : "Invalid"; } // Visa else { card.Result = CardValidator.IsValidVisa(card.CreditCardNumber) ? "Valid" : "Invalid"; } } return(View(card)); }
public void ValidateWithoutDefaultVerifiers_CardWithoutServiceSignature_ShouldReturnTrue() { var card = new CardModel(new PublishCardSnapshotModel { PublicKeyData = Convert.FromBase64String("MCowBQYDK2VwAyEAZzBtEQEWMQ9VeJrqSoO939VR5qimaTs4reqe9ut1VPk="), }) { Id = "eb95e1b31ff3090598a05bf108c06088af5f70cfd6338924932396e9dfce840a", Snapshot = Convert.FromBase64String("eyJpZGVudGl0eSI6ImFsaWNlIiwiaWRlbnRpdHlfdHlwZSI6Im1lbWJlciIsInB1YmxpY19rZXkiOiJNQ293QlFZREsyVndBeUVBWnpCdEVRRVdNUTlWZUpycVNvTzkzOVZSNXFpbWFUczRyZXFlOXV0MVZQaz0iLCJzY29wZSI6ImFwcGxpY2F0aW9uIiwiZGF0YSI6e30sImluZm8iOm51bGx9"), Meta = new CardMetaModel { Version = "4.0", Signatures = new Dictionary <string, byte[]> { ["eb95e1b31ff3090598a05bf108c06088af5f70cfd6338924932396e9dfce840a"] = Convert.FromBase64String("MFEwDQYJYIZIAWUDBAICBQAEQFpw+jB5eDT1Dj3I2WqCewGqhAdG9f8pncAYeYcWHGWIONZlog1gjBb/y5/km8VbIPjrn4wlF0Ld8L5tRqRZOQM="), ["0b23070f8bafc48765658b92f168ae70b7638bc6fde0d246258de8a1116a52c4"] = Convert.FromBase64String("MFEwDQYJYIZIAWUDBAICBQAEQJggpfBBpO9mHG2Q7hxdkY5b20krS4w4WG6IxNUHGmN1ZvKq0LECgNc2yuvXkDiSqXQ011zN1yhGwxe/LwtkZg8=") } } }; var crypto = new VirgilCrypto(); var validator = new CardValidator(crypto); validator.Validate(card).Should().BeTrue(); }
public void MissedInDBMasterCardShouldBeDoesNotExist() { var storage = new Mock <ICardStorage>(); storage.Setup(s => s.GetCardExpiryDate(It.IsAny <String>())).Returns((Nullable <DateTime>)null); var cardTypeResult = new Mock <ICardTypeResult>(); cardTypeResult.Setup(ctr => ctr.CardType).Returns(CardType.Master); var cardTypeResolver = new Mock <ICardTypeResolver>(); cardTypeResolver.Setup(s => s.ResolveCardType(It.IsAny <ICard>())).Returns(cardTypeResult.Object); var numberService = new Mock <INumberService>(); var card = new Mock <ICard>(); card.SetupGet(c => c.CardNumber).Returns(It.IsAny <String>()); var cardValidator = new CardValidator(storage.Object, cardTypeResolver.Object, numberService.Object); var res = cardValidator.ValidateCard(card.Object); Assert.AreEqual(ValidationState.DoesNotExist, res.ValidationResult); }
public void AmexCardShouldAlwaysBeInvalid() { var storage = new Mock <ICardStorage>(); storage.Setup(s => s.GetCardExpiryDate(It.IsAny <String>())).Returns(new DateTime(2023, 1, 1)); var cardTypeResult = new Mock <ICardTypeResult>(); cardTypeResult.Setup(ctr => ctr.CardType).Returns(CardType.Amex); var cardTypeResolver = new Mock <ICardTypeResolver>(); cardTypeResolver.Setup(s => s.ResolveCardType(It.IsAny <ICard>())).Returns(cardTypeResult.Object); var numberService = new Mock <INumberService>(); numberService.Setup(ns => ns.IsPrime(It.IsAny <int>())).Returns(true); var card = new Mock <ICard>(); card.SetupGet(c => c.CardNumber).Returns(It.IsAny <String>()); var cardValidator = new CardValidator(storage.Object, cardTypeResolver.Object, numberService.Object); var res = cardValidator.ValidateCard(card.Object); Assert.AreEqual(ValidationState.Invalid, res.ValidationResult); }
private VirgilClient PredefinedClient(VirgilCrypto crypto) { var clientParams = new VirgilClientParams(ConfigurationManager.AppSettings["virgil:AppAccessToken"]); clientParams.SetCardsServiceAddress(ConfigurationManager.AppSettings["virgil:CardsServicesAddress"]); clientParams.SetIdentityServiceAddress(ConfigurationManager.AppSettings["virgil:IdentityServiceAddress"]); clientParams.SetRAServiceAddress(ConfigurationManager.AppSettings["virgil:RAServicesAddress"]); clientParams.SetReadCardsServiceAddress(ConfigurationManager.AppSettings["virgil:CardsReadServicesAddress"]); var validator = new CardValidator(crypto); // To use staging Verifier instead of default verifier var cardVerifier = new CardVerifierInfo { CardId = ConfigurationManager.AppSettings["virgil:ServiceCardId"], PublicKeyData = VirgilBuffer.From(ConfigurationManager.AppSettings["virgil:ServicePublicKeyDerBase64"], StringEncoding.Base64) }; validator.AddVerifier(cardVerifier.CardId, cardVerifier.PublicKeyData.GetBytes()); var client = new VirgilClient(clientParams); client.SetCardValidator(validator); return(client); }
public NinjaPlayer(string name, CardValidator cardValidator, CardTracker cardTracker) { this.Name = name; this.cardTracker = cardTracker; this.cardValidator = cardValidator; this.possibleCardsToPlay = new List<Card>(); }
public void VisaCardShouldBeValidIfLeapYearOfExpiryDate() { var storage = new Mock <ICardStorage>(); storage.Setup(s => s.GetCardExpiryDate(It.IsAny <String>())).Returns(new DateTime(2024, 1, 1)); var cardTypeResult = new Mock <ICardTypeResult>(); cardTypeResult.Setup(ctr => ctr.CardType).Returns(CardType.Visa); var cardTypeResolver = new Mock <ICardTypeResolver>(); cardTypeResolver.Setup(s => s.ResolveCardType(It.IsAny <ICard>())).Returns(cardTypeResult.Object); var numberService = new Mock <INumberService>(); var card = new Mock <ICard>(); card.SetupGet(c => c.CardNumber).Returns(It.IsAny <String>()); var cardValidator = new CardValidator(storage.Object, cardTypeResolver.Object, numberService.Object); var res = cardValidator.ValidateCard(card.Object); Assert.AreEqual(ValidationState.Valid, res.ValidationResult); }
public async Task CreateNewVirgilCard_SignatureValidation_ShouldPassValidation() { var crypto = new VirgilCrypto(); var client = IntegrationHelper.GetVirgilClient(); // CREATING A VIRGIL CARD var appKey = crypto.ImportPrivateKey(IntegrationHelper.AppKey, IntegrationHelper.AppKeyPassword); var aliceKeys = crypto.GenerateKeys(); var exportedPublicKey = crypto.ExportPublicKey(aliceKeys.PublicKey); var aliceIdentity = "alice-" + Guid.NewGuid(); var request = new PublishCardRequest(aliceIdentity, "member", exportedPublicKey); var requestSigner = new RequestSigner(crypto); requestSigner.SelfSign(request, aliceKeys.PrivateKey); requestSigner.AuthoritySign(request, IntegrationHelper.AppID, appKey); var aliceCard = await client.PublishCardAsync(request); // VALIDATING A VIRGIL CARD var appPublicKey = crypto.ExtractPublicKey(appKey); var exportedAppPublicKey = crypto.ExportPublicKey(appPublicKey); var validator = new CardValidator(crypto); validator.AddVerifier(IntegrationHelper.AppID, exportedAppPublicKey); validator.Validate(aliceCard).Should().BeTrue(); await IntegrationHelper.RevokeCard(aliceCard.Id); }
public override void SelectCard() { List <Card> validNextCards = CardValidator.GetAllValidNextCards(cards, discardPile.lastDiscardedCard.GetCard()); if (validNextCards.Count == 0) { if (roundManager.PassRound(this)) { drawPile.AddCard(this, 1); } } else { Card selectedCard = Select(validNextCards); if (roundManager.SelectCard(this, selectedCard)) { Destroy(hand.GetChild(0).gameObject); int selectedCardIndex = cards.FindIndex(x => x == selectedCard); cards.RemoveAt(selectedCardIndex); CheckCardsState(); SetGridSpacing(cards.Count); } else { Debug.LogError("AI picked invalid card!"); } } }
public void ShouldNoticeExpiredCard(CardValidator validator) => Assert.Throws <ExpiredCardException>(() => validator.ValidateCard(new Card() { Number = "421", SecurityCode = "404", ExpirationDate = DateTime.ParseExact("1/19", "d/yy", null) }));
public IActionResult ValidateCard([FromBody] Card card) { var validator = new CardValidator(card); var result = validator.Validate(); if (result.Result == Result.Valid) { // This use SP_CHECK_CREDIT_CARD to check card exists in database var searchResult = db.Cards.FromSql("dbo.SP_CHECK_CREDIT_CARD @CardNumber={0}, @ExpiryDate={1}", card.CardNumber, card.ExpiryDate) .AsNoTracking() .SingleOrDefault(); if (searchResult == null) { result.Result = Result.DoesNotExist; } // This use LINQ to check card exists in database //if (!db.Cards.Any(p => p.CardNumber == card.CardNumber && p.ExpiryDate == card.ExpiryDate)) // result.Result = Result.DoesNotExist; } return(Ok(new { result = result.Result.ToFriendlyString(), cardType = result.CardType.ToFriendlyString() })); }
public void Validate_CardWithFakedOwnerSignature_ShouldReturnFalse() { var card = new CardModel(new PublishCardSnapshotModel { PublicKeyData = Convert.FromBase64String("MCowBQYDK2VwAyEAZzBtEQEWMQ9VeJrqSoO939VR5qimaTs4reqe9ut1VPk="), }) { Id = "eb95e1b31ff3090598a05bf108c06088af5f70cfd6338924932396e9dfce840a", Snapshot = Convert.FromBase64String("eyJpZGVudGl0eSI6ImFsaWNlIiwiaWRlbnRpdHlfdHlwZSI6Im1lbWJlciIsInB1YmxpY19rZXkiOiJNQ293QlFZREsyVndBeUVBWnpCdEVRRVdNUTlWZUpycVNvTzkzOVZSNXFpbWFUczRyZXFlOXV0MVZQaz0iLCJzY29wZSI6ImFwcGxpY2F0aW9uIiwiZGF0YSI6e30sImluZm8iOm51bGx9"), Meta = new CardMetaModel { Version = "4.0", Signatures = new Dictionary <string, byte[]> { ["eb95e1b31ff3090598a05bf108c06088af5f70cfd6338924932396e9dfce840a"] = Convert.FromBase64String("MFEwDQYJYIZIAWUDBAICBQAEQMpaO3OmXlsYhzR7pvF0Xuu7Dv84r3SRrmqjMvod9ik+oQ0M0uc+dwHNeNtQpy84qI14cXXaMAJDcfgtKyHPdA0="), ["0b23070f8bafc48765658b92f168ae70b7638bc6fde0d246258de8a1116a52c4"] = Convert.FromBase64String("MFEwDQYJYIZIAWUDBAICBQAEQJggpfBBpO9mHG2Q7hxdkY5b20krS4w4WG6IxNUHGmN1ZvKq0LECgNc2yuvXkDiSqXQ011zN1yhGwxe/LwtkZg8="), ["3e29d43373348cfb373b7eae189214dc01d7237765e572db685839b64adca853"] = Convert.FromBase64String("MFEwDQYJYIZIAWUDBAICBQAEQMpaO3OmXlsYhzR7pvF0Xuu7Dv84r3SRrmqjMvod9ik+oQ0M0uc+dwHNeNtQpy84qI14cXXaMAJDcfgtKyHPdA0="), } } }; var crypto = new VirgilCrypto(); var validator = new CardValidator(crypto); validator.AddDefaultVerifiers(); validator.Validate(card).Should().BeFalse(); }
public void TestHasMoreThanFiveValidCards() { CardValidator cardValidator = new CardValidator(); string testCardCollection = "2h 6d as 4s 3h ah 9d"; string errorMessage = string.Empty; Assert.IsTrue(cardValidator.IsValid(testCardCollection, out errorMessage)); }
public void TestHasFewerThanFiveCards() { CardValidator cardValidator = new CardValidator(); string testCardCollection = "2h 6d as 4s"; string errorMessage = string.Empty; Assert.IsFalse(cardValidator.IsValid(testCardCollection, out errorMessage)); }
public void ShouldAcceptCompletelyValidCard(CardValidator validator) => validator.ValidateCard(new Card() { Number = "4561261212345467", SecurityCode = "404", RegistrationDate = DateTime.ParseExact("1/19", "d/yy", null), ExpirationDate = DateTime.ParseExact("1/21", "d/yy", null) });
public void TestCardCollectionHasNoSpace() { CardValidator cardValidator = new CardValidator(); string testCardCollection = "2h6das4s3h"; string errorMessage = string.Empty; Assert.IsFalse(cardValidator.IsValid(testCardCollection, out errorMessage)); }
public void TestCurrentCardFiveIsNotUnique() { CardValidator cardValidator = new CardValidator(); string testCardCollection = "2h 6d as 3h 3h"; string errorMessage = string.Empty; Assert.IsFalse(cardValidator.IsValid(testCardCollection, out errorMessage)); }
public void TestHasInvalidFormatCards() { CardValidator cardValidator = new CardValidator(); string testCardCollection = "2h 6J as 4s 3jdka"; string errorMessage = string.Empty; Assert.IsFalse(cardValidator.IsValid(testCardCollection, out errorMessage)); }
public void TestNoCardInput() { CardValidator cardValidator = new CardValidator(); string testCardCollection = " "; string errorMessage = string.Empty; Assert.IsFalse(cardValidator.IsValid(testCardCollection, out errorMessage)); }
public async Task <ActionResult <BankResponse> > PostPaymentToBank(PayRequest payReq) { int merchantID = await Authenticate(); if (merchantID == -3) { return(BadRequest("An error occured.")); } if (merchantID < 0) { return(Unauthorized()); } if (payReq == null) { return(BadRequest()); } //automatically done by web api controller /*if (!ModelState.IsValid) * { * return BadRequest(); * }*/ try { CardValidator.validateCard(payReq); payReq.Cardnumber = payReq.Cardnumber.Replace(" ", ""); BankResponse bankResponse = new BankResponse(); bankResponse = await _paymentService.makePayment(payReq); Payment payment = new Payment() { Status = bankResponse.Status, Paymentid = bankResponse.Identifier, Merchantid = merchantID, Amount = payReq.Amount, Expirydate = payReq.ExpiryDate, Cardholdername = payReq.CardHolderName, Cardnumber = payReq.Cardnumber, Cardtype = payReq.CardType, Currency = payReq.Currency }; await _paymentService.addPaymentDetails(payment); if (bankResponse.Status == 1000) { return(Ok(bankResponse)); } return(BadRequest(bankResponse)); }catch (Exception e) { return(BadRequest(e.Message)); } }
protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (!CardValidator.IsCardNumberValid(value.ToString())) { return(new ValidationResult(FormatErrorMessage(validationContext.DisplayName))); } return(null); }
public void WhenInvalidExpiryDate_FailsValidation(string invalidExpiryDate) { var invalidRequest = ValidCard; invalidRequest.ExpiryDate = invalidExpiryDate; var validator = new CardValidator(); validator.ValidateAndThrow(ValidCard); }
public void WhenInvalidCVV_FailsValidation(int invalidCVV) { var invalidRequest = ValidCard; invalidRequest.CVV = invalidCVV; var validator = new CardValidator(); validator.ValidateAndThrow(ValidCard); }
public void WhenInvalidCardIssuer_FailsValidation(string invalidCardIssuer) { var invalidRequest = ValidCard; invalidRequest.CardIssuer = invalidCardIssuer; var validator = new CardValidator(); validator.ValidateAndThrow(ValidCard); }
public void WhenInvalidName_FailsValidation(string invalidNameOnCard) { var invalidRequest = ValidCard; invalidRequest.NameOnCard = invalidNameOnCard; var validator = new CardValidator(); validator.ValidateAndThrow(ValidCard); }
public CardTracker() { this.MySureTrickPoints = 0; this.remainingCards = new List<Card>(); this.playedCards = new HashSet<Card>(); this.myRemainingTrumpCards = new List<Card>(); this.MyTrickPoints = 0; this.OpponentsTrickPoints = 0; this.cardValidator = new CardValidator(); }
public void TestValidJCB() { var card = new Card { CardNumber = "3222222222222222", ExpiryDate = "042029" }; var validator = new CardValidator(card); var result = validator.Validate(); Assert.AreEqual(result.CardType, CardType.JCB); Assert.AreEqual(result.Result, Result.Valid); }
public void TestInvalidMasterCard() { var card = new Card { CardNumber = "5111111111111111", ExpiryDate = "012020" }; var validator = new CardValidator(card); var result = validator.Validate(); Assert.AreEqual(result.CardType, CardType.MasterCard); Assert.AreEqual(result.Result, Result.Invalid); }
public void TestInvalidAmex() { var card = new Card { CardNumber = "311111111111111", ExpiryDate = "032028" }; var validator = new CardValidator(card); var result = validator.Validate(); Assert.AreEqual(result.CardType, CardType.Amex); Assert.AreEqual(result.Result, Result.Invalid); }
public void TestValidVisa() { var card = new Card { CardNumber = "4111111111111111", ExpiryDate = "012020" }; var validator = new CardValidator(card); var result = validator.Validate(); Assert.AreEqual(result.CardType, CardType.Visa); Assert.AreEqual(result.Result, Result.Valid); }
public bool AddCard(Card card) { if (CardValidator.IsValidNextCard(card, lastDiscardedCard.GetCard())) { pile.Add(card); lastDiscardedCard.SetCard(card); return(true); } return(false); }
public ChooseCardWhenSecondAndGameClosed(ICollection<Card> possibleCardsToPlay, CardTracker cardTracker, CardValidator cardValidator) : base(possibleCardsToPlay, cardTracker, cardValidator) { }
protected BaseChooseCardStrategy(ICollection<Card> possibleCardsToPlay, CardTracker cardTracker, CardValidator cardValidator) { this.possibleCardsToPlay = possibleCardsToPlay; this.cardTracker = cardTracker; this.cardValidator = cardValidator; }