public async Task Edit_RemoveUserFromRole_SuccessSaveChanges()
        {
            // Setup
            var usrMgr             = TestHelper.GetUserManager();
            var roleMgr            = TestHelper.GetRoleManager();
            var controller         = new RoleAdminController(roleMgr, usrMgr);
            RoleModification model = new RoleModification {
                RoleName = "Members"
            };
            var user1 = new AppUser {
                Id = Guid.NewGuid().ToString(), UserName = "******"
            };

            model.IdsToDelete = new string[] { user1.Id };
            usrMgr.FindByIdAsync(user1.Id).Returns(user1);
            usrMgr.RemoveFromRoleAsync(user1, model.RoleName).Returns(IdentityResult.Success);

            // Act
            IActionResult result = await controller.Edit(model);

            // Assert
            Assert.IsType <RedirectToActionResult>(result);
            Assert.Equal("Index", (result as RedirectToActionResult).ActionName);
            await usrMgr.Received().FindByIdAsync(user1.Id);

            await usrMgr.Received().RemoveFromRoleAsync(user1, model.RoleName);
        }
        public async Task Edit_AddUserToRole_FailedSaveChanges()
        {
            // Setup
            var usrMgr             = TestHelper.GetUserManager();
            var roleMgr            = TestHelper.GetRoleManager();
            var controller         = new RoleAdminController(roleMgr, usrMgr);
            RoleModification model = new RoleModification {
                RoleName = "Members"
            };
            var user1 = new AppUser {
                Id = Guid.NewGuid().ToString(), UserName = "******"
            };

            model.IdsToAdd = new string[] { user1.Id };
            usrMgr.FindByIdAsync(user1.Id).Returns(user1);
            var errorMessage = "Error 1";

            usrMgr.AddToRoleAsync(user1, model.RoleName).Returns(TestHelper.GetIdentityFailedResult(errorMessage));

            // Act
            IActionResult result = await controller.Edit(model);

            // Assert
            Assert.Equal(1, controller.ModelState.ErrorCount);
            Assert.Equal(errorMessage, controller.ModelState[""].Errors[0].ErrorMessage);
            await usrMgr.Received().FindByIdAsync(user1.Id);

            await usrMgr.Received().AddToRoleAsync(user1, model.RoleName);
        }
        public void Create_Get_AsksForCreateView()
        {
            RoleAdminController controller = GetNewRoleAdminController(null, null);

            ViewResult result = controller.Create() as ViewResult;

            Assert.AreEqual("Create", result.ViewName);
        }
        public async Task Edit_Post_ModelStateIsValid_RedirectToIndex()
        {
            RoleAdminController controller = GetNewRoleAdminController(null, null);

            RedirectToRouteResult result = (await controller.Edit(new RoleModificationModel {
            })) as RedirectToRouteResult;

            Assert.AreEqual("Index", result.RouteValues["action"]);
        }
        public void Index_AsksForIndexView()
        {
            Mock <RoleStore <AppRole> > roleStore = new Mock <RoleStore <AppRole> >();
            AppRoleManager      roleManager       = new AppRoleManager(roleStore.Object);
            RoleAdminController controller        = GetNewRoleAdminController(null, roleManager);

            ViewResult result = controller.Index() as ViewResult;

            Assert.AreEqual("Index", result.ViewName);
        }
示例#6
0
        public void RoleAdminController_Template_Test()
        {
            var template = new RoleAdminController(new SmartAppInfo {
                Id = ApplicationId
            });
            var output = template.TransformText();

            Assert.NotNull(output);
            Assert.NotEmpty(output);
            Assert.Contains($"namespace {ApplicationId}.Backend.Controllers", output);
            Assert.Contains("public partial class RoleAdminController : Controller", output);
        }
        public async Task Edit_Get_RoleNotFound_AsksForErrorView()
        {
            Mock <RoleStore <AppRole> > roleStore   = new Mock <RoleStore <AppRole> >();
            Mock <AppRoleManager>       roleManager = new Mock <AppRoleManager>(roleStore.Object);

            roleManager.Setup(m => m.FindByIdAsync(It.IsAny <string>())).ReturnsAsync(null as AppRole);
            RoleAdminController controller = GetNewRoleAdminController(null, roleManager.Object);

            ViewResult result = (await controller.Edit("")) as ViewResult;

            Assert.AreEqual("Error", result.ViewName);
        }
        public async Task Create_Post_ModelStateIsInvalid_AsksForCreateView()
        {
            Mock <RoleStore <AppRole> > roleStore   = new Mock <RoleStore <AppRole> >();
            Mock <AppRoleManager>       roleManager = new Mock <AppRoleManager>(roleStore.Object);
            RoleAdminController         controller  = GetNewRoleAdminController(null, roleManager.Object);

            controller.ModelState.AddModelError("", "Error");

            ViewResult result = (await controller.Create("")) as ViewResult;

            Assert.AreEqual("Create", result.ViewName);
        }
        public async Task Create_Post_ModelStateIsValidAndIdentityResultSucceeded_RedirectToIndex()
        {
            Mock <RoleStore <AppRole> > roleStore   = new Mock <RoleStore <AppRole> >();
            Mock <AppRoleManager>       roleManager = new Mock <AppRoleManager>(roleStore.Object);

            roleManager.Setup(m => m.CreateAsync(It.IsAny <AppRole>())).ReturnsAsync(IdentityResult.Success);
            RoleAdminController controller = GetNewRoleAdminController(null, roleManager.Object);

            RedirectToRouteResult result = (await controller.Create("")) as RedirectToRouteResult;

            Assert.AreEqual("Index", result.RouteValues["action"]);
        }
        public async Task Create_Post_ModelStateIsValidAndIdentityResultNotSucceeded_AsksForCreateView()
        {
            Mock <RoleStore <AppRole> > roleStore   = new Mock <RoleStore <AppRole> >();
            Mock <AppRoleManager>       roleManager = new Mock <AppRoleManager>(roleStore.Object);

            roleManager.Setup(m => m.CreateAsync(It.IsAny <AppRole>())).ReturnsAsync(IdentityResult.Failed(""));
            RoleAdminController controller = GetNewRoleAdminController(null, roleManager.Object);

            ViewResult result = (await controller.Create("")) as ViewResult;

            Assert.AreEqual("Create", result.ViewName);
        }
示例#11
0
        public RoleAdminControllerTests()
        {
            Mock <IUserStore <IdentityUser> > userStoreMock = new Mock <IUserStore <IdentityUser> >();

            _mockUserManager = new Mock <UserManager <IdentityUser> >(userStoreMock.Object,
                                                                      null, null, null, null, null, null, null, null);
            Mock <IRoleStore <IdentityRole> > roleStoreMock = new Mock <IRoleStore <IdentityRole> >();

            _mockRoleManager = new Mock <RoleManager <IdentityRole> >(roleStoreMock.Object,
                                                                      null, null, null, null);
            _roleAdminController = new RoleAdminController(_mockRoleManager.Object, _mockUserManager.Object);
        }
        public async Task Create_Post_ModelStateIsValidAndIdentityResultNotSucceeded_AddsErrorToModelState()
        {
            Mock <RoleStore <AppRole> > roleStore   = new Mock <RoleStore <AppRole> >();
            Mock <AppRoleManager>       roleManager = new Mock <AppRoleManager>(roleStore.Object);

            roleManager.Setup(m => m.CreateAsync(It.IsAny <AppRole>())).ReturnsAsync(IdentityResult.Failed("Custom Error"));
            RoleAdminController controller = GetNewRoleAdminController(null, roleManager.Object);

            ViewResult result = (await controller.Create("")) as ViewResult;

            Assert.AreEqual(1, controller.ModelState.Count);
            Assert.AreEqual("Custom Error", controller.ModelState.Values.First().Errors.First().ErrorMessage);
        }
        public async Task Edit_Post_ModelStateIsInvalid_AsksForErrorView()
        {
            RoleAdminController controller = GetNewRoleAdminController(null, null);

            controller.ModelState.AddModelError("", "Error");

            ViewResult result = (await controller.Edit(new RoleModificationModel {
            })) as ViewResult;

            Assert.AreEqual("Error", result.ViewName);
            string[] model = result.ViewData.Model as string[];
            Assert.AreEqual("Роль не найдена", model[0]);
        }
        public async Task Delete_RoleNotFound_AsksForErrorView()
        {
            Mock <RoleStore <AppRole> > roleStore   = new Mock <RoleStore <AppRole> >();
            Mock <AppRoleManager>       roleManager = new Mock <AppRoleManager>(roleStore.Object);

            roleManager.Setup(m => m.FindByIdAsync(It.IsAny <string>())).ReturnsAsync(null as AppRole);
            RoleAdminController controller = GetNewRoleAdminController(null, roleManager.Object);

            ViewResult result = (await controller.Delete("")) as ViewResult;

            Assert.AreEqual("Error", result.ViewName);
            string[] model = result.ViewData.Model as string[];
            Assert.AreEqual("Роль не найдена", model[0]);
        }
        public async Task Delete_RoleFoundAndIdentityResultSucceeded_RedirectToIndex()
        {
            Mock <RoleStore <AppRole> > roleStore   = new Mock <RoleStore <AppRole> >();
            Mock <AppRoleManager>       roleManager = new Mock <AppRoleManager>(roleStore.Object);

            roleManager.Setup(m => m.FindByIdAsync(It.IsAny <string>())).ReturnsAsync(new AppRole {
            });
            roleManager.Setup(m => m.DeleteAsync(It.IsAny <AppRole>())).ReturnsAsync(IdentityResult.Success);
            RoleAdminController controller = GetNewRoleAdminController(null, roleManager.Object);

            RedirectToRouteResult result = (await controller.Delete("")) as RedirectToRouteResult;

            Assert.AreEqual("Index", result.RouteValues["action"]);
        }
        public async Task Delete_RoleFoundAndIdentityResultNotSucceeded_AsksForErrorView()
        {
            Mock <RoleStore <AppRole> > roleStore   = new Mock <RoleStore <AppRole> >();
            Mock <AppRoleManager>       roleManager = new Mock <AppRoleManager>(roleStore.Object);

            roleManager.Setup(m => m.FindByIdAsync(It.IsAny <string>())).ReturnsAsync(new AppRole {
            });
            roleManager.Setup(m => m.DeleteAsync(It.IsAny <AppRole>())).ReturnsAsync(IdentityResult.Failed("Delete Error"));
            RoleAdminController controller = GetNewRoleAdminController(null, roleManager.Object);

            ViewResult result = (await controller.Delete("")) as ViewResult;

            Assert.AreEqual("Error", result.ViewName);
            string[] model = result.ViewData.Model as string[];
            Assert.AreEqual("Delete Error", model[0]);
        }
        public async Task Edit_Post_ModelStateIsValidAndRemoveIdentityResultNotSucceeded_AsksForErrorView()
        {
            Mock <IUserStore <AppUser> > userStore   = new Mock <IUserStore <AppUser> >();
            Mock <AppUserManager>        userManager = new Mock <AppUserManager>(userStore.Object);

            userManager.Setup(m => m.RemoveFromRoleAsync(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Failed("Remove Error"));
            RoleAdminController controller = GetNewRoleAdminController(userManager.Object, null);

            ViewResult result = (await controller.Edit(new RoleModificationModel {
                IdsToDelete = new string[] { "1" }
            })) as ViewResult;

            Assert.AreEqual("Error", result.ViewName);
            string[] model = result.ViewData.Model as string[];
            Assert.AreEqual("Remove Error", model[0]);
        }
        public void Index_RetrievesNamePropertyFromModel()
        {
            Mock <RoleStore <AppRole> > roleStore   = new Mock <RoleStore <AppRole> >();
            Mock <AppRoleManager>       roleManager = new Mock <AppRoleManager>(roleStore.Object);

            roleManager.Setup(m => m.Roles).Returns(new AppRole[] { new AppRole {
                                                                        Name = "Users"
                                                                    } }.AsQueryable());
            RoleAdminController controller = GetNewRoleAdminController(null, roleManager.Object);

            ViewResult result = controller.Index() as ViewResult;

            IQueryable <AppRole> model = result.ViewData.Model as IQueryable <AppRole>;

            Assert.AreEqual(1, model.Count());
            Assert.AreEqual("Users", model.ToArray()[0].Name);
        }
        public async Task Edit_Get_RoleFound_RetrievesRoleNamePropertyFromModel()
        {
            Mock <RoleStore <AppRole> > roleStore   = new Mock <RoleStore <AppRole> >();
            Mock <AppRoleManager>       roleManager = new Mock <AppRoleManager>(roleStore.Object);

            roleManager.Setup(m => m.FindByIdAsync(It.IsAny <string>())).ReturnsAsync(new AppRole {
                Name = "Users"
            });
            Mock <IUserStore <AppUser> > userStore   = new Mock <IUserStore <AppUser> >();
            Mock <AppUserManager>        userManager = new Mock <AppUserManager>(userStore.Object);
            RoleAdminController          controller  = GetNewRoleAdminController(userManager.Object, roleManager.Object);

            ViewResult result = (await controller.Edit("")) as ViewResult;

            RoleEditModel model = result.ViewData.Model as RoleEditModel;

            Assert.AreEqual("Users", model.Role.Name);
        }
        public async Task Edit_RoleId_ReturnsResult()
        {
            // Setup
            var usrMgr       = TestHelper.GetUserManager();
            var roleMgr      = TestHelper.GetRoleManager();
            var controller   = new RoleAdminController(roleMgr, usrMgr);
            var identityRole = new IdentityRole("Members")
            {
                Id = Guid.NewGuid().ToString()
            };

            roleMgr.FindByIdAsync(identityRole.Id).Returns(identityRole);
            var user1 = new AppUser {
                Id = Guid.NewGuid().ToString(), UserName = "******"
            };
            var user2 = new AppUser {
                Id = Guid.NewGuid().ToString(), UserName = "******"
            };
            var user3 = new AppUser {
                Id = Guid.NewGuid().ToString(), UserName = "******"
            };
            var users = new List <AppUser> {
                user1, user2, user3
            };

            usrMgr.Users.Returns(users.AsQueryable());
            usrMgr.IsInRoleAsync(user1, identityRole.Name).Returns(true);

            // Act
            RoleEdit res = TestHelper.GetViewModel <RoleEdit>(await controller.Edit(identityRole.Id));

            // Assert
            Assert.Equal(identityRole.Id, res.Role.Id);
            Assert.Equal(user1.UserName, res.Members.ElementAt(0).UserName);
            Assert.Equal(user2.UserName, res.NonMembers.ElementAt(0).UserName);
            Assert.Equal(user3.UserName, res.NonMembers.ElementAt(1).UserName);
        }
示例#21
0
        public void RoleAdminController_Template_NullParameter_Test()
        {
            var template = new RoleAdminController(null);

            Assert.Throws <NullReferenceException>(() => template.TransformText());
        }