public void PutEntityBadRepositoryGetId()
        {
            var controller = new UserController(GetMockRepo(false));
            var entity     = new UserFormPut {
                Email = "test", Password = "******", Name = "test", Surname = "test", IsActive = true, IsAdmin = true
            };

            controller.SetClaimsPrincipal(1, "*****@*****.**", Role.Admin);

            // Act
            var result = controller.Put(1, entity);

            // Assert
            Assert.IsType <UnprocessableEntityObjectResult>(result);
        }
        public void PutEntityNoExist()
        {
            // Arrange
            var controller = new UserController(GetMockRepo());
            var entity     = new UserFormPut {
                Email = "test", Password = "******"
            };

            controller.SetClaimsPrincipal(1, "*****@*****.**", Role.Admin);

            // Act
            var result = controller.Put(0, entity);

            // Assert
            Assert.IsType <NotFoundObjectResult>(result);
        }
        public void PutEntityExist()
        {
            // Arrange
            var controller = new UserController(GetMockRepo());
            var entity     = new UserFormPut {
                Email = "test", Password = "******", Name = "test", Surname = "test", IsActive = true, IsAdmin = true
            };

            controller.SetClaimsPrincipal(1, "*****@*****.**", Role.Admin);

            // Act
            var result = controller.Put(1, entity);

            // Assert
            Assert.IsType <OkObjectResult>(result);
        }
        public void PutEntityCannotDemoteLastAdminBadRepo()
        {
            // Arrange
            var controller = new UserController(GetMockRepo(false));
            var entity     = new UserFormPut {
                IsAdmin = false
            };

            controller.SetClaimsPrincipal(1, "*****@*****.**", Role.Admin);

            // Act
            var result = controller.Put(1, entity);

            // Assert
            Assert.IsType <UnprocessableEntityObjectResult>(result);
        }
Esempio n. 5
0
        public IActionResult Put(uint id, [FromBody] UserFormPut form)
        {
            if (this.IsAdmin() && form.IsAdmin == false)
            {
                var result = Repository.ListEntities(ImmutableList.Create(new[] { new Filter <User>("IsAdmin", true) }), 2);
                if (!result.IsValid)
                {
                    return(UnprocessableEntity(result.Exception.Message));
                }

                if (result.Value.Count == 1 && result.Value[0].Id == id)
                {
                    return(UnprocessableEntity("Cannot demote the last admin to user"));
                }
            }

            return(Put <UserFormPut>(id, form));
        }
        public void PutEntityCanDemoteOtherAdmin()
        {
            // Arrange
            var controller = new UserController(GetMockRepo());
            var entity     = new UserFormPut {
                IsAdmin = false
            };

            controller.SetClaimsPrincipal(1, "*****@*****.**", Role.Admin);

            // Act
            var result  = controller.Put(2, entity) as OkObjectResult;
            var isAdmin = (bool)result.Value.GetType().GetProperty("IsAdmin")?.GetValue(result.Value);

            // Assert
            Assert.IsType <OkObjectResult>(result);
            Assert.False(isAdmin);
        }
        public void PutEntityAsUserCannotChangeIsAdmin()
        {
            // Arrange
            uint id         = 3;
            var  controller = new UserController(GetMockRepo());
            var  entity     = new UserFormPut {
                Email = "test", Password = "******", Name = "test", Surname = "test", IsAdmin = true
            };

            controller.SetClaimsPrincipal(id, "*****@*****.**", Role.User);

            // Act
            _ = controller.Put(id, entity);
            controller.SetClaimsPrincipal(1, "*****@*****.**", Role.Admin);
            var result = controller.Get(id) as OkObjectResult;

            var isAdmin = (bool)result.Value.GetType().GetProperty("IsAdmin")?.GetValue(result.Value);

            // Assert
            Assert.False(isAdmin);
        }
Esempio n. 8
0
 public IActionResult Put(uint id, [FromBody] UserFormPut user)
 {
     return(StatusCode(StatusCodes.Status500InternalServerError));
 }