Пример #1
0
        private static ICardAccount GetCredentials(CardAccountRepository cardAcountRepo)
        {
            var consoleHandler = ConsoleHandler.Instance;

            consoleHandler.Print("Enter card number: ");
            var cardNumberToFind = consoleHandler.GetStringInput();

            if (cardNumberToFind.Length < cardAcountRepo.NumberLength || !cardAcountRepo.DoesCardExists(cardNumberToFind))
            {
                consoleHandler.PrintLine("This card does not exists in the database.");
                return(null);
            }

            consoleHandler.Print("Enter pin: ");
            var enteredPin = consoleHandler.GetStringInput();

            if (enteredPin.Length != cardAcountRepo.PinLength)
            {
                consoleHandler.PrintLine("Entered pin does not match predefined length: " + cardAcountRepo.PinLength);
            }

            var result = cardAcountRepo.GetByCardNumberAndPin(cardNumberToFind, enteredPin);

            if (result == null)
            {
                consoleHandler.PrintLine("Entered pin does not match.");
            }

            return(result);
        }
        public void CreateCardAccountSuccessfully()
        {
            var content = File.ReadAllText("../../../Fixtures/card_account_create.json");

            var client = GetMockClient(content);
            var repo   = new CardAccountRepository(client.Object);

            const string userId  = "ec9bf096-c505-4bef-87f6-18822b9dbf2c"; //some user created before
            var          account = new CardAccount
            {
                UserId = userId,
                Active = true,
                Card   = new Card
                {
                    FullName    = "Batman",
                    ExpiryMonth = "11",
                    ExpiryYear  = "2020",
                    Number      = "4111111111111111",
                    Type        = "visa",
                    CVV         = "123"
                }
            };
            var createdAccount = repo.CreateCardAccount(account);

            client.VerifyAll();
            Assert.IsNotNull(createdAccount);
            Assert.IsNotNull(createdAccount.Id);
            Assert.AreEqual("AUD", createdAccount.Currency); // It seems that currency is determined by country
            Assert.IsNotNull(createdAccount.CreatedAt);
            Assert.IsNotNull(createdAccount.UpdatedAt);
        }
Пример #3
0
        private static ICardAccount GetCredentials(CardAccountRepository cardAcountRepo)
        {
            var consoleHandler = ConsoleHandler.Instance;
            consoleHandler.Print("Enter card number: ");
            var cardNumberToFind = consoleHandler.GetStringInput();
            if(cardNumberToFind.Length < cardAcountRepo.NumberLength || !cardAcountRepo.DoesCardExists(cardNumberToFind))
            {
                consoleHandler.PrintLine("This card does not exists in the database.");
                return null;
            }

            consoleHandler.Print("Enter pin: ");
            var enteredPin = consoleHandler.GetStringInput();
            if (enteredPin.Length != cardAcountRepo.PinLength)
            {
                consoleHandler.PrintLine("Entered pin does not match predefined length: " + cardAcountRepo.PinLength);
            }

            var result = cardAcountRepo.GetByCardNumberAndPin(cardNumberToFind, enteredPin);
            if (result == null)
            {
                consoleHandler.PrintLine("Entered pin does not match.");
            }

            return result;
        }
Пример #4
0
        public void CreateCardAccountSuccessfully()
        {
            var content = File.ReadAllText("../../../Fixtures/card_account_create.json");

            var client = GetMockClient(content);
            var repo   = new CardAccountRepository(client.Object);

            const string userId  = "ec9bf096-c505-4bef-87f6-18822b9dbf2c"; //some user created before
            var          account = new Dictionary <string, object>
            {
                { "user_id", userId },
                { "active", true },
                { "card", new Dictionary <string, object>
                  {
                      { "full_name", "Batman" },
                      { "expiry_month", "11" },
                      { "expiry_year", "2020" },
                      { "number", "4111111111111111" },
                      { "type", "visa" },
                      { "cvv", "123" }
                  } }
            };
            var resp = repo.CreateCardAccount(account);

            client.VerifyAll();
            var result         = resp.Values.First();
            var createdAccount = JsonConvert.DeserializeObject <IDictionary <string, object> >(JsonConvert.SerializeObject(result));

            Assert.IsNotNull(createdAccount);
            Assert.IsNotNull(createdAccount["id"]);
            Assert.AreEqual("AUD", (string)createdAccount["currency"]); // It seems that currency is determined by country
            Assert.IsNotNull(createdAccount["created_at"]);
            Assert.IsNotNull(createdAccount["updated_at"]);
        }
Пример #5
0
        private static void Main(string[] args)
        {
            using (var dbContext = new AtmEntities())
            {
                var userRepo               = new CardHolderRepository(dbContext);
                var cardAccountRepo        = new CardAccountRepository(dbContext);
                var transactionHystoryRepo = new TransactionHistoryRepository(dbContext);
                var consoleHandler         = ConsoleHandler.Instance;
                FakeDataFiller.FillCardHoldersWithFakeData(dbContext, userRepo);
                dbContext.SaveChanges();
                consoleHandler.PrintLine("Card holders faking finished.");
                var cardHoldersIds = userRepo.GetAll().Select(u => u.Id).ToList();
                FakeDataFiller.FillCardAccountsWithFakeData(dbContext, cardAccountRepo, cardHoldersIds);
                dbContext.SaveChanges();
                consoleHandler.PrintLine("Card accounts faking finished.");

                var card = GetCredentials(cardAccountRepo);
                if (card != null)
                {
                    if (WithdrawSum(dbContext, cardAccountRepo, transactionHystoryRepo, card))
                    {
                        consoleHandler.PrintLine("Withdraw successful.");
                    }
                }
            }
        }
Пример #6
0
        public void GetCardAccountEmptyId()
        {
            var client = GetMockClient("");
            var repo   = new CardAccountRepository(client.Object);

            Assert.Throws <ArgumentException>(() => repo.GetCardAccountById(string.Empty));
        }
Пример #7
0
        private static void Main(string[] args)
        {
            using (var dbContext = new AtmEntities())
            {
                var userRepo = new CardHolderRepository(dbContext);
                var cardAccountRepo = new CardAccountRepository(dbContext);
                var transactionHystoryRepo = new TransactionHistoryRepository(dbContext);
                var consoleHandler = ConsoleHandler.Instance;
                FakeDataFiller.FillCardHoldersWithFakeData(dbContext, userRepo);
                dbContext.SaveChanges();
                consoleHandler.PrintLine("Card holders faking finished.");
                var cardHoldersIds = userRepo.GetAll().Select(u => u.Id).ToList();
                FakeDataFiller.FillCardAccountsWithFakeData(dbContext, cardAccountRepo, cardHoldersIds);
                dbContext.SaveChanges();
                consoleHandler.PrintLine("Card accounts faking finished.");

                var card = GetCredentials(cardAccountRepo);
                if (card != null)
                {
                    if(WithdrawSum(dbContext, cardAccountRepo, transactionHystoryRepo, card))
                    {
                        consoleHandler.PrintLine("Withdraw successful.");
                    }
                }
            }
        }
        public void GetCardAccountSuccessfully()
        {
            var content = File.ReadAllText("../../../Fixtures/card_account_get_by_id.json");

            var client     = GetMockClient(content);
            var repo       = new CardAccountRepository(client.Object);
            var gotAccount = repo.GetCardAccountById("25d34744-8ef0-46a4-8b18-2a8322933cd1");

            client.VerifyAll();
            Assert.AreEqual("25d34744-8ef0-46a4-8b18-2a8322933cd1", gotAccount.Id);
        }
Пример #9
0
        public void DeleteCardAccountSuccessfully()
        {
            var content = File.ReadAllText("../../../Fixtures/card_account_delete.json");

            var          client = GetMockClient(content);
            var          repo   = new CardAccountRepository(client.Object);
            const string id     = "25d34744-8ef0-46a4-8b18-2a8322933cd1";

            var result = repo.DeleteCardAccount(id);

            client.VerifyAll();
            Assert.IsTrue(result);
        }
Пример #10
0
        public void GetCardAccountSuccessfully()
        {
            var content = File.ReadAllText("../../../Fixtures/card_account_get_by_id.json");

            var client = GetMockClient(content);
            var repo   = new CardAccountRepository(client.Object);
            var resp   = repo.GetCardAccountById("25d34744-8ef0-46a4-8b18-2a8322933cd1");

            client.VerifyAll();
            var result     = resp.Values.First();
            var gotAccount = JsonConvert.DeserializeObject <IDictionary <string, object> >(JsonConvert.SerializeObject(result));

            Assert.AreEqual("25d34744-8ef0-46a4-8b18-2a8322933cd1", gotAccount["id"]);
        }
        public void VerifyCardSuccessfully()
        {
            var content = File.ReadAllText("../../../Fixtures/card_account_verify_card.json");

            var client = GetMockClient(content);
            var repo   = new CardAccountRepository(client.Object);

            const string id = "25d34744-8ef0-46a4-8b18-2a8322933cd1"; //some card created before

            var verifyCardResult = repo.VerifyCard(id);

            client.VerifyAll();
            Assert.IsNotNull(verifyCardResult);
            Assert.IsNotNull(verifyCardResult.Id);
            Assert.AreEqual("verified", verifyCardResult.VerificationStatus);
        }
Пример #12
0
        private static bool WithdrawSum(
            AtmEntities dbContext, 
            CardAccountRepository cardAcountRepo,
            TransactionHistoryRepository tarnsactionHystoryRepo, 
            ICardAccount cardAccount)
        {
            var transactionsHandler = new TransactionsHandler(dbContext, cardAcountRepo, tarnsactionHystoryRepo);
            var consoleHandler = ConsoleHandler.Instance;
            consoleHandler.Print("Enter value to withdraw: ");
            var withdrawValueInput = consoleHandler.GetStringInput();
            decimal withdrawValue = new decimal();
            if(!decimal.TryParse(withdrawValueInput, out withdrawValue))
            {
                return false;
            }

            return transactionsHandler.WithdrawTransaction(cardAccount.CardNumber, cardAccount.CardPin, withdrawValue);
        }
Пример #13
0
        public void GetUserForCardAccountSuccessfully()
        {
            var content = File.ReadAllText("../../../Fixtures/card_account_get_users.json");

            var client = GetMockClient(content);
            var repo   = new CardAccountRepository(client.Object);
            var resp   = repo.GetUserForCardAccount("25d34744-8ef0-46a4-8b18-2a8322933cd1");

            client.VerifyAll();

            Assert.IsNotNull(resp);

            var users = resp["users"];

            Assert.IsNotNull(users);
            var user = JsonConvert.DeserializeObject <IDictionary <string, object> >(JsonConvert.SerializeObject(users));

            Assert.AreEqual("1", user["id"]);
        }
Пример #14
0
        private static bool WithdrawSum(
            AtmEntities dbContext,
            CardAccountRepository cardAcountRepo,
            TransactionHistoryRepository tarnsactionHystoryRepo,
            ICardAccount cardAccount)
        {
            var transactionsHandler = new TransactionsHandler(dbContext, cardAcountRepo, tarnsactionHystoryRepo);
            var consoleHandler      = ConsoleHandler.Instance;

            consoleHandler.Print("Enter value to withdraw: ");
            var     withdrawValueInput = consoleHandler.GetStringInput();
            decimal withdrawValue      = new decimal();

            if (!decimal.TryParse(withdrawValueInput, out withdrawValue))
            {
                return(false);
            }

            return(transactionsHandler.WithdrawTransaction(cardAccount.CardNumber, cardAccount.CardPin, withdrawValue));
        }
Пример #15
0
        public static void FillCardAccountsWithFakeData(AtmEntities dbContext, CardAccountRepository cardAccountsRepo, IList <int> cardHolderIds)
        {
            dbContext.Configuration.AutoDetectChangesEnabled = false;
            dbContext.Configuration.ValidateOnSaveEnabled    = false;

            var randomDataProvider    = new RandomDataProvider();
            var numberProvider        = RandomNumberProvider.GetInstance();
            var registeredCardNumbers = new HashSet <long>();
            var currentCardNumbers    = cardAccountsRepo.GetAll().Select(ca => ca.CardNumber).ToArray();
            int currentCardsCount     = 0;

            foreach (var number in currentCardNumbers)
            {
                if (string.IsNullOrEmpty(number))
                {
                    continue;
                }

                registeredCardNumbers.Add(long.Parse(number));
                currentCardsCount += 1;
            }

            int length = FakeDataCount - currentCardsCount;

            for (int i = 0; i < length; i++)
            {
                CardAccount currentCardAccount = GenerateCardAccount(registeredCardNumbers, cardHolderIds, numberProvider, randomDataProvider);

                cardAccountsRepo.Insert(currentCardAccount);

                if (i % 133 == 0) // Randomly chosen value
                {
                    dbContext.SaveChanges();
                }
            }

            dbContext.Configuration.AutoDetectChangesEnabled = true;
            dbContext.Configuration.ValidateOnSaveEnabled    = true;
        }
Пример #16
0
        public static void FillCardAccountsWithFakeData(AtmEntities dbContext, CardAccountRepository cardAccountsRepo, IList<int> cardHolderIds)
        {
            dbContext.Configuration.AutoDetectChangesEnabled = false;
            dbContext.Configuration.ValidateOnSaveEnabled = false;

            var randomDataProvider = new RandomDataProvider();
            var numberProvider = RandomNumberProvider.GetInstance();
            var registeredCardNumbers = new HashSet<long>();
            var currentCardNumbers = cardAccountsRepo.GetAll().Select(ca => ca.CardNumber).ToArray();
            int currentCardsCount = 0;

            foreach (var number in currentCardNumbers)
            {
                if (string.IsNullOrEmpty(number))
                {
                    continue;
                }

                registeredCardNumbers.Add(long.Parse(number));
                currentCardsCount += 1;
            }

            int length = FakeDataCount - currentCardsCount;
            for (int i = 0; i < length; i++)
            {
                CardAccount currentCardAccount = GenerateCardAccount(registeredCardNumbers, cardHolderIds, numberProvider, randomDataProvider);

                cardAccountsRepo.Insert(currentCardAccount);

                if (i % 133 == 0) // Randomly chosen value
                {
                    dbContext.SaveChanges();
                }
            }

            dbContext.Configuration.AutoDetectChangesEnabled = true;
            dbContext.Configuration.ValidateOnSaveEnabled = true;
        }
Пример #17
0
 public CardAccountService(IDbSession session, CardAccountRepository acntRep, CardInfoRepository cardRep) : base(session, acntRep)
 {
     _acntRep = acntRep;
     _cardRep = cardRep;
 }