/// <summary> /// Assigns Users to a role. /// </summary> /// <param name="id">The ID of the role to assign users to.</param> /// <param name="request">A <see cref="AssignUsersRequest" /> containing the user IDs to assign to the role.</param> /// <returns>A <see cref="Task"/> that represents the asynchronous assign operation.</returns> public Task AssignUsersAsync(string id, AssignUsersRequest request) { return(Connection.PostAsync <AssignUsersRequest>("roles/{id}/users", request, null, null, new Dictionary <string, string> { { "id", id }, }, null, null)); }
public async Task Test_roles_assign_user_to_role() { // Add a new role var newRoleRequest = new RoleCreateRequest { Name = $"{Guid.NewGuid():N}role", Description = $"{Guid.NewGuid():N}description", }; var role = await _apiClient.Roles.CreateAsync(newRoleRequest); role.Should().NotBeNull(); role.Name.Should().Be(newRoleRequest.Name); role.Description.Should().Be(newRoleRequest.Description); // Create a user var newUserRequest = new UserCreateRequest { Connection = _connection.Name, Email = $"{Guid.NewGuid():N}@nonexistingdomain.aaa", EmailVerified = true, Password = Password }; var user = await _apiClient.Users.CreateAsync(newUserRequest); // Assign a user to the role var assignUsersRequest = new AssignUsersRequest { Users = new[] { user.UserId } }; await _apiClient.Roles.AssignUsersAsync(role.Id, assignUsersRequest); // Ensure the user is assigned to the role var assignedUsers = await _apiClient.Roles.GetUsersAsync(role.Id); assignedUsers.Should().NotBeNull(); assignedUsers.First().UserId.Should().Be(user.UserId); // Clean Up await _apiClient.Roles.DeleteAsync(role.Id); await _apiClient.Users.DeleteAsync(user.UserId); }
public async Task Test_roles_crud_sequence() { // Add a new role var newRoleRequest = new RoleCreateRequest { Name = $"{Guid.NewGuid():N}role", Description = $"{Guid.NewGuid():N}description", }; var newRoleResponse = await _apiClient.Roles.CreateAsync(newRoleRequest); newRoleResponse.Should().NotBeNull(); newRoleResponse.Name.Should().Be(newRoleRequest.Name); newRoleResponse.Description.Should().Be(newRoleRequest.Description); // Update the role var updateRoleRequest = new RoleUpdateRequest { Name = $"{Guid.NewGuid():N}role", }; var updateRoleResponse = await _apiClient.Roles.UpdateAsync(newRoleResponse.Id, updateRoleRequest); updateRoleResponse.Should().NotBeNull(); updateRoleResponse.Name.Should().Be(updateRoleRequest.Name); // Get a single role var role = await _apiClient.Roles.GetAsync(newRoleResponse.Id); role.Should().NotBeNull(); role.Name.Should().Be(updateRoleResponse.Name); // Create a user var newUserRequest = new UserCreateRequest { Connection = _connection.Name, Email = $"{Guid.NewGuid():N}@nonexistingdomain.aaa", EmailVerified = true, Password = Password }; var user = await _apiClient.Users.CreateAsync(newUserRequest); // Assign a user to the role var assignUsersRequest = new AssignUsersRequest { Users = new[] { user.UserId } }; await _apiClient.Roles.AssignUsersAsync(role.Id, assignUsersRequest); // Ensure the user is assigned to the role var assignedUsers = await _apiClient.Roles.GetUsersAsync(role.Id); assignedUsers.Should().NotBeNull(); assignedUsers.First().UserId.Should().Be(user.UserId); // Ensure the Role is assigned to user var assignedRoles = await _apiClient.Users.GetRolesAsync(user.UserId, new PaginationInfo()); assignedRoles.Should().NotBeNull(); assignedRoles.First().Id.Should().Be(role.Id); // Delete the role and ensure we get an exception when trying to fetch them again await _apiClient.Roles.DeleteAsync(role.Id); Func <Task> getFunc = async() => await _apiClient.Roles.GetAsync(role.Id); getFunc.Should().Throw <ErrorApiException>().And.ApiError.Error.Should().Be("Not Found"); // Delete the user await _apiClient.Users.DeleteAsync(user.UserId); }
/// <summary> /// Assigns Users to a role. /// </summary> /// <param name="id">The ID of the role to assign users to.</param> /// <param name="request">A <see cref="AssignUsersRequest" /> containing the user IDs to assign to the role.</param> /// <returns>A <see cref="Task"/> that represents the asynchronous assign operation.</returns> public Task AssignUsersAsync(string id, AssignUsersRequest request) { return(Connection.SendAsync <AssignUsersRequest>(HttpMethod.Post, BuildUri($"roles/{EncodePath(id)}/users"), request, DefaultHeaders)); }