public void TestAddPermissionThrowsExceptionIfCurrentUserDoesNotHaveRights1()
        {
            try
            {
                #region Arrange
                Controller.ControllerContext.HttpContext = new MockHttpContext(1, new[] { "" });
                ControllerRecordFakes.FakeApplications(3, ApplicationRepository);
                ControllerRecordFakes.FakeRoles(5, RoleRepository);
                ControllerRecordFakes.FakeUsers(3, UserRepository);
                ControllerRecordFakes.FakePermissions(1, PermissionRepository);

                UserService.Expect(a => a.CanUserManageGivenLogin("Name3", "UserName", "LoginId3")).Return(false).Repeat.Any();
                PermissionRepository.Expect(a => a.EnsurePersistent(Arg <Permission> .Is.Anything)).Repeat.Any();
                #endregion Arrange

                #region Act
                Controller.AddPermission("Name3", "LoginId3", 3);
                #endregion Act
            }
            catch (Exception ex)
            {
                #region Assert
                Assert.IsNotNull(ex);
                Assert.AreEqual("UserName does not have access to manage LoginId3 within the Name3 application", ex.Message);
                UserService.AssertWasCalled(a => a.CanUserManageGivenLogin("Name3", "UserName", "LoginId3"));
                PermissionRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <Permission> .Is.Anything));
                #endregion Assert
                throw;
            }
        }
        public void TestAddPermissionWhenPermissionAlreadyExists()
        {
            #region Arrange
            Controller.ControllerContext.HttpContext = new MockHttpContext(1, new[] { "" });
            ControllerRecordFakes.FakeRoles(5, RoleRepository);
            ControllerRecordFakes.FakeApplications(3, ApplicationRepository);
            ControllerRecordFakes.FakeUsers(3, UserRepository);
            var permissions = new List <Permission> {
                CreateValidEntities.Permission(1)
            };
            permissions[0].Application = ApplicationRepository.GetNullableById(3);
            permissions[0].User        = UserRepository.GetNullableById(3);
            permissions[0].Role        = RoleRepository.GetNullableById(2);

            ControllerRecordFakes.FakePermissions(1, PermissionRepository, permissions);

            UserService.Expect(a => a.CanUserManageGivenLogin("Name3", "UserName", "LoginId3")).Return(true).Repeat.Any();
            RoleService.Expect(a => a.GetVisibleByUser("Name3", "UserName")).Return(RoleRepository.Queryable).Repeat.Any();
            PermissionRepository.Expect(a => a.EnsurePersistent(Arg <Permission> .Is.Anything)).Repeat.Any();
            #endregion Arrange

            #region Act
            Controller.AddPermission("Name3", "LoginId3", 2);
            #endregion Act

            #region Assert
            UserService.AssertWasCalled(a => a.CanUserManageGivenLogin("Name3", "UserName", "LoginId3"));
            RoleService.AssertWasCalled(a => a.GetVisibleByUser("Name3", "UserName"));
            PermissionRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <Permission> .Is.Anything));

            #endregion Assert
        }
        public void TestAddPermissionThrowsExceptionIfloginIdDuplicate()
        {
            try
            {
                #region Arrange
                Controller.ControllerContext.HttpContext = new MockHttpContext(1, new[] { "" });
                ControllerRecordFakes.FakeApplications(3, ApplicationRepository);
                ControllerRecordFakes.FakeRoles(5, RoleRepository);
                var users = new List <User> {
                    CreateValidEntities.User(1), CreateValidEntities.User(1)
                };
                ControllerRecordFakes.FakeUsers(3, UserRepository, users);
                ControllerRecordFakes.FakePermissions(1, PermissionRepository);

                RoleService.Expect(a => a.GetVisibleByUser("Name2", "UserName")).Return(RoleRepository.Queryable).Repeat.Any();
                UserService.Expect(a => a.CanUserManageGivenLogin("Name2", "UserName", "LoginId1")).Return(true).Repeat.Any();
                PermissionRepository.Expect(a => a.EnsurePersistent(Arg <Permission> .Is.Anything)).Repeat.Any();
                #endregion Arrange

                #region Act
                Controller.AddPermission("Name2", "LoginId1", 3);
                #endregion Act
            }
            catch (Exception ex)
            {
                #region Assert
                Assert.IsNotNull(ex);
                Assert.AreEqual("Sequence contains more than one element", ex.Message);
                UserService.AssertWasCalled(a => a.CanUserManageGivenLogin("Name2", "UserName", "LoginId1"));
                RoleService.AssertWasCalled(a => a.GetVisibleByUser("Name2", "UserName"));
                PermissionRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <Permission> .Is.Anything));
                #endregion Assert
                throw;
            }
        }
        public void TestRemovePermissionThrowsExceptionPermissionNotUnique()
        {
            try
            {
                #region Arrange
                Controller.ControllerContext.HttpContext = new MockHttpContext(1, new[] { "" });
                ControllerRecordFakes.FakeApplications(3, ApplicationRepository);
                ControllerRecordFakes.FakeUsers(3, UserRepository);
                ControllerRecordFakes.FakeRoles(5, RoleRepository);
                var permissions = new List <Permission>();
                for (int i = 0; i < 3; i++)
                {
                    permissions.Add(CreateValidEntities.Permission(i + 1));
                    permissions[i].User        = UserRepository.GetNullableById(1);
                    permissions[i].Application = ApplicationRepository.GetNullableById(2);
                    permissions[i].Role        = RoleRepository.GetNullableById(i + 1);
                }
                permissions[1].Role = RoleRepository.GetNullableById(1);

                ControllerRecordFakes.FakePermissions(1, PermissionRepository, permissions);
                UserService.Expect(a => a.CanUserManageGivenLogin("Name2", "UserName", "LoginId1")).Return(true).Repeat.Any();
                RoleService.Expect(a => a.GetVisibleByUser("Name2", "UserName")).Return(RoleRepository.Queryable).Repeat.Any();
                PermissionRepository.Expect(a => a.Remove(Arg <Permission> .Is.Anything)).Repeat.Any();
                #endregion Arrange

                #region Act
                Controller.RemovePermission("Name2", "LoginId1", 1);
                #endregion Act
            }
            catch (Exception ex)
            {
                #region Assert
                Assert.IsNotNull(ex);
                Assert.AreEqual("Sequence contains more than one element", ex.Message);
                UserService.AssertWasCalled(a => a.CanUserManageGivenLogin("Name2", "UserName", "LoginId1"));
                RoleService.AssertWasCalled(a => a.GetVisibleByUser("Name2", "UserName"));
                PermissionRepository.AssertWasNotCalled(a => a.Remove(Arg <Permission> .Is.Anything));
                #endregion Assert
                throw;
            }
        }
        public void TestRemovePermissionThrowsExceptionIfCurrentUserDoesNotHaveRights1()
        {
            try
            {
                #region Arrange
                Controller.ControllerContext.HttpContext = new MockHttpContext(1, new[] { "" });
                ControllerRecordFakes.FakeApplications(3, ApplicationRepository);
                ControllerRecordFakes.FakeUsers(3, UserRepository);
                ControllerRecordFakes.FakeRoles(5, RoleRepository);
                var permissions = new List <Permission>();
                for (int i = 0; i < 3; i++)
                {
                    permissions.Add(CreateValidEntities.Permission(i + 1));
                    permissions[i].User        = UserRepository.GetNullableById(1);
                    permissions[i].Application = ApplicationRepository.GetNullableById(2);
                    permissions[i].Role        = RoleRepository.GetNullableById(i + 1);
                }
                permissions[1].Role = RoleRepository.GetNullableById(4);
                ControllerRecordFakes.FakePermissions(1, PermissionRepository, permissions);
                UserService.Expect(a => a.CanUserManageGivenLogin("Name2", "UserName", "LoginId1")).Return(false).Repeat.Any();
                PermissionRepository.Expect(a => a.Remove(Arg <Permission> .Is.Anything)).Repeat.Any();
                #endregion Arrange

                #region Act
                Controller.RemovePermission("Name2", "LoginId1", 4);
                #endregion Act
            }
            catch (Exception ex)
            {
                #region Assert
                Assert.IsNotNull(ex);
                Assert.AreEqual("UserName does not have access to manage LoginId1 within the Name2 application", ex.Message);
                UserService.AssertWasCalled(a => a.CanUserManageGivenLogin("Name2", "UserName", "LoginId1"));
                PermissionRepository.AssertWasNotCalled(a => a.Remove(Arg <Permission> .Is.Anything));
                #endregion Assert
                throw;
            }
        }
Example #6
0
        public void TestInsertNewUserReturnsExpectedValue3()
        {
            #region Arrange
            const string applicationName = "Name2";
            var          users           = new List <User>();
            users.Add(CreateValidEntities.User(4));
            ControllerRecordFakes.FakeUsers(0, UserRepository, users);

            AutomapperConfig.Configure();
            var serviceUser = CreateValidEntities.ServiceUser(4);

            ControllerRecordFakes.FakeApplications(3, ApplicationRepository);
            ControllerRecordFakes.FakeRoles(3, RoleRepository);
            ControllerRecordFakes.FakeUnits(3, UnitRepository);

            var permissions = new List <Permission>();
            permissions.Add(CreateValidEntities.Permission(1));
            permissions[0].Application = ApplicationRepository.GetNullableById(2);
            permissions[0].User        = users[0];
            permissions[0].Role        = RoleRepository.GetNullableById(3);
            permissions.Add(CreateValidEntities.Permission(2));
            permissions[1].Application = ApplicationRepository.GetNullableById(2);
            permissions[1].User        = users[0];
            permissions[1].Role        = RoleRepository.GetNullableById(1);
            ControllerRecordFakes.FakePermissions(0, PermissionRepository, permissions);

            var unitAssociations = new List <UnitAssociation>();
            unitAssociations.Add(CreateValidEntities.UnitAssociation(1));
            unitAssociations[0].Application = ApplicationRepository.GetNullableById(2);
            unitAssociations[0].User        = users[0];
            unitAssociations[0].Unit        = UnitRepository.GetNullableById(2);
            unitAssociations.Add(CreateValidEntities.UnitAssociation(2));
            unitAssociations[1].Application = ApplicationRepository.GetNullableById(2);
            unitAssociations[1].User        = users[0];
            unitAssociations[1].Unit        = UnitRepository.GetNullableById(1);
            ControllerRecordFakes.FakeUnitAssociations(0, UnitAssociationRepository, unitAssociations);
            #endregion Arrange

            #region Act
            var result = Controller.InsertNewUser(applicationName, serviceUser, 3, 2)
                         .AssertResultIs <JsonResult>();
            #endregion Act

            #region Assert
            Assert.IsNotNull(result);
            var result2 = (ServiceUser)result.Data;
            Assert.IsNotNull(result2);
            Assert.AreEqual("*****@*****.**", result2.Email);
            Assert.AreEqual("FirstName4", result2.FirstName);
            Assert.AreEqual("LastName4", result2.LastName);
            Assert.AreEqual("LoginId4", result2.Login);
            Assert.AreEqual("+1 530 755 7777", result2.Phone);
            Assert.AreEqual("Name1, Name3", result2.Roles);
            Assert.AreEqual("ShortName1, ShortName2", result2.Units);

            UserRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <User> .Is.Anything));
            PermissionRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <Permission> .Is.Anything));
            UnitAssociationRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <UnitAssociation> .Is.Anything));


            #endregion Assert
        }