public async Task ChecksIfGetDriverInfoFindsDriverById() { var options = new DbContextOptionsBuilder <ElectricTravelDbContext>() .UseInMemoryDatabase(databaseName: "DriversTestDb").Options; using var dbContext = new ElectricTravelDbContext(options); UserStore <ElectricTravelUser> userStore = new UserStore <ElectricTravelUser>(dbContext, null); UserManager <ElectricTravelUser> userManager = new UserManager <ElectricTravelUser>(userStore, null, null, null, null, null, null, null, null); using var userRepo = new EfDeletableEntityRepository <ElectricTravelUser>(dbContext); using var travelRepo = new EfDeletableEntityRepository <SharedTravelAdvert>(dbContext); using var imageTypeRepo = new EfDeletableEntityRepository <ImageType>(dbContext); var service = new UsersService(userRepo, travelRepo, imageTypeRepo, userManager); var user = new ElectricTravelUser { Email = "*****@*****.**", UserName = "******", FirstName = "Elmo", LastName = "Elmos", }; await userRepo.AddAsync(user); await userRepo.SaveChangesAsync(); var result = service.GetDriverInfo <DriverInfoViewModel>(user.Id); Assert.NotNull(result); }
public async Task CheckIfGetUserByUserNameFindsUser() { var options = new DbContextOptionsBuilder <ElectricTravelDbContext>() .UseInMemoryDatabase(databaseName: "DriversTestDb").Options; using var dbContext = new ElectricTravelDbContext(options); UserStore <ElectricTravelUser> userStore = new UserStore <ElectricTravelUser>(dbContext, null); UserManager <ElectricTravelUser> userManager = new UserManager <ElectricTravelUser>(userStore, null, null, null, null, null, null, null, null); using var userRepo = new EfDeletableEntityRepository <ElectricTravelUser>(dbContext); using var travelRepo = new EfDeletableEntityRepository <SharedTravelAdvert>(dbContext); using var imageTypeRepo = new EfDeletableEntityRepository <ImageType>(dbContext); var service = new UsersService(userRepo, travelRepo, imageTypeRepo, userManager); var userName = "******"; var email = "*****@*****.**"; var user = new ElectricTravelUser { Email = email, UserName = userName, }; await userRepo.AddAsync(user); await userRepo.SaveChangesAsync(); var result = await service.GetUserByUserName(userName); Assert.NotNull(result); }
public async Task SeedAsync(ElectricTravelDbContext dbContext, IServiceProvider serviceProvider) { var userManager = serviceProvider .GetRequiredService <UserManager <ElectricTravelUser> >(); var admin = await userManager .FindByEmailAsync("*****@*****.**"); if (admin == null) { admin = new ElectricTravelUser() { UserName = "******", Email = "*****@*****.**", }; var result = await userManager .CreateAsync(admin, "123456Gosho"); if (result.Succeeded) { await userManager .AddToRoleAsync(admin, GlobalConstants.AdministratorRoleName); } } }
public async Task ChecksIfGetArticleByIdReturnsCorrectResult() { var options = new DbContextOptionsBuilder <ElectricTravelDbContext>() .UseInMemoryDatabase(databaseName: "ArticlesTestDb").Options; using var dbContext = new ElectricTravelDbContext(options); var user = new ElectricTravelUser { UserName = "******", }; var articleToAdd = new Article { ShortDescription = "asdasd", Content = "asdasdad", CreatedBy = user, Title = "asdas", }; dbContext.Users.Add(user); dbContext.Articles.Add(articleToAdd); dbContext.SaveChanges(); using var repo = new EfDeletableEntityRepository <Article>(dbContext); var service = new ArticlesService(repo); var article = await service.GetArticleById <ArticleViewModel>(articleToAdd.Id); Assert.NotNull(article); }
private async Task LoadAsync(ElectricTravelUser user) { var userName = await this.userManager.GetUserNameAsync(user); var phoneNumber = await this.userManager.GetPhoneNumberAsync(user); this.Username = userName; var userRoles = await this.userManager.GetRolesAsync(user); var roles = new List <string>(); if (userRoles[0] == GlobalConstants.DriverRoleName) { roles.Add(userRoles[0]); roles.Add(GlobalConstants.PassengerRoleName); } else if (userRoles[0] == GlobalConstants.PassengerRoleName) { roles.Add(userRoles[0]); roles.Add(GlobalConstants.DriverRoleName); } else { roles.Add(userRoles[0]); roles.Add(GlobalConstants.AdministratorRoleName); } this.Input = new InputModel { FirstName = user.FirstName, LastName = user.LastName, PhoneNumber = phoneNumber, Roles = roles, }; }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl ??= this.Url.Content("~/"); this.ExternalLogins = (await this.signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (this.ModelState.IsValid) { var user = new ElectricTravelUser { UserName = this.Input.UserName, Email = this.Input.Email, }; var result = await this.userManager.CreateAsync(user, this.Input.Password); if (result.Succeeded) { this.logger.LogInformation("User created a new account with password."); if (this.Input.UserRole == GlobalConstants.DriverRoleName) { await this.userManager.AddToRoleAsync(user, GlobalConstants.DriverRoleName); } else if (this.Input.UserRole == GlobalConstants.PassengerRoleName) { await this.userManager.AddToRoleAsync(user, GlobalConstants.PassengerRoleName); } var code = await this.userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = this.Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl }, protocol: this.Request.Scheme); await this.emailSender.SendEmailAsync(this.Input.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); if (this.userManager.Options.SignIn.RequireConfirmedAccount) { return(this.RedirectToPage("RegisterConfirmation", new { email = this.Input.Email, returnUrl = returnUrl })); } else { await this.signInManager.SignInAsync(user, isPersistent : false); return(this.LocalRedirect(returnUrl)); } } foreach (var error in result.Errors) { this.ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(this.Page()); }
public async Task ChecksIfGetAllArticlesReturnsCorrectCount() { var options = new DbContextOptionsBuilder <ElectricTravelDbContext>() .UseInMemoryDatabase(databaseName: "ArticlesTestDb").Options; using var dbContext = new ElectricTravelDbContext(options); var user = new ElectricTravelUser { Email = "*****@*****.**", UserName = "******", }; var article = new Article { ShortDescription = "asdffggasdasd", Content = "asdasdjnjad", CreatedBy = user, Title = "asdgggghasjkljkj", }; dbContext.Users.Add(user); dbContext.Articles.Add(article); dbContext.SaveChanges(); using var repo = new EfDeletableEntityRepository <Article>(dbContext); var service = new ArticlesService(repo); var articasdasle = await dbContext.Articles .FirstOrDefaultAsync(x => x.CreatedById == "goshkadsa"); var articles = await service.GetAllArticles <ArticleViewModel>(); var expectedResult = 2; var actualResult = articles.Count(); Assert.Equal(expectedResult, actualResult); }
public async Task UpdateUser(ElectricTravelUser user) { this.userRepository.Update(user); await this.userRepository.SaveChangesAsync(); }
public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null) { returnUrl = returnUrl ?? this.Url.Content("~/"); //// Get the information about the user from the external login provider var info = await this.signInManager.GetExternalLoginInfoAsync(); if (info == null) { this.ErrorMessage = "Error loading external login information during confirmation."; return(this.RedirectToPage("./Login", new { ReturnUrl = returnUrl })); } if (this.ModelState.IsValid) { var user = new ElectricTravelUser { UserName = this.Input.Email, Email = this.Input.Email }; var result = await this.userManager.CreateAsync(user); if (result.Succeeded) { await this.userManager.AddToRoleAsync(user, GlobalConstants.DriverRoleName); result = await this.userManager.AddLoginAsync(user, info); if (result.Succeeded) { this.logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider); var userId = await this.userManager.GetUserIdAsync(user); var code = await this.userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = this.Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = userId, code = code }, protocol: this.Request.Scheme); await this.emailSender.SendEmailAsync( this.Input.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); // If account confirmation is required, we need to show the link if we don't have a real email sender if (this.userManager.Options.SignIn.RequireConfirmedAccount) { return(this.RedirectToPage("./RegisterConfirmation", new { Email = this.Input.Email })); } await this.signInManager.SignInAsync(user, isPersistent : false, info.LoginProvider); return(this.LocalRedirect(returnUrl)); } } foreach (var error in result.Errors) { this.ModelState.AddModelError(string.Empty, error.Description); } } this.ProviderDisplayName = info.ProviderDisplayName; this.ReturnUrl = returnUrl; return(this.Page()); }