コード例 #1
0
        public async Task Handle_InvalidUserName_MustReturnNotFound()
        {
            // Arrange
            var request = new EditRoles(DiverFactory.JaneDoeUserName, new[] { "role1" });

            // Act
            var useCaseResult = await interactor.Handle(request, CancellationToken.None);

            // Assert
            useCaseResult.IsSuccessful.Should().BeFalse();
            useCaseResult.ResultCategory.Should().Be(ResultCategory.NotFound);
        }
コード例 #2
0
        public async Task Handle_Success()
        {
            // Arrange
            var request = new EditRoles(DiverFactory.JohnDoeUserName, new[] { "role2", "role3" });

            // Act
            var useCaseResult = await interactor.Handle(request, CancellationToken.None);

            // Assert
            useCaseResult.IsSuccessful.Should().BeTrue();
            A.CallTo(() => userManager.AddToRoleAsync(A <IdentityUser> ._, "role3"))
            .MustHaveHappenedOnceExactly();
            A.CallTo(() => userManager.RemoveFromRoleAsync(A <IdentityUser> ._, "role1"))
            .MustHaveHappenedOnceExactly();
        }
コード例 #3
0
        public async Task <IActionResult> EditRoles(EditRoles editRoles)
        {
            try {
                var user = await _userManager.FindByNameAsync(editRoles.Username);

                if (editRoles.NewRole == "Standard" || editRoles.NewRole == "Admin")
                {
                    // find out what roles the user currently belongs to
                    var userRoles = await _userManager.GetRolesAsync(user);

                    //can not have less than 2 admins
                    if (editRoles.NewRole == "Admin" || editRoles.NewRole == "Standard" && _repo.GetNumberOfAdmins() >= 2)
                    {
                        // remove user from old role
                        var removeUserRole = await _userManager.GetRolesAsync(user);

                        var userRoleRemoved = await _userManager.RemoveFromRolesAsync(user, removeUserRole);

                        // add user to the new roles
                        var result = await _userManager.AddToRoleAsync(user, editRoles.NewRole);

                        if (!result.Succeeded)
                        {
                            return(BadRequest("Failed to add to roles"));
                        }
                        if (!userRoleRemoved.Succeeded)
                        {
                            return(BadRequest("failed to remove the roles"));
                        }
                        return(Ok("User role has been changed"));
                    }
                    return(BadRequest("You cannot have less than 2 admins"));
                }
                return(BadRequest("Incorrect role inserted"));
            }
            catch (ArgumentNullException)
            {
                return(BadRequest("Username does not exist"));
            }
        }