Files
octokit.net/Octokit.Tests.Integration/Clients/OrganizationMembersClientTests.cs

124 lines
5.1 KiB
C#

using System.Linq;
using System.Threading.Tasks;
using Xunit;
namespace Octokit.Tests.Integration.Clients
{
public class OrganizationMembersClientTests
{
public class TheGetAllMethod
{
private IGitHubClient _gitHub;
private string _organizationFixture;
public TheGetAllMethod()
{
_gitHub = Helper.GetAuthenticatedClient();
_organizationFixture = "octokit";
}
[IntegrationTest]
public async Task ReturnsMembers()
{
var members = await
_gitHub.Organization.Member.GetAll(_organizationFixture);
Assert.NotEmpty(members);
}
[IntegrationTest]
public async Task ReturnsCorrectCountOfMembersWithoutStart()
{
var options = new ApiOptions
{
PageCount = 1,
PageSize = 1
};
var members = await _gitHub.Organization.Member.GetAll(_organizationFixture, options);
Assert.Equal(1, members.Count);
}
[IntegrationTest]
public async Task ReturnsCorrectCountOfMembersWithStart()
{
var options = new ApiOptions
{
PageCount = 1,
PageSize = 1,
StartPage = 1
};
var members = await _gitHub.Organization.Member.GetAll(_organizationFixture, options);
Assert.Equal(1, members.Count);
}
[IntegrationTest]
public async Task ReturnsDistinctMembersBasedOnStartPage()
{
var startOptions = new ApiOptions
{
PageCount = 1,
PageSize = 1,
StartPage = 1
};
var firstPage = await _gitHub.Organization.Member.GetAll(_organizationFixture, startOptions);
var skipStartOptions = new ApiOptions
{
PageSize = 1,
PageCount = 1,
StartPage = 2
};
var secondPage = await _gitHub.Organization.Member.GetAll(_organizationFixture, skipStartOptions);
Assert.Equal(1, firstPage.Count);
Assert.Equal(1, secondPage.Count);
Assert.NotEqual(firstPage.First().Id, secondPage.First().Id);
}
[IntegrationTest(Skip = "TwoFactor filter can't be used unless the requester is an organization owner")]
public async Task ReturnsMembersWithFilter()
{
var no2FAMembers = await _gitHub.Organization.Member.GetAll(_organizationFixture, OrganizationMembersFilter.TwoFactorAuthenticationDisabled);
Assert.NotNull(no2FAMembers);
}
[IntegrationTest(Skip = "Admin/Member filter doesn't work unless the requester is an organization member")]
public async Task ReturnsMembersWithRole()
{
var adminMembers = await _gitHub.Organization.Member.GetAll(_organizationFixture, OrganizationMembersRole.Admin);
Assert.NotNull(adminMembers);
var normalMembers = await _gitHub.Organization.Member.GetAll(_organizationFixture, OrganizationMembersRole.Member);
Assert.NotNull(normalMembers);
// There shouldnt be any members that are in both groups if the role filter works correctly
var membersInBoth = adminMembers.Select(a => a.Id).Intersect(normalMembers.Select(n => n.Id));
Assert.Empty(membersInBoth);
}
[IntegrationTest(Skip = "TwoFactor filter can't be used unless the requester is an organization owner")]
public async Task ReturnsMembersWthFilterAndRole()
{
// Get count of admin/normal members
var adminCount = (await _gitHub.Organization.Member.GetAll(_organizationFixture, OrganizationMembersRole.Admin)).Count;
var memberCount = (await _gitHub.Organization.Member.GetAll(_organizationFixture, OrganizationMembersRole.Member)).Count;
// Ensure that there are less admins with no 2 factor, than there are total admins
var adminsWithNo2FA = await _gitHub.Organization.Member.GetAll(_organizationFixture, OrganizationMembersFilter.TwoFactorAuthenticationDisabled, OrganizationMembersRole.Admin);
Assert.NotNull(adminsWithNo2FA);
Assert.True(adminsWithNo2FA.Count <= adminCount);
// Ensure that there are less members with no 2 factor, than there are total admins
var membersWithNo2FA = await _gitHub.Organization.Member.GetAll(_organizationFixture, OrganizationMembersFilter.TwoFactorAuthenticationDisabled, OrganizationMembersRole.Member);
Assert.NotNull(membersWithNo2FA);
Assert.True(membersWithNo2FA.Count <= memberCount);
}
}
}
}