Пример #1
0
        public async Task Orders_WithIncorrectUsername_ShouldReturnToIndex()
        {
            string errorMessage = null;

            //Arrange
            Mock <UserManager <User> > userManager = UserManagerMock.New();

            userManager
            .Setup(u => u.FindByNameAsync(username))
            .ReturnsAsync(default(User));

            Mock <ITempDataDictionary> tempData = new Mock <ITempDataDictionary>();

            tempData
            .SetupSet(t => t[TempDataErrorMessageKey] = It.IsAny <string>())
            .Callback((string key, object message) => errorMessage = message as string);

            UsersController usersController = new UsersController(null, userManager.Object, null, null, null)
            {
                TempData = tempData.Object
            };

            //Act
            var result = await usersController.Orders(username);

            //Assert
            errorMessage.Should().Be(string.Format(EntityNotFound, UserEntity));

            result.Should().BeOfType <RedirectToActionResult>();

            result.As <RedirectToActionResult>().ActionName.Should().Be("Index");
        }
        public async Task Edit_Not_Admin()
        {
            IdentityUser[] users = new IdentityUser[]
            {
                new IdentityUser("User1")
                {
                    Id = "9E922BD2-4395-4524-8264-4F218D600E9D", Email = "*****@*****.**"
                },
                new IdentityUser("User2")
                {
                    Id = "4192883F-AA46-42EA-B1DD-73E8CAA7A7B3", Email = "*****@*****.**"
                }
            };

            UnitOfWorkMock.Setup(m => m.Customers.GetItem(It.IsAny <Guid>()))
            .Returns(new Customer()
            {
                Name = "NameCustomer"
            });

            UserManagerMock.Setup(m => m.FindByIdAsync(It.IsAny <string>())).ReturnsAsync(users[0]);
            UserManagerMock.Setup(m => m.IsInRoleAsync(It.IsAny <IdentityUser>(), "Admin")).ReturnsAsync(false);

            var target       = new UserController(UserManagerMock.Object, null, null, null, UnitOfWorkMock.Object, null);
            var resultAction = await target.Edit(Guid.Parse(users[0].Id));

            var resultModel = (resultAction as ViewResult).Model as UserInfoViewModel;

            Assert.True(resultModel.IsAdmin == false);
            Assert.True(resultModel.Customer.Name == "NameCustomer");
            Assert.True(resultModel.Email == "*****@*****.**");
        }
        public async Task Update_User()
        {
            UserManagerMock.Setup(m => m.FindByEmailAsync(It.IsAny <string>()))
            .ReturnsAsync(new IdentityUser());

            UserManagerMock.Setup(m => m.UpdateAsync(It.IsAny <IdentityUser>()))
            .ReturnsAsync(IdentityResult.Success);

            UserValidatorMock.Setup(m => m.ValidateAsync(UserManagerMock.Object, It.IsAny <IdentityUser>()))
            .ReturnsAsync(IdentityResult.Success);

            UnitOfWorkMock.Setup(um => um.Customers.UpdateItem(It.IsAny <Customer>())).Verifiable();
            UnitOfWorkMock.Setup(um => um.SaveChanges()).Verifiable();
            var target = new UserController(UserManagerMock.Object, null, null, UserValidatorMock.Object,
                                            UnitOfWorkMock.Object, null);

            var resultAction = await target.Create(new UserInfoViewModel()
            {
                Customer = new Customer(),
                Email    = "*****@*****.**",
                Password = "******",
                IsAdmin  = false
            }) as RedirectToActionResult;

            Assert.NotNull(resultAction);
            UnitOfWorkMock.Verify(e => e.SaveChanges());
            UnitOfWorkMock.Verify(e => e.Customers.UpdateItem(It.IsAny <Customer>()));
        }
Пример #4
0
        public async Task Profile_WithPageBiggerThanOneAndBiggerThanTotalPages_ShouldReturnToIndex()
        {
            const int page          = 10;
            const int totalElements = 10;

            //Arrange
            Mock <UserManager <User> > userManager = UserManagerMock.New();

            userManager
            .Setup(u => u.FindByNameAsync(username))
            .ReturnsAsync(user);

            Mock <IUserService> userService = new Mock <IUserService>();

            userService
            .Setup(u => u.GetProfileByUsernameAsync(username, page))
            .ReturnsAsync(new UserProfileServiceModel());
            userService
            .Setup(u => u.TotalOrdersAsync(username))
            .ReturnsAsync(totalElements);

            UsersController usersController = new UsersController(userManager.Object, userService.Object);

            //Act
            var result = await usersController.Profile(username, page);

            //Assert
            result.Should().BeOfType <RedirectToActionResult>();

            result.As <RedirectToActionResult>().ActionName.Should().Be("Profile");
            result.As <RedirectToActionResult>().RouteValues.Keys.Should().Contain("username");
            result.As <RedirectToActionResult>().RouteValues.Values.Should().Contain(username);
        }
Пример #5
0
            public async Task WhenSuccessfulReturnsTrue()
            {
                UserManagerMock.Setup(um => um.GenerateEmailConfirmationTokenAsync(It.IsAny <GametekiUser>())).ReturnsAsync("Code");
                var result = await Service.SendActivationEmailAsync(TestUtils.GetRandomUser(), new AccountVerificationModel());

                Assert.IsTrue(result);
            }
Пример #6
0
        public async Task Change_Password_Some_Error()
        {
            UserManagerMock.Setup(m => m.GetUserAsync(It.IsAny <ClaimsPrincipal>())).ReturnsAsync(new IdentityUser());
            UserManagerMock.Setup(m => m.CheckPasswordAsync(It.IsAny <IdentityUser>(), It.IsAny <string>()))
            .ReturnsAsync(true);

            UserManagerMock.Setup(m => m.ChangePasswordAsync(It.IsAny <IdentityUser>(),
                                                             It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Failed());

            PasswordValidatorMock.Setup(m => m.ValidateAsync(UserManagerMock.Object,
                                                             It.IsAny <IdentityUser>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success);

            var target = new AccountController(UserManagerMock.Object,
                                               SignInManagerMock.Object, PasswordValidatorMock.Object);

            var result = await target.ChangePassword(new PasswordChangeViewModel()
            {
                NewPassword       = "******",
                RepeatNewPassword = "******"
            }) as ViewResult;

            Assert.NotNull(result);
            Assert.False(target.ModelState.IsValid);
            Assert.True(target.ModelState[""].Errors[0].ErrorMessage == "Произошла ошибка, повторите попытку");
        }
Пример #7
0
        public async Task EditProfileGet_WithCorrectUsername_ShouldReturnValidViewModel()
        {
            //Arrange
            Mock <UserManager <User> > userManager = UserManagerMock.New();

            userManager
            .Setup(u => u.FindByNameAsync(username))
            .ReturnsAsync(user);

            Mock <IUserService> userService = new Mock <IUserService>();

            userService
            .Setup(u => u.GetEditProfileByUsernameAsync(username))
            .ReturnsAsync(new UserEditProfileServiceModel());

            UsersController usersController = new UsersController(userManager.Object, userService.Object);

            //Assert
            var result = await usersController.EditProfile(username);

            //Assert
            result.Should().BeOfType <ViewResult>();

            result.As <ViewResult>().Model.Should().BeOfType <UserEditProfileServiceModel>();
        }
        public async Task Permission_WithIncorrectUsername_ShouldReturnErrorMessageAndReturntoIndex()
        {
            string errorMessage = null;

            //Arrange
            Mock <UserManager <User> > userManager = UserManagerMock.New();

            userManager
            .Setup(u => u.FindByNameAsync(username))
            .ReturnsAsync(default(User));

            Mock <ITempDataDictionary> tempData = new Mock <ITempDataDictionary>();

            tempData
            .SetupSet(t => t[TempDataErrorMessageKey] = It.IsAny <string>())
            .Callback((string key, object message) => errorMessage = message as string);

            UsersController usersController = new UsersController(userManager.Object, null)
            {
                TempData = tempData.Object
            };

            //Assert
            var result = await usersController.Permission(username);

            //Assert
            errorMessage.Should().Be(InvalidIdentityDetailsErroMessage);

            result.Should().BeOfType <RedirectToActionResult>();

            result.As <RedirectToActionResult>().ActionName.Should().Be("Index");
        }
        public async Task Permission_WithCorrectUsername_ShouldReturnToIndex()
        {
            //Arrange
            Mock <UserManager <User> > userManager = UserManagerMock.New();

            userManager
            .Setup(u => u.FindByNameAsync(username))
            .ReturnsAsync(user);

            Mock <IModeratorUserService> moderatorUserService = new Mock <IModeratorUserService>();

            moderatorUserService
            .Setup(m => m.ChangePermission(user))
            .Returns(Task.CompletedTask);

            UsersController usersController = new UsersController(userManager.Object, moderatorUserService.Object);

            //Assert
            var result = await usersController.Permission(username);

            //Assert
            result.Should().BeOfType <RedirectToActionResult>();

            result.As <RedirectToActionResult>().ActionName.Should().Be("Index");
        }
Пример #10
0
        public async Task ChangePasswordGet_WithCorrectUsernameAndUserWithPassword_ShouldReturnValidViewModel()
        {
            //Arrange
            Mock <UserManager <User> > userManager = UserManagerMock.New();

            userManager
            .Setup(u => u.FindByNameAsync(username))
            .ReturnsAsync(user);
            userManager
            .Setup(u => u.HasPasswordAsync(user))
            .ReturnsAsync(true);

            Mock <IUserService> userService = new Mock <IUserService>();

            userService
            .Setup(u => u.GetChangePasswordByUsernameAsync(username))
            .ReturnsAsync(new UserChangePasswordServiceModel());

            UsersController usersController = new UsersController(userManager.Object, userService.Object);

            //Assert
            var result = await usersController.ChangePassword(username);

            //Assert
            result.Should().BeOfType <ViewResult>();

            result.As <ViewResult>().Model.Should().BeOfType <UserChangePasswordServiceModel>();
        }
Пример #11
0
        public async Task AddUserPost_ShouldReturnRedirectToActionWhenModelStateIsValid()
        {
            // Arrange
            string tempDataSuccessMessage = null;

            RegisterViewModel formModel = new RegisterViewModel()
            {
                Email    = FirstUserEmail,
                Username = FirstUserUsername,
            };

            Mock <UserManager <User> > userManager = UserManagerMock.GetNew();

            userManager
            .Setup(x => x.CreateAsync(It.IsAny <User>(), It.IsAny <string>()))
            .ReturnsAsync(IdentityResult.Success);

            Mock <ITempDataDictionary> tempData = new Mock <ITempDataDictionary>();

            tempData.SetupSet(t => t["SuccessMessage"] = It.IsAny <string>())
            .Callback((string key, object successMessage) => tempDataSuccessMessage = successMessage as string);

            HomeController controller = new HomeController(null, userManager.Object, null);

            controller.TempData = tempData.Object;

            // Act
            IActionResult actionResult = await controller.AddUser(formModel);

            // Assert
            actionResult.Should().BeOfType <RedirectToActionResult>();
            actionResult.As <RedirectToActionResult>().ActionName.Should().Be("AllUsers");

            tempDataSuccessMessage.Should().Be(AddUserMessageSuccessfull);
        }
Пример #12
0
        public async Task AddUserPost_ShouldReturnViewWithModelWhenCreateAsyncFailed()
        {
            // Arrange
            RegisterViewModel formModel = new RegisterViewModel()
            {
                Username = "******"
            };

            Mock <UserManager <User> > userManager = UserManagerMock.GetNew();

            userManager
            .Setup(x => x.CreateAsync(It.IsAny <User>(), It.IsAny <string>()))
            .ReturnsAsync(IdentityResult.Failed(new IdentityError {
                Description = "test"
            }));

            HomeController controller = new HomeController(null, userManager.Object, null);

            // Act
            IActionResult actionResult = await controller.AddUser(formModel);

            // Assert
            actionResult.Should().BeOfType <ViewResult>();

            object model = actionResult.As <ViewResult>().Model;

            model.Should().BeOfType <RegisterViewModel>();

            var returnedModel = model.As <RegisterViewModel>();

            returnedModel.Username.Should().Be(formModel.Username);
        }
Пример #13
0
        public async Task AddUser_AfterAdded_Success()
        {
            AddUserService addUserService = new AddUserService(
                UserManagerMock.Create().WithCreateSuccess().Object,
                SignInManagerMock.Create().Object,
                IEmailConfirmationServiceMock.Create().SendVerificationMailSuccess().Object,
                IGroupUserServiceMock.Create().Object,
                IAddUserFilterMock.Create().BeforeAdd_Success().AfterAdded_Success().Object,
                IBaseDAOMock<AppUserEntity>.Create().Object,
                IBaseDAOMock<InviteEntity>.Create().Object,
                IBaseDAOMock<RoleEntity>.Create().Object,
                IOptionsMock<IdentityUIEndpoints>.Create().DefaultValue().Object,
                IValidatorMock<NewUserRequest>.Create().Object,
                IValidatorMock<RegisterRequest>.Create().Object,
                IValidatorMock<AcceptInviteRequest>.Create().Object,
                IValidatorMock<ExternalLoginRegisterRequest>.Create().Object,
                IValidatorMock<GroupBaseUserRegisterRequest>.Create().Object,
                IValidatorMock<BaseRegisterRequest>.Create().Validate_Valid().Object,
                IValidatorMock<IUserAttributeRequest>.Create().Validate_Valid().Object,
                NullLogger<AddUserService>.Instance);

            BaseRegisterRequest baseRegisterRequest = new Fixture()
                .Build<BaseRegisterRequest>()
                .Create();

            Result<AppUserEntity> result = await addUserService.AddUser(baseRegisterRequest);

            result.Success.Should().BeTrue();
        }
Пример #14
0
            public async Task WhenCreateReturnsSuccessReturnsTrue()
            {
                UserManagerMock.Setup(um => um.CreateAsync(It.IsAny <GametekiUser>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success);

                var result = await Service.RegisterUserAsync(TestUtils.GetRandomAccount(), "password");

                Assert.IsTrue(result.Success);
            }
Пример #15
0
            public async Task WhenCreateThrowsExceptionReturnsFalse()
            {
                UserManagerMock.Setup(um => um.CreateAsync(It.IsAny <GametekiUser>(), It.IsAny <string>())).ThrowsAsync(new Exception());

                var result = await Service.RegisterUserAsync(TestUtils.GetRandomAccount(), "password");

                Assert.IsFalse(result.Success);
            }
Пример #16
0
            public async Task WhenTokenGenerateFailsReturnsFalse()
            {
                UserManagerMock.Setup(um => um.GenerateEmailConfirmationTokenAsync(It.IsAny <GametekiUser>())).ThrowsAsync(new Exception());

                var result = await Service.SendActivationEmailAsync(TestUtils.GetRandomUser(), new AccountVerificationModel());

                Assert.IsFalse(result);
            }
        public CoursesContollerCategoryTests()
        {
            this.db          = new CoursesP2PDbContext(MemoryDatabase.OptionBuilder());
            this.userManager = UserManagerMock.UserManagerMockTest();

            this.coursesService    = new CoursesService(db);
            this.coursesController = new CoursesController(coursesService, reviewService, userManager, null, null);
        }
Пример #18
0
            public async Task WhenPasswordChangeSucceedsReturnsTrue()
            {
                UserManagerMock.Setup(um => um.ChangePasswordAsync(It.IsAny <GametekiUser>(), It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success);

                var result = await Service.UpdateUserAsync(new GametekiUser(), "old", "new");

                Assert.IsTrue(result.Succeeded);
            }
Пример #19
0
            public async Task WhenConfirmEmailSucceedsReturnsTrue()
            {
                UserManagerMock.Setup(um => um.FindByIdAsync(It.IsAny <string>())).ReturnsAsync(TestUtils.GetRandomUser());
                UserManagerMock.Setup(um => um.ConfirmEmailAsync(It.IsAny <GametekiUser>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success);

                var result = await Service.ValidateUserAsync("UserId", "token");

                Assert.IsTrue(result);
            }
Пример #20
0
            public async Task WhenRenderFailsReturnsFalse()
            {
                UserManagerMock.Setup(um => um.GenerateEmailConfirmationTokenAsync(It.IsAny <GametekiUser>())).ReturnsAsync("Code");
                ViewRenderServiceMock.Setup(vr => vr.RenderToStringAsync(It.IsAny <string>(), It.IsAny <AccountVerificationModel>())).ThrowsAsync(new Exception());

                var result = await Service.SendActivationEmailAsync(TestUtils.GetRandomUser(), new AccountVerificationModel());

                Assert.IsFalse(result);
            }
Пример #21
0
            public async Task WhenIncorrectPasswordReturnsNull()
            {
                var user = TestUsers.First();

                UserManagerMock.Setup(um => um.CheckPasswordAsync(It.IsAny <GametekiUser>(), It.IsAny <string>())).ReturnsAsync(false);

                var result = await Service.LoginUserAsync(user.UserName, "password", "127.0.0.1");

                Assert.IsNull(result);
            }
        public async Task ChangeUserRolesPost_ShouldReturnNotFoundWhenInvalidUserId()
        {
            // Arrange
            Mock <UserManager <User> > userManager = UserManagerMock.GetNew();
            UsersController            controller  = new UsersController(null, null, userManager.Object);

            // Act
            IActionResult actionResult = await controller.ChangeUserRoles(InvalidUserId, new ChangeUserRolesFormModel());

            // Assert
            actionResult.Should().BeOfType <NotFoundResult>();
        }
Пример #23
0
        public async Task ManageRolesPost_ShouldReturnNotFoundWhenInvalidUserId()
        {
            // Arrange
            Mock <UserManager <User> > userManager = UserManagerMock.GetNew();
            HomeController             controller  = new HomeController(null, userManager.Object, null);

            // Act
            IActionResult actionResult = await controller.ManageRoles(InvalidUserId, new IdentityRoleViewModel());

            // Assert
            actionResult.Should().BeOfType <NotFoundResult>();
        }
Пример #24
0
        public async Task DeleteUserPost_ShouldReturnNotFoundWhenInvalidUserId()
        {
            // Arrange
            Mock <UserManager <User> > userManager = UserManagerMock.GetNew();

            HomeController controller = new HomeController(null, userManager.Object, null);

            // Act
            IActionResult actionResult = await controller.DeleteUser(InvalidUserId);

            // Assert
            actionResult.Should().BeOfType <NotFoundResult>();
        }
Пример #25
0
            public async Task WhenCorrectPasswordReturnsResult()
            {
                var user = TestUsers.First();

                UserManagerMock.Setup(um => um.CheckPasswordAsync(It.IsAny <GametekiUser>(), It.IsAny <string>())).ReturnsAsync(true);

                var result = await Service.LoginUserAsync(user.UserName, "password", "127.0.0.1");

                Assert.IsNotNull(result);
                Assert.AreEqual(user, result.User);
                Assert.IsNotNull(result.Token);
                Assert.IsNotNull(result.RefreshToken);
            }
Пример #26
0
    public static Mock <SignInManager <User> > CreateMock()
    {
        var mock = new Mock <SignInManager <User> >(
            UserManagerMock.CreateMock().Object,
            new HttpContextAccessor(),
            new Mock <IUserClaimsPrincipalFactory <User> >().Object,
            new Mock <IOptions <IdentityOptions> >().Object,
            new Mock <ILogger <SignInManager <User> > >().Object,
            new Mock <IAuthenticationSchemeProvider>().Object,
            new Mock <IUserConfirmation <User> >().Object);

        return(mock);
    }
Пример #27
0
        public async Task Details_WithCorrectUsername_ShouldReturnValidViewModel()
        {
            //Arrange
            IQueryable <IdentityRole> roles = new List <IdentityRole>()
            {
                new IdentityRole("firstRole"), new IdentityRole("secondRole"), new IdentityRole("thirdRole")
            }.AsQueryable();

            Mock <RoleManager <IdentityRole> > roleManager = RoleManagerMock.New();

            roleManager
            .Setup(r => r.Roles)
            .Returns(roles);

            Mock <UserManager <User> > userManager = UserManagerMock.New();

            userManager
            .Setup(u => u.FindByNameAsync(username))
            .ReturnsAsync(user);
            userManager
            .Setup(u => u.GetRolesAsync(user))
            .ReturnsAsync(new List <string>()
            {
                "firstRole", "secondRole", "thirdRole"
            });

            Mock <IAdminUserService> adminUserService = new Mock <IAdminUserService>();

            adminUserService
            .Setup(a => a.GetDetailsByUsernameAsync(username))
            .ReturnsAsync(new AdminUserDetailsServiceModel());

            UsersController usersController = new UsersController(roleManager.Object, userManager.Object, adminUserService.Object, null, null);

            //Assert
            var result = await usersController.Details(username);

            //Assert
            result.Should().BeOfType <ViewResult>();

            result.As <ViewResult>().Model.Should().BeOfType <AdminUserDetailsServiceModel>();

            AdminUserDetailsServiceModel model = result.As <ViewResult>().Model.As <AdminUserDetailsServiceModel>();

            model.CurrentRoles.First().Text.Should().Be(roles.First().Name);
            model.CurrentRoles.First().Value.Should().Be(roles.First().Name);
            model.CurrentRoles.Last().Text.Should().Be(roles.Last().Name);
            model.CurrentRoles.Last().Value.Should().Be(roles.Last().Name);
            model.AllRoles.Should().HaveCount(0);
        }
Пример #28
0
        public async Task Change_Password_Invalid_Old()
        {
            UserManagerMock.Setup(m => m.GetUserAsync(It.IsAny <ClaimsPrincipal>())).ReturnsAsync(new IdentityUser());
            UserManagerMock.Setup(m => m.CheckPasswordAsync(It.IsAny <IdentityUser>(), It.IsAny <string>()))
            .ReturnsAsync(false);

            var target = new AccountController(UserManagerMock.Object,
                                               SignInManagerMock.Object, PasswordValidatorMock.Object);

            var result = await target.ChangePassword(new PasswordChangeViewModel()) as ViewResult;

            Assert.NotNull(result);
            Assert.False(target.ModelState.IsValid);
            Assert.True(target.ModelState[""].Errors[0].ErrorMessage == "Неправильный старый пароль");
        }
        public async Task ProfileShouldReturnNotFoundWithInvalidUserName()
        {
            //Arrenge
            var userManager = UserManagerMock.New();

            var controller = new UsersController(null, userManager.Object);

            //Act

            var result = await controller.Profile("Username");

            //Assert
            result.Should()
            .BeOfType <NotFoundResult>();
        }
        public AccountServiceUnitTests()
        {
            _testUser    = InMemoryDataGenerator.TestUser;
            _context     = InMemoryDataGenerator.CreateAndInitializeInMemoryDatabaseContext(Guid.NewGuid().ToString(), _testUser, insertIngredientData: false);
            _userManager = UserManagerMock.MockUserManager <PantryPlannerUser>().Object;

            _signInManager = new SignInManager <PantryPlannerUser>(_userManager
                                                                   , new Mock <IHttpContextAccessor>().Object
                                                                   , new Mock <IUserClaimsPrincipalFactory <PantryPlannerUser> >().Object
                                                                   , new Mock <IOptions <IdentityOptions> >().Object
                                                                   , new Mock <ILogger <SignInManager <PantryPlannerUser> > >().Object
                                                                   , new Mock <IAuthenticationSchemeProvider>().Object);

            _service = new AccountService(_userManager, _signInManager, null);
        }