public void Add_writes_to_database() { // Arrange var options = new DbContextOptionsBuilder <SimpleBankDbContext>() .UseInMemoryDatabase(databaseName: "Add_writes_to_database") .Options; // Act using (var context = new SimpleBankDbContext(options)) { var service = new UserService(context); var task = Task.Run(async() => { return(await service.CreateNewUser(new BankUser { AccountNumber = "test", AccountName = "tester tests", Balance = 10000, Password = "******", CreatedDate = DateTime.Now })); }); var isCreatedSuccess = task.Result; Assert.True(isCreatedSuccess == 1); } // Assert using (var context = new SimpleBankDbContext(options)) { Assert.Equal(1, context.BankUsers.Count()); Assert.Equal("tester tests", context.BankUsers.Single().AccountName); } }
public static void Initialize(SimpleBankDbContext context) { context.Database.EnsureCreated(); // Look for any users. if (context.BankUsers.Any()) { return; // DB has been seeded } var users = new BankUser[] { new BankUser { AccountName = "edward", AccountNumber = "account1", Balance = 1000, Password = "******", CreatedDate = DateTime.Now }, new BankUser { AccountName = "will", AccountNumber = "account2", Balance = 50, Password = "******", CreatedDate = DateTime.Now }, }; foreach (BankUser s in users) { context.BankUsers.Add(s); } context.SaveChanges(); }
public SimpleBankDbContext CreateSimpleBankDbContextForTesting() { this._context = new SimpleBankDbContext(_dbContextBuilder.Options); // ensure db created _context.Database.EnsureCreated(); return(_context); }
public void Withdraw_with_negative_amount() { // Arrange var fakeTimestamp = BitConverter.GetBytes(DateTime.Now.Ticks); var options = new DbContextOptionsBuilder <SimpleBankDbContext>() .UseInMemoryDatabase(databaseName: "Withdraw_with_negative_amount") .Options; using (var context = new SimpleBankDbContext(options)) { var service = new UserService(context); var task = Task.Run(async() => { return(await service.CreateNewUser(new BankUser { AccountNumber = "test", AccountName = "tester tests", Balance = 10000, Password = "******", CreatedDate = DateTime.Now, Timestamp = fakeTimestamp })); }); var isCreatedSuccess = task.Result; Assert.True(isCreatedSuccess == 1); Assert.True(context.BankUsers.Single(x => x.AccountNumber == "test") != null); } // Act using (var context = new SimpleBankDbContext(options)) { var service = new UserService(context); var task = Task.Run(async() => { return(await service.Withdraw( context.BankUsers.Single(x => x.AccountNumber == "test").ID, -100, fakeTimestamp )); }); // Assert var result = task.Result; Assert.True(result.ErrorList.Any()); } }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, SimpleBankDbContext context) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); app.UseApplicationInsightsRequestTelemetry(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseApplicationInsightsExceptionTelemetry(); app.UseStaticFiles(); // configure Cookies Identity app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationScheme = "SimpleBankCookies", LoginPath = new PathString("/Home/Error/"), AccessDeniedPath = new PathString("/Home/Error/"), AutomaticAuthenticate = true, AutomaticChallenge = true }); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); // init Database DbInitializer.Initialize(context); }
private async Task <int> CreateUserTask(string accountName, string password, decimal balance, SimpleBankDbContext context) { return(await new UserService(context).CreateNewUser( new BankUser { AccountNumber = accountName, AccountName = accountName + password, Balance = balance, Password = password, CreatedDate = DateTime.Now })); }
public UserService(SimpleBankDbContext dbContext) { _context = dbContext; }
public TransferService(SimpleBankDbContext dbContext) { _context = dbContext; }
public void Transfer_with_exceeding_amount() { // Arrange var user1Timestamp = BitConverter.GetBytes(DateTime.Now.Ticks); var user2Timestamp = BitConverter.GetBytes(DateTime.Now.AddMilliseconds(1).Ticks); var options = new DbContextOptionsBuilder <SimpleBankDbContext>() .UseInMemoryDatabase(databaseName: "Transfer_with_exceeding_amount") .Options; using (var context = new SimpleBankDbContext(options)) { var service = new UserService(context); var user1CreatedOk = Task.Run(async() => { return(await service.CreateNewUser(new BankUser { AccountNumber = "user1", AccountName = "User 1", Balance = 10000, Password = "******", CreatedDate = DateTime.Now, Timestamp = user1Timestamp })); }); var isUser1CreatedSuccess = user1CreatedOk.Result; Assert.True(isUser1CreatedSuccess == 1); Assert.True(context.BankUsers.Single(x => x.AccountNumber == "user1") != null); var user2CreatedOk = Task.Run(async() => { return(await service.CreateNewUser(new BankUser { AccountNumber = "user2", AccountName = "User 2", Balance = 100, Password = "******", CreatedDate = DateTime.Now, Timestamp = user2Timestamp })); }); var isUser2CreatedSuccess = user1CreatedOk.Result; Assert.True(isUser1CreatedSuccess == 1); Assert.True(context.BankUsers.Single(x => x.AccountNumber == "user2") != null); } // Act using (var context = new SimpleBankDbContext(options)) { var service = new UserService(context); var task = Task.Run(async() => { return(await service.Transfer( context.BankUsers.Single(x => x.AccountNumber == "user1").ID, context.BankUsers.Single(x => x.AccountNumber == "user2").ID, 20000, user1Timestamp, user2Timestamp )); }); // Assert var result = task.Result; Assert.True(result.ErrorList.Any()); } }