Пример #1
0
        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));
 }
Пример #3
0
        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();
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
 public NinjaPlayer(string name, CardValidator cardValidator, CardTracker cardTracker)
 {
     this.Name = name;
     this.cardTracker = cardTracker;
     this.cardValidator = cardValidator;
     this.possibleCardsToPlay = new List<Card>();
 }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
Файл: AI.cs Проект: dorog/UNE
    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!");
            }
        }
    }
Пример #11
0
 public void ShouldNoticeExpiredCard(CardValidator validator) =>
 Assert.Throws <ExpiredCardException>(() => validator.ValidateCard(new Card()
 {
     Number         = "421",
     SecurityCode   = "404",
     ExpirationDate = DateTime.ParseExact("1/19", "d/yy", null)
 }));
Пример #12
0
        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() }));
        }
Пример #13
0
        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();
        }
Пример #14
0
        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));
        }
Пример #15
0
        public void TestHasFewerThanFiveCards()
        {
            CardValidator cardValidator      = new CardValidator();
            string        testCardCollection = "2h 6d as 4s";
            string        errorMessage       = string.Empty;

            Assert.IsFalse(cardValidator.IsValid(testCardCollection, out errorMessage));
        }
Пример #16
0
 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)
 });
Пример #17
0
        public void TestCardCollectionHasNoSpace()
        {
            CardValidator cardValidator      = new CardValidator();
            string        testCardCollection = "2h6das4s3h";
            string        errorMessage       = string.Empty;

            Assert.IsFalse(cardValidator.IsValid(testCardCollection, out errorMessage));
        }
Пример #18
0
        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));
        }
Пример #19
0
        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));
        }
Пример #20
0
        public void TestNoCardInput()
        {
            CardValidator cardValidator      = new CardValidator();
            string        testCardCollection = " ";
            string        errorMessage       = string.Empty;

            Assert.IsFalse(cardValidator.IsValid(testCardCollection, out errorMessage));
        }
Пример #21
0
        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));
            }
        }
Пример #22
0
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (!CardValidator.IsCardNumberValid(value.ToString()))
            {
                return(new ValidationResult(FormatErrorMessage(validationContext.DisplayName)));
            }

            return(null);
        }
Пример #23
0
        public void WhenInvalidExpiryDate_FailsValidation(string invalidExpiryDate)
        {
            var invalidRequest = ValidCard;

            invalidRequest.ExpiryDate = invalidExpiryDate;

            var validator = new CardValidator();

            validator.ValidateAndThrow(ValidCard);
        }
Пример #24
0
        public void WhenInvalidCVV_FailsValidation(int invalidCVV)
        {
            var invalidRequest = ValidCard;

            invalidRequest.CVV = invalidCVV;

            var validator = new CardValidator();

            validator.ValidateAndThrow(ValidCard);
        }
Пример #25
0
        public void WhenInvalidCardIssuer_FailsValidation(string invalidCardIssuer)
        {
            var invalidRequest = ValidCard;

            invalidRequest.CardIssuer = invalidCardIssuer;

            var validator = new CardValidator();

            validator.ValidateAndThrow(ValidCard);
        }
Пример #26
0
        public void WhenInvalidName_FailsValidation(string invalidNameOnCard)
        {
            var invalidRequest = ValidCard;

            invalidRequest.NameOnCard = invalidNameOnCard;

            var validator = new CardValidator();

            validator.ValidateAndThrow(ValidCard);
        }
Пример #27
0
 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();
 }
Пример #28
0
        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);
        }
Пример #29
0
        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);
        }
Пример #30
0
        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);
        }
Пример #31
0
        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);
        }
Пример #32
0
    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;
 }