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); }
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 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"]); }
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 GetCardAccountEmptyId() { var client = GetMockClient(""); var repo = new CardAccountRepository(client.Object); Assert.Throws <ArgumentException>(() => repo.GetCardAccountById(string.Empty)); }
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); }
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); }
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); }
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); }
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"]); }
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)); }
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; }
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; }
public CardAccountService(IDbSession session, CardAccountRepository acntRep, CardInfoRepository cardRep) : base(session, acntRep) { _acntRep = acntRep; _cardRep = cardRep; }