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>())); }
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 == "Произошла ошибка, повторите попытку"); }
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 == "*****@*****.**"); }
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); }
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 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); }
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); }
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); }
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); }
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 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); }
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 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); }
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); }
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); }
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); }
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); }