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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
        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,
            };
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 8
0
 public async Task UpdateUser(ElectricTravelUser user)
 {
     this.userRepository.Update(user);
     await this.userRepository.SaveChangesAsync();
 }
Exemplo n.º 9
0
        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());
        }