using System;
using System.Collections.Generic;
using System.Net;
using System.Threading.Tasks;
using NSubstitute;
using Octokit.Internal;
using Octokit.Tests.Helpers;
using Xunit;
namespace Octokit.Tests.Clients
{
///
/// Client tests mostly just need to make sure they call the IApiConnection with the correct
/// relative Uri. No need to fake up the response. All *those* tests are in ApiConnectionTests.cs.
///
public class OrganizationMembersClientTests
{
public class TheConstructor
{
[Fact]
public void EnsureNonNullArguments()
{
Assert.Throws(() => new OrganizationMembersClient(null));
}
}
public class TheGetAllMethod
{
[Fact]
public void RequestsTheCorrectUrl()
{
var client = Substitute.For();
var orgMembersClient = new OrganizationMembersClient(client);
orgMembersClient.GetAll("org");
client.Received().GetAll(Arg.Is(u => u.ToString() == "orgs/org/members"));
}
[Fact]
public async Task EnsureNonNullArguments()
{
var orgMembers = new OrganizationMembersClient(Substitute.For());
await Assert.ThrowsAsync(() => orgMembers.GetAll(null));
await Assert.ThrowsAsync(() => orgMembers.GetAll(""));
}
[Fact]
public void AllFilterRequestTheCorrectUrl()
{
var client = Substitute.For();
var orgMembersClient = new OrganizationMembersClient(client);
orgMembersClient.GetAll("org", OrganizationMembersFilter.All);
client.Received().GetAll(Arg.Is(u => u.ToString() == "orgs/org/members?filter=all"));
}
[Fact]
public void TwoFactorFilterRequestTheCorrectUrl()
{
var client = Substitute.For();
var orgMembersClient = new OrganizationMembersClient(client);
orgMembersClient.GetAll("org", OrganizationMembersFilter.TwoFactorAuthenticationDisabled);
client.Received().GetAll(Arg.Is(u => u.ToString() == "orgs/org/members?filter=2fa_disabled"));
}
}
public class TheGetPublicMethod
{
[Fact]
public void RequestsTheCorrectUrl()
{
var client = Substitute.For();
var orgMembers = new OrganizationMembersClient(client);
orgMembers.GetAllPublic("org");
client.Received().GetAll(Arg.Is(u => u.ToString() == "orgs/org/public_members"));
}
[Fact]
public async Task EnsureNonNullArguments()
{
var orgMembers = new OrganizationMembersClient(Substitute.For());
await Assert.ThrowsAsync(() => orgMembers.GetAllPublic(null));
await Assert.ThrowsAsync(() => orgMembers.GetAllPublic(""));
}
}
public class TheCheckMemberMethod
{
[Theory]
[InlineData(HttpStatusCode.NoContent, true)]
[InlineData(HttpStatusCode.NotFound, false)]
[InlineData(HttpStatusCode.Found, false)]
public async Task RequestsCorrectValueForStatusCode(HttpStatusCode status, bool expected)
{
var response = Task.Factory.StartNew>(() =>
new ApiResponse