public async Task EnsuresNonNullArguments() { var client = new RepositoriesClient(Substitute.For<IApiConnection>()); await Assert.ThrowsAsync<ArgumentNullException>(() => client.Hooks.Get(null, "name", 123)); await Assert.ThrowsAsync<ArgumentNullException>(() => client.Hooks.Get("owner", null, 123)); }
public async Task EnsuresNonNullArguments() { var client = new RepositoriesClient(Substitute.For<IApiConnection>()); await AssertEx.Throws<ArgumentNullException>(async () => await client.Create(null)); await AssertEx.Throws<ArgumentException>(async () => await client.Create(new NewRepository { Name = null })); }
public async Task EnsuresNonNullArguments() { var client = new RepositoriesClient(Substitute.For<IApiConnection>()); await Assert.ThrowsAsync<ArgumentNullException>(() => client.Forks.Create(null, "name", new NewRepositoryFork())); await Assert.ThrowsAsync<ArgumentNullException>(() => client.Forks.Create("owner", null, new NewRepositoryFork())); await Assert.ThrowsAsync<ArgumentNullException>(() => client.Forks.Create("owner", "name", null)); }
public void RequestsCorrectUrl() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); client.Forks.GetAll("fake", "repo", null); connection.Received().GetAll<Repository>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/forks")); }
public async Task EnsuresNonNullArguments() { var client = new RepositoriesClient(Substitute.For<IApiConnection>()); var config = new Dictionary<string, string> { { "config", "" } }; await Assert.ThrowsAsync<ArgumentNullException>(() => client.Hooks.Create(null, "name", new NewRepositoryHook("name", config))); await Assert.ThrowsAsync<ArgumentNullException>(() => client.Hooks.Create("owner", null, new NewRepositoryHook("name", config))); await Assert.ThrowsAsync<ArgumentNullException>(() => client.Hooks.Create("owner", "name", null)); }
public void RequestsCorrectUrl() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); client.Hooks.Get("fake", "repo", 12345678); connection.Received().Get<RepositoryHook>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/hooks/12345678")); }
public void UsesTheUserReposUrl() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); client.Create(new NewRepository { Name = "aName" }); connection.Received().Post<Repository>(Arg.Is<Uri>(u => u.ToString() == "user/repos"), Arg.Any<NewRepository>()); }
public void TheNewRepositoryDescription() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); var newRepository = new NewRepository { Name = "aName" }; client.Create(newRepository); connection.Received().Post<Repository>(Arg.Any<Uri>(), newRepository); }
public void RequestsCorrectUrl() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); var hook = new NewRepositoryHook("name", new Dictionary<string, string> { { "config", "" } }); client.Hooks.Create("fake", "repo", hook); connection.Received().Post<RepositoryHook>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/hooks"), hook); }
public void UsesTheSuppliedHook() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); var newRepositoryHook = new NewRepositoryHook("name", new Dictionary<string, string> { { "config", "" } }); client.Hooks.Create("owner", "repo", newRepositoryHook); connection.Received().Post<RepositoryHook>(Arg.Any<Uri>(), newRepositoryHook); }
public void UsesTheSuppliedHook() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); var newRepositoryFork = new NewRepositoryFork { Organization = "aName" }; client.Forks.Create("owner", "repo", newRepositoryFork); connection.Received().Post<Repository>(Arg.Any<Uri>(), newRepositoryFork); }
public void RequestsCorrectUrl() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); var newRepositoryFork = new NewRepositoryFork(); client.Forks.Create("fake", "repo", newRepositoryFork); connection.Received().Post<Repository>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/forks"), newRepositoryFork); }
public async Task UsesTheOrganizatinosReposUrl() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); await client.Create("theLogin", new NewRepository { Name = "aName" }); connection.Received().Post<Repository>( Arg.Is<Uri>(u => u.ToString() == "orgs/theLogin/repos"), Args.NewRepository); }
public void RequestsCorrectUrlWithRequestParameters() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); client.Forks.GetAll("fake", "repo", new RepositoryForksListRequest { Sort = Sort.Stargazers }); connection.Received().GetAll<Repository>( Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/forks"), Arg.Is<Dictionary<string, string>>(d => d["sort"] == "stargazers")); }
public void RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); var options = new ApiOptions { PageCount = 1, PageSize = 1, StartPage = 1 }; client.Hooks.GetAll("fake", "repo", options); connection.Received(1) .GetAll<RepositoryHook>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/hooks"), options); }
public async Task RequestsTheCorrectUrlWithRepositoryIdWithApiOptions() { var connection = Substitute.For <IApiConnection>(); var client = new RepositoriesClient(connection); var options = new ApiOptions { PageCount = 1, StartPage = 1, PageSize = 1 }; await client.GetAllTeams(1, options); connection.Received() .GetAll <Team>( Arg.Is <Uri>(u => u.ToString() == "repositories/1/teams"), options); }
public void CanFilterBySort() { var connection = Substitute.For <IApiConnection>(); var client = new RepositoriesClient(connection); var request = new RepositoryRequest { Type = RepositoryType.Private, Sort = RepositorySort.FullName }; client.GetAllForCurrent(request); connection.Received() .GetAll <Repository>( Arg.Is <Uri>(u => u.ToString() == "user/repos"), Arg.Is <Dictionary <string, string> >(d => d["type"] == "private" && d["sort"] == "full_name")); }
public async Task EnsuresNonNullArguments() { var client = new RepositoriesClient(Substitute.For <IApiConnection>()); var update = new BranchUpdate(); await Assert.ThrowsAsync <ArgumentNullException>(() => client.EditBranch(null, "repo", "branch", update)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.EditBranch("owner", null, "branch", update)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.EditBranch("owner", "repo", null, update)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.EditBranch("owner", "repo", "branch", null)); await Assert.ThrowsAsync <ArgumentException>(() => client.EditBranch("", "repo", "branch", update)); await Assert.ThrowsAsync <ArgumentException>(() => client.EditBranch("owner", "", "branch", update)); await Assert.ThrowsAsync <ArgumentException>(() => client.EditBranch("owner", "repo", "", update)); }
public async Task CanFilterByType() { var connection = Substitute.For <IApiConnection>(); var client = new RepositoriesClient(connection); var request = new RepositoryRequest { Type = RepositoryType.All }; await client.GetAllForCurrent(request); connection.Received() .GetAll <Repository>( Arg.Is <Uri>(u => u.ToString() == "user/repos"), Arg.Is <Dictionary <string, string> >(d => d["type"] == "all"), "application/vnd.github.drax-preview+json", Args.ApiOptions); }
public async Task CanFilterByVisibility() { var connection = Substitute.For <IApiConnection>(); var client = new RepositoriesClient(connection); var request = new RepositoryRequest { Visibility = RepositoryVisibility.Private }; await client.GetAllForCurrent(request); connection.Received() .GetAll <Repository>( Arg.Is <Uri>(u => u.ToString() == "user/repos"), Arg.Is <Dictionary <string, string> >(d => d["visibility"] == "private"), Args.ApiOptions); }
public void CanFilterByAffiliation() { var connection = Substitute.For <IApiConnection>(); var client = new RepositoriesClient(connection); var request = new RepositoryRequest { Affiliation = RepositoryAffiliation.Owner, Sort = RepositorySort.FullName }; client.GetAllForCurrent(request); connection.Received() .GetAll <Repository>( Arg.Is <Uri>(u => u.ToString() == "user/repos"), Arg.Is <Dictionary <string, string> >(d => d["affiliation"] == "owner" && d["sort"] == "full_name")); }
public async Task ThrowsRepositoryExistsExceptionForEnterpriseInstance() { var newRepository = new NewRepository { Name = "aName" }; var response = Substitute.For<IResponse>(); response.StatusCode.Returns((HttpStatusCode)422); response.Body.Returns(@"{""message"":""Validation Failed"",""documentation_url"":" + @"""http://developer.github.com/v3/repos/#create"",""errors"":[{""resource"":""Repository""," + @"""code"":""custom"",""field"":""name"",""message"":""name already exists on this account""}]}"); var connection = Substitute.For<IApiConnection>(); connection.Connection.BaseAddress.Returns(new Uri("https://example.com")); connection.Post<Repository>(Args.Uri, newRepository) .Returns<Task<Repository>>(_ => { throw new ApiValidationException(response); }); var client = new RepositoriesClient(connection); var exception = await AssertEx.Throws<RepositoryExistsException>( async () => await client.Create("illuminati", newRepository)); Assert.Equal("aName", exception.RepositoryName); Assert.Equal(new Uri("https://example.com/illuminati/aName"), exception.ExistingRepositoryWebUrl); }
public void CanFilterBySortDirection() { var connection = Substitute.For <IApiConnection>(); var client = new RepositoriesClient(connection); var request = new RepositoryRequest { Type = RepositoryType.Member, Sort = RepositorySort.Updated, Direction = SortDirection.Ascending }; client.GetAllForCurrent(request); connection.Received() .GetAll <Repository>( Arg.Is <Uri>(u => u.ToString() == "user/repos"), Arg.Is <Dictionary <string, string> >(d => d["type"] == "member" && d["sort"] == "updated" && d["direction"] == "asc")); }
public async Task ThrowsValidationException() { var newRepository = new NewRepository("aName"); var response = Substitute.For <IResponse>(); response.StatusCode.Returns((HttpStatusCode)422); response.Body.Returns(@"{""message"":""Validation Failed"",""documentation_url"":" + @"""http://developer.github.com/v3/repos/#create"",""errors"":[]}"); var connection = Substitute.For <IApiConnection>(); connection.Connection.BaseAddress.Returns(GitHubClient.GitHubApiUrl); connection.Post <Repository>(Args.Uri, newRepository) .Returns <Task <Repository> >(_ => { throw new ApiValidationException(response); }); var client = new RepositoriesClient(connection); var exception = await Assert.ThrowsAsync <ApiValidationException>( () => client.Create("illuminati", newRepository)); Assert.Null(exception as RepositoryExistsException); }
public async Task RequestsTheCorrectUrlWithApiOptions() { var connection = Substitute.For <IApiConnection>(); var client = new RepositoriesClient(connection); var options = new ApiOptions { PageCount = 1, StartPage = 1, PageSize = 1 }; await client.GetAllTeams("owner", "name", options); connection.Received() .GetAll <Team>( Arg.Is <Uri>(u => u.ToString() == "repos/owner/name/teams"), null, "application/vnd.github.hellcat-preview+json", options); }
public async Task CanFilterByAffiliation() { var connection = Substitute.For <IApiConnection>(); var client = new RepositoriesClient(connection); var request = new RepositoryRequest { Affiliation = RepositoryAffiliation.Owner, Sort = RepositorySort.FullName }; await client.GetAllForCurrent(request); connection.Received() .GetAll <Repository>( Arg.Is <Uri>(u => u.ToString() == "user/repos"), Arg.Is <Dictionary <string, string> >(d => d["affiliation"] == "owner" && d["sort"] == "full_name"), "application/vnd.github.drax-preview+json", Args.ApiOptions); }
public async Task ThrowsExceptionWhenPrivateRepositoryQuotaExceeded() { var newRepository = new NewRepository { Name = "aName", Private = true }; var response = Substitute.For<IResponse>(); response.StatusCode.Returns((HttpStatusCode)422); response.Body.Returns(@"{""message"":""Validation Failed"",""documentation_url"":" + @"""http://developer.github.com/v3/repos/#create"",""errors"":[{""resource"":""Repository""," + @"""code"":""custom"",""field"":""name"",""message"":" + @"""name can't be private. You are over your quota.""}]}"); var credentials = new Credentials("haacked", "pwd"); var connection = Substitute.For<IApiConnection>(); connection.Connection.BaseAddress.Returns(GitHubClient.GitHubApiUrl); connection.Connection.Credentials.Returns(credentials); connection.Post<Repository>(Args.Uri, newRepository) .Returns<Task<Repository>>(_ => { throw new ApiValidationException(response); }); var client = new RepositoriesClient(connection); var exception = await AssertEx.Throws<PrivateRepositoryQuotaExceededException>( async () => await client.Create(newRepository)); Assert.NotNull(exception); }
public async Task EnsuresNonNullArguments() { var client = new RepositoriesClient(Substitute.For <IApiConnection>()); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllTags(null, "repo")); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllTags("owner", null)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllTags(null, "repo", ApiOptions.None)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllTags("owner", null, ApiOptions.None)); await Assert.ThrowsAsync <ArgumentNullException>(() => client.GetAllTags("owner", "repo", null)); await Assert.ThrowsAsync <ArgumentException>(() => client.GetAllTags("", "repo")); await Assert.ThrowsAsync <ArgumentException>(() => client.GetAllTags("owner", "")); await Assert.ThrowsAsync <ArgumentException>(() => client.GetAllTags("", "repo", ApiOptions.None)); await Assert.ThrowsAsync <ArgumentException>(() => client.GetAllTags("owner", "", ApiOptions.None)); }
public async Task CanFilterBySortDirection() { var connection = Substitute.For <IApiConnection>(); var client = new RepositoriesClient(connection); var request = new RepositoryRequest { Type = RepositoryType.Member, Sort = RepositorySort.Updated, Direction = SortDirection.Ascending }; await client.GetAllForCurrent(request); connection.Received() .GetAll <Repository>( Arg.Is <Uri>(u => u.ToString() == "user/repos"), Arg.Is <Dictionary <string, string> >(d => d["type"] == "member" && d["sort"] == "updated" && d["direction"] == "asc"), "application/vnd.github.drax-preview+json", Args.ApiOptions); }
public async Task ThrowsRepositoryExistsExceptionWhenRepositoryExistsForCurrentUser() { var newRepository = new NewRepository { Name = "aName" }; var response = Substitute.For<IResponse>(); response.StatusCode.Returns((HttpStatusCode)422); response.Body.Returns(@"{""message"":""Validation Failed"",""documentation_url"":" + @"""http://developer.github.com/v3/repos/#create"",""errors"":[{""resource"":""Repository""," + @"""code"":""custom"",""field"":""name"",""message"":""name already exists on this account""}]}"); var credentials = new Credentials("haacked", "pwd"); var connection = Substitute.For<IApiConnection>(); connection.Connection.BaseAddress.Returns(GitHubClient.GitHubApiUrl); connection.Connection.Credentials.Returns(credentials); connection.Post<Repository>(Args.Uri, newRepository) .Returns<Task<Repository>>(_ => { throw new ApiValidationException(response); }); var client = new RepositoriesClient(connection); var exception = await AssertEx.Throws<RepositoryExistsException>( async () => await client.Create(newRepository)); Assert.False(exception.OwnerIsOrganization); Assert.Null(exception.Owner); Assert.Equal("aName", exception.RepositoryName); Assert.Null(exception.ExistingRepositoryWebUrl); }
public async Task ThrowsRepositoryExistsExceptionWhenRepositoryExistsForCurrentUser() { var newRepository = new NewRepository("aName"); var response = Substitute.For<IResponse>(); response.StatusCode.Returns((HttpStatusCode)422); response.Body.Returns(@"{""message"":""Validation Failed"",""documentation_url"":" + @"""http://developer.github.com/v3/repos/#create"",""errors"":[{""resource"":""Repository""," + @"""code"":""custom"",""field"":""name"",""message"":""name already exists on this account""}]}"); var credentials = new Credentials("haacked", "pwd"); var connection = Substitute.For<IApiConnection>(); connection.Connection.BaseAddress.Returns(GitHubClient.GitHubApiUrl); connection.Connection.Credentials.Returns(credentials); connection.Post<Repository>(Args.Uri, newRepository) .Returns<Task<Repository>>(_ => { throw new ApiValidationException(response); }); var client = new RepositoriesClient(connection); var exception = await Assert.ThrowsAsync<RepositoryExistsException>( () => client.Create(newRepository)); Assert.False(exception.OwnerIsOrganization); Assert.Null(exception.Organization); Assert.Equal("aName", exception.RepositoryName); Assert.Null(exception.ExistingRepositoryWebUrl); }
public async Task RequestsTheCorrectUrlWithRepositoryId() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); await client.GetAllTags(1); connection.Received() .GetAll<RepositoryTag>(Arg.Is<Uri>(u => u.ToString() == "repositories/1/tags"), Args.ApiOptions); }
public void EnsuresNonNullArguments() { var reposEndpoint = new RepositoriesClient(Substitute.For <IApiConnection>()); AssertEx.Throws <ArgumentNullException>(async() => await reposEndpoint.GetAllForOrg(null)); }
public void UsesTheSuppliedHook() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); var editRepositoryHook = new EditRepositoryHook() { Active = false }; client.Hooks.Edit("owner", "repo", 12345678, editRepositoryHook); connection.Received().Patch<RepositoryHook>(Arg.Any<Uri>(), editRepositoryHook); }
public async Task RequestsTheCorrectUrlWithApiOptions() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); var options = new ApiOptions { PageCount = 1, StartPage = 1, PageSize = 1 }; await client.GetAllTeams("owner", "name", options); connection.Received() .GetAll<Team>( Arg.Is<Uri>(u => u.ToString() == "repos/owner/name/teams"), options); }
public async Task EnsuresNonNullArguments() { var client = new RepositoriesClient(Substitute.For<IApiConnection>()); await AssertEx.Throws<ArgumentNullException>(async () => await client.Get(null, "name")); await AssertEx.Throws<ArgumentNullException>(async () => await client.Get("owner", null)); }
public void RequestsTheCorrectUrlAndReturnsOrganizations() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); client.GetAllForOrg("orgname"); connection.Received() .GetAll<Repository>(Arg.Is<Uri>(u => u.ToString() == "orgs/orgname/repos")); }
public async Task RequestsTheCorrectUrlWithApiOptionsWithRepositoryId() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); var options = new ApiOptions { PageCount = 1, StartPage = 1, PageSize = 1 }; await client.GetAllTags(1, options); connection.Received() .GetAll<RepositoryTag>(Arg.Is<Uri>(u => u.ToString() == "repositories/1/tags"), options); }
public async Task RequestsTheCorrectUrlWithRepositoryId() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); await client.GetBranch(1, "branch"); connection.Received() .Get<Branch>(Arg.Is<Uri>(u => u.ToString() == "repositories/1/branches/branch"), null, "application/vnd.github.loki-preview+json"); }
public async Task ReturnsReadmeHtml() { var connection = Substitute.For<IApiConnection>(); connection.GetHtml(Args.Uri, null).Returns(Task.FromResult("<html>README</html>")); var reposEndpoint = new RepositoriesClient(connection); var readme = await reposEndpoint.GetReadmeHtml("fake", "repo"); connection.Received().GetHtml(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/readme"), null); Assert.Equal("<html>README</html>", readme); }
public async Task ReturnsReadme() { string encodedContent = Convert.ToBase64String(Encoding.UTF8.GetBytes("Hello world")); var readmeInfo = new ReadmeResponse { Content = encodedContent, Encoding = "base64", Name = "README.md", Url = "https://github.example.com/readme.md", HtmlUrl = "https://github.example.com/readme" }; var connection = Substitute.For<IApiConnection>(); connection.Get<ReadmeResponse>(Args.Uri, null).Returns(Task.FromResult(readmeInfo)); connection.GetHtml(Args.Uri, null).Returns(Task.FromResult("<html>README</html>")); var reposEndpoint = new RepositoriesClient(connection); var readme = await reposEndpoint.GetReadme("fake", "repo"); Assert.Equal("README.md", readme.Name); connection.Received().Get<ReadmeResponse>(Arg.Is<Uri>(u => u.ToString() == "repos/fake/repo/readme"), null); connection.DidNotReceive().GetHtml(Arg.Is<Uri>(u => u.ToString() == "https://github.example.com/readme"), null); var htmlReadme = await readme.GetHtmlContent(); Assert.Equal("<html>README</html>", htmlReadme); connection.Received().GetHtml(Arg.Is<Uri>(u => u.ToString() == "https://github.example.com/readme"), null); }
public void EnsuresNonNullArguments() { var reposEndpoint = new RepositoriesClient(Substitute.For<IApiConnection>()); AssertEx.Throws<ArgumentNullException>(async () => await reposEndpoint.GetAllForOrg(null)); }
public async Task ThrowsExceptionWhenPrivateRepositoryQuotaExceeded() { var newRepository = new NewRepository("aName") { Private = true }; var response = Substitute.For<IResponse>(); response.StatusCode.Returns((HttpStatusCode)422); response.Body.Returns(@"{""message"":""Validation Failed"",""documentation_url"":" + @"""http://developer.github.com/v3/repos/#create"",""errors"":[{""resource"":""Repository""," + @"""code"":""custom"",""field"":""name"",""message"":" + @"""name can't be private. You are over your quota.""}]}"); var credentials = new Credentials("haacked", "pwd"); var connection = Substitute.For<IApiConnection>(); connection.Connection.BaseAddress.Returns(GitHubClient.GitHubApiUrl); connection.Connection.Credentials.Returns(credentials); connection.Post<Repository>(Args.Uri, newRepository) .Returns<Task<Repository>>(_ => { throw new ApiValidationException(response); }); var client = new RepositoriesClient(connection); var exception = await Assert.ThrowsAsync<PrivateRepositoryQuotaExceededException>( () => client.Create(newRepository)); Assert.NotNull(exception); }
public async Task EnsuresArguments() { var github = Substitute.For<IGitHubClient>(); var nonreactiveClient = new RepositoriesClient(Substitute.For<IApiConnection>()); github.Repository.Returns(nonreactiveClient); var client = new ObservableRepositoriesClient(github); var update = new RepositoryUpdate(); Assert.Throws<ArgumentNullException>(() => client.Edit(null, "repo", update)); Assert.Throws<ArgumentNullException>(() => client.Edit("owner", null, update)); Assert.Throws<ArgumentNullException>(() => client.Edit("owner", "repo", null)); Assert.Throws<ArgumentException>(() => client.Edit("", "repo", update)); Assert.Throws<ArgumentException>(() => client.Edit("owner", "", update)); }
public async Task EnsuresNonNullArguments() { var client = new RepositoriesClient(Substitute.For <IApiConnection>()); await Assert.ThrowsAsync <ArgumentNullException>(() => client.Create(null)); }
public async Task EnsuresNonNullArguments() { var client = new RepositoriesClient(Substitute.For<IApiConnection>()); await Assert.ThrowsAsync<ArgumentNullException>(() => client.GetBranch(null, "repo", "branch")); await Assert.ThrowsAsync<ArgumentNullException>(() => client.GetBranch("owner", null, "branch")); await Assert.ThrowsAsync<ArgumentNullException>(() => client.GetBranch("owner", "repo", null)); await Assert.ThrowsAsync<ArgumentNullException>(() => client.GetBranch(1, null)); await Assert.ThrowsAsync<ArgumentException>(() => client.GetBranch("", "repo", "branch")); await Assert.ThrowsAsync<ArgumentException>(() => client.GetBranch("owner", "", "branch")); await Assert.ThrowsAsync<ArgumentException>(() => client.GetBranch("owner", "repo", "")); }
public async Task EnsuresNonNullArguments() { var reposEndpoint = new RepositoriesClient(Substitute.For <IApiConnection>()); await Assert.ThrowsAsync <ArgumentNullException>(() => reposEndpoint.GetAllForOrg(null)); }
public async Task RequestsCorrectUrl() { var connection = Substitute.For<IApiConnection>(); var client = new RepositoriesClient(connection); await client.Delete("theOwner", "theRepoName"); connection.Received().Delete(Arg.Is<Uri>(u => u.ToString() == "repos/theOwner/theRepoName")); }