Exemplo n.º 1
0
        public AddToRole()
        {
            _addToRoleRequest = new AddToRoleRequest
            {
                Role   = "Admin",
                UserId = "UserId"
            };

            _user = new ApplicationUser();

            _userManager.Setup(um => um.FindByIdAsync(_addToRoleRequest.UserId))
            .ReturnsAsync(_user);
        }
Exemplo n.º 2
0
        public async Task AddUserToRoleAsync_WhenUserNotFoundById_ReturnsNoAccountsRegisteredWithCurrentEmail()
        {
            var request = new AddToRoleRequest
            {
                UserId   = Guid.NewGuid(),
                RoleName = "role"
            };

            var httpResponse = await PostAsync(RoleControllerRoutes.AddToRole, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse>();

            response.ResponseException !.ErrorMessage.Should().Be($"No Accounts Registered with id {request.UserId}.");
            response.ResponseException.ErrorCode.Should().Be(ErrorCode.UserNotFound);
        }
        public async Task AddUserToRoleAsync_WhenUserNotFound_ShouldReturnUserNotFound()
        {
            var request = new AddToRoleRequest()
            {
                UserId   = Guid.NewGuid(),
                RoleName = "engineer"
            };

            this._mockUserManger.Setup(e => e.FindByIdAsync(request.UserId.ToString()))
            .ReturnsAsync((User)null);

            var result = await sut.AddUserToRoleAsync(request);

            result.IsSuccess.Should().BeFalse();
            result.ResponseException.Should().NotBeNull();
            result.ResponseException !.ErrorCode.Should().Be(ErrorCode.UserNotFound);
            result.ResponseException.ErrorMessage.Should().Be($"No Accounts Registered with id {request.UserId}.");
        }
Exemplo n.º 4
0
        public async Task AddUserToRoleAsync_WhenRequestValid_ReturnsSuccessResponse()
        {
            var context        = GetService <TimeTrackingIdentityDbContext>();
            var userInDatabase = await context.Users.LastAsync();

            var request = new AddToRoleRequest
            {
                UserId   = userInDatabase.Id,
                RoleName = "TeamLead"
            };

            var httpResponse = await PostAsync(RoleControllerRoutes.AddToRole, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse>();

            response.StatusCode.Should().Be(200);
            response.IsSuccess.Should().BeTrue();
        }
Exemplo n.º 5
0
        public async Task AddUserToRoleAsync_WhenNoSuchRoleExistsAsync_ReturnsNoSuchRoleExistsAsync()
        {
            var context        = GetService <TimeTrackingIdentityDbContext>();
            var userInDatabase = await context.Users.LastAsync();

            var request = new AddToRoleRequest
            {
                UserId   = userInDatabase.Id,
                RoleName = "role"
            };

            var httpResponse = await PostAsync(RoleControllerRoutes.AddToRole, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse>();

            response.ResponseException !.ErrorCode.Should().Be(ErrorCode.RoleNotFound);
            response.ResponseException !.ErrorMessage.Should().Be($"Role {request.RoleName} not found.");
        }
        public async Task AddUserToRoleAsync_WhenRoleNotFound_ShouldReturnUserNotFound()
        {
            var request = new AddToRoleRequest()
            {
                UserId   = Guid.NewGuid(),
                RoleName = "engineer"
            };

            this._mockUserManger.Setup(e => e.FindByIdAsync(request.UserId.ToString()))
            .ReturnsAsync(new User());
            this._mockRoleManger.Setup(t => t.RoleExistsAsync(request.RoleName))
            .ReturnsAsync(false);

            var result = await sut.AddUserToRoleAsync(request);

            result.IsSuccess.Should().BeFalse();
            result.ResponseException.Should().NotBeNull();
            result.ResponseException !.ErrorCode.Should().Be(ErrorCode.RoleNotFound);
            result.ResponseException.ErrorMessage.Should().Be($"Role {request.RoleName} not found.");
        }
        public async Task AddUserToRoleAsync_WhenAddToRoleSuccess_ShouldReturnSuccess()
        {
            var request = new AddToRoleRequest()
            {
                UserId   = Guid.NewGuid(),
                RoleName = "engineer"
            };
            var user = new User();

            this._mockUserManger.Setup(e => e.FindByIdAsync(request.UserId.ToString()))
            .ReturnsAsync(user);
            this._mockRoleManger.Setup(t => t.RoleExistsAsync(request.RoleName))
            .ReturnsAsync(true);
            this._mockUserManger.Setup(e => e.AddToRoleAsync(user, request.RoleName))
            .ReturnsAsync(IdentityResult.Success);

            var result = await sut.AddUserToRoleAsync(request);

            result.IsSuccess.Should().BeTrue();
            result.StatusCode.Should().Be(200);
        }
Exemplo n.º 8
0
        public async Task <ApiResponse> AddUserToRoleAsync(AddToRoleRequest model)
        {
            var user = await _userManager.FindByIdAsync(model.UserId.ToString());

            if (user == null)
            {
                return(new ApiResponse(
                           new ApiError()
                {
                    ErrorCode = ErrorCode.UserNotFound,
                    ErrorMessage = $"No Accounts Registered with id {model.UserId}.",
                }));
            }

            if (!await _roleManager.RoleExistsAsync(model.RoleName))
            {
                return(new ApiResponse(
                           new ApiError()
                {
                    ErrorCode = ErrorCode.RoleNotFound,
                    ErrorMessage = $"Role {model.RoleName} not found.",
                }));
            }

            var addUserResponse = await _userManager.AddToRoleAsync(user, model.RoleName);

            if (!addUserResponse.Succeeded)
            {
                _logger.LogWarning("Failed to add user {0} to role by reason {1}", model.UserId, addUserResponse.Errors);
                return(new ApiResponse(
                           new ApiError()
                {
                    ErrorCode = ErrorCode.AddToRoleFailed,
                    ErrorMessage = $"Add user {model.UserId} to role {model.RoleName} failed.",
                }));
            }

            return(ApiResponse.Success());
        }
        public async Task AddUserToRoleAsync_WhenAddToRoleFailed_ShouldReturnAddToRoleFailed()
        {
            var request = new AddToRoleRequest()
            {
                UserId   = Guid.NewGuid(),
                RoleName = "engineer"
            };
            var user = new User();

            this._mockUserManger.Setup(e => e.FindByIdAsync(request.UserId.ToString()))
            .ReturnsAsync(user);
            this._mockRoleManger.Setup(t => t.RoleExistsAsync(request.RoleName))
            .ReturnsAsync(true);
            this._mockUserManger.Setup(e => e.AddToRoleAsync(user, request.RoleName))
            .ReturnsAsync(IdentityResult.Failed());

            var result = await sut.AddUserToRoleAsync(request);

            result.IsSuccess.Should().BeFalse();
            result.ResponseException.Should().NotBeNull();
            result.ResponseException !.ErrorCode.Should().Be(ErrorCode.AddToRoleFailed);
            result.ResponseException.ErrorMessage.Should().Be($"Add user {request.UserId} to role {request.RoleName} failed.");
        }
Exemplo n.º 10
0
        public async Task <IActionResult> AddToRole([FromBody] AddToRoleRequest model)
        {
            if (model.Role != "Admin" && model.Role != "Teacher")
            {
                return(BadRequest(nameof(model.Role)));
            }

            var user = await _userManager.FindByIdAsync(model.UserId);

            if (user == null)
            {
                return(BadRequest(nameof(model.UserId)));
            }

            var result = await _userManager.AddToRoleAsync(user, model.Role);

            if (result.Succeeded)
            {
                return(Ok());
            }

            return(BadRequest());
        }
Exemplo n.º 11
0
 public async Task <ApiResponse> AddToRole([FromBody] AddToRoleRequest request)
 {
     return(await _roleService.AddUserToRoleAsync(request));
 }