diff --git a/Octokit.Tests/Clients/OrganizationMembersClientTests.cs b/Octokit.Tests/Clients/OrganizationMembersClientTests.cs
new file mode 100644
index 00000000..04f35e38
--- /dev/null
+++ b/Octokit.Tests/Clients/OrganizationMembersClientTests.cs
@@ -0,0 +1,294 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+using NSubstitute;
+using Octokit.Clients;
+using Octokit.Internal;
+using Octokit.Tests.Helpers;
+using Xunit;
+using Xunit.Extensions;
+
+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 void EnsureNonNullArguments()
+ {
+ var orgMembers = new OrganizationMembersClient(Substitute.For());
+
+ AssertEx.Throws(async () => await orgMembers.GetAll(null));
+ AssertEx.Throws(async () => await orgMembers.GetAll(""));
+ }
+ }
+
+ public class TheGetPublicMethod
+ {
+ [Fact]
+ public void RequestsTheCorrectUrl()
+ {
+ var client = Substitute.For();
+ var orgMembers = new OrganizationMembersClient(client);
+
+ orgMembers.GetPublic("org");
+
+ client.Received().GetAll(Arg.Is(u => u.ToString() == "orgs/org/public_members"));
+ }
+
+ [Fact]
+ public void EnsureNonNullArguments()
+ {
+ var orgMembers = new OrganizationMembersClient(Substitute.For());
+
+ AssertEx.Throws(async () => await orgMembers.GetPublic(null));
+ AssertEx.Throws(async () => await orgMembers.GetPublic(""));
+ }
+ }
+
+ 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