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>()));
        }
示例#2
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 == "Произошла ошибка, повторите попытку");
        }
示例#3
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);
            }
        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 == "*****@*****.**");
        }
示例#5
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);
            }
示例#6
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);
            }
示例#7
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);
            }
示例#8
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);
            }
示例#9
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);
            }
示例#10
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);
            }
示例#11
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);
            }
示例#12
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);
            }
示例#13
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 == "Неправильный старый пароль");
        }
示例#14
0
        public async Task Valid_Login()
        {
            UserManagerMock.Setup(m => m.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(new IdentityUser());
            SignInManagerMock.Setup(m => m.SignOutAsync());
            SignInManagerMock.Setup(m => m.PasswordSignInAsync(It.IsAny <IdentityUser>(), It.IsAny <string>(), false, false))
            .ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.Success);

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

            var result = await target.Login(new UserInfoViewModel(), "returnUrl") as RedirectResult;

            Assert.NotNull(result);
            Assert.Equal("returnUrl", result.Url);
        }
示例#15
0
        public async Task Invalid_Password_Or_User_Name_Login()
        {
            UserManagerMock.Setup(m => m.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(new IdentityUser());
            SignInManagerMock.Setup(m => m.SignOutAsync());
            SignInManagerMock.Setup(m => m.PasswordSignInAsync(It.IsAny <IdentityUser>(), It.IsAny <string>(), false, false))
            .ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.Failed);

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

            var result = await target.Login(new UserInfoViewModel(), "returnUrl") as ViewResult;

            Assert.NotNull(result);
            Assert.Equal(1, target.ModelState.ErrorCount);
        }
示例#16
0
        public async Task Change_Password_Invalid_Coincidence()
        {
            UserManagerMock.Setup(m => m.GetUserAsync(It.IsAny <ClaimsPrincipal>())).ReturnsAsync(new IdentityUser());
            UserManagerMock.Setup(m => m.CheckPasswordAsync(It.IsAny <IdentityUser>(), It.IsAny <string>()))
            .ReturnsAsync(true);

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

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

            Assert.NotNull(result);
            Assert.False(target.ModelState.IsValid);
            Assert.True(target.ModelState[""].Errors[0].ErrorMessage == "Пароли не совпадают");
        }
        public void Show_Two_Users()
        {
            UserManagerMock.Setup(m => m.Users)
            .Returns(new IdentityUser[]
            {
                new IdentityUser("User1"),
                new IdentityUser("User2")
            }
                     .AsQueryable());

            var target = new UserController(UserManagerMock.Object, null, null, null, null, null);

            var resultModel = (target.AllUsers() as ViewResult).Model as IEnumerable <IdentityUser>;
            var resultArr   = resultModel.ToArray();

            Assert.Equal(2, resultArr.Length);
            Assert.True(resultArr[0].UserName == "User1");
            Assert.True(resultArr[1].UserName == "User2");
        }
        public async Task Create_User_With_Bad_Login()
        {
            UserManagerMock.Setup(m => m.FindByEmailAsync(It.IsAny <string>()))
            .ReturnsAsync(new IdentityUser());

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

            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 ViewResult;

            Assert.NotNull(resultAction);
        }
示例#19
0
        public async Task Change_Password_Bad_New()
        {
            UserManagerMock.Setup(m => m.GetUserAsync(It.IsAny <ClaimsPrincipal>())).ReturnsAsync(new IdentityUser());
            UserManagerMock.Setup(m => m.CheckPasswordAsync(It.IsAny <IdentityUser>(), It.IsAny <string>()))
            .ReturnsAsync(true);

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

            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 == "Новый пароль не соответствует требованиям");
        }
        public void Cannot_Delete_One_User()
        {
            IdentityUser[] users = new IdentityUser[]
            {
                new IdentityUser("User1")
                {
                    Id = "9E922BD2-4395-4524-8264-4F218D600E9D"
                },
                new IdentityUser("User2")
                {
                    Id = "4192883F-AA46-42EA-B1DD-73E8CAA7A7B3"
                }
            };

            UserManagerMock.Setup(m => m.Users).Returns(users.AsQueryable());
            UserManagerMock.Setup(m => m.DeleteAsync(It.IsAny <IdentityUser>()))
            .ReturnsAsync(IdentityResult.Failed());

            var target       = new UserController(UserManagerMock.Object, null, null, null, null, null);
            var resultAction = (target.Delete(Guid.Parse(users[0].Id))).Result as RedirectToActionResult;

            Assert.Null(resultAction);
        }
示例#21
0
        public async Task Change_Password_Valid()
        {
            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.Success);

            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 RedirectToActionResult;

            Assert.NotNull(result);
            Assert.True(target.ModelState.IsValid);
        }