From 446ea0e89ace3830fc2b4de8d4324dfb4e98b034 Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Thu, 28 Nov 2013 16:04:16 -0800 Subject: [PATCH] stripped out some unnecessary namespaces for tests --- .../Clients/CommitStatusClientTests.cs | 39 +- .../Clients/GistsClientTests.cs | 38 +- .../Clients/MiscellaneousClientTests.cs | 43 +- .../Clients/ReleasesClientTests.cs | 81 +- .../Clients/RepositoriesClientTests.cs | 729 +++++++++--------- .../Clients/UsersClientTests.cs | 185 +++-- 6 files changed, 553 insertions(+), 562 deletions(-) diff --git a/Octokit.Tests.Integration/Clients/CommitStatusClientTests.cs b/Octokit.Tests.Integration/Clients/CommitStatusClientTests.cs index 5f7de7f6..b22e5caa 100644 --- a/Octokit.Tests.Integration/Clients/CommitStatusClientTests.cs +++ b/Octokit.Tests.Integration/Clients/CommitStatusClientTests.cs @@ -1,31 +1,30 @@ using System.Net.Http.Headers; using System.Threading.Tasks; +using Octokit; +using Octokit.Tests.Integration; using Xunit; -namespace Octokit.Tests.Integration +public class CommitStatusClientTests { - public class CommitStatusClientTests + public class TheGetAllMethod { - public class TheGetAllMethod + [IntegrationTest] + public async Task CanRetrieveStatuses() { - [IntegrationTest] - public async Task CanRetrieveStatuses() - { - // Figured it was easier to grab the public status of a public repository for now than - // to go through the rigamarole of creating it all. But ideally, that's exactly what we'd do. + // Figured it was easier to grab the public status of a public repository for now than + // to go through the rigamarole of creating it all. But ideally, that's exactly what we'd do. - var githubClient = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var statuses = await githubClient.Repository.CommitStatus.GetAll( - "rails", - "rails", - "94b857899506612956bb542e28e292308accb908"); - Assert.Equal(2, statuses.Count); - Assert.Equal(CommitState.Failure, statuses[0].State); - Assert.Equal(CommitState.Pending, statuses[1].State); - } + var githubClient = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + var statuses = await githubClient.Repository.CommitStatus.GetAll( + "rails", + "rails", + "94b857899506612956bb542e28e292308accb908"); + Assert.Equal(2, statuses.Count); + Assert.Equal(CommitState.Failure, statuses[0].State); + Assert.Equal(CommitState.Pending, statuses[1].State); } } } diff --git a/Octokit.Tests.Integration/Clients/GistsClientTests.cs b/Octokit.Tests.Integration/Clients/GistsClientTests.cs index e9de24ae..a5a49411 100644 --- a/Octokit.Tests.Integration/Clients/GistsClientTests.cs +++ b/Octokit.Tests.Integration/Clients/GistsClientTests.cs @@ -1,31 +1,27 @@ -using System; -using System.Linq; -using System.Net.Http.Headers; +using System.Net.Http.Headers; using System.Threading.Tasks; +using Octokit; +using Octokit.Tests.Integration; using Xunit; -namespace Octokit.Tests.Integration +public class GistsClientTests { - public class GistsClientTests + readonly IGistsClient _fixture; + + public GistsClientTests() { - readonly IGitHubClient _gitHubClient; - readonly IGistsClient _gistsClient; - - public GistsClientTests() + var client = new GitHubClient(new ProductHeaderValue("OctokitTests")) { - this._gitHubClient = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; + Credentials = Helper.Credentials + }; - this._gistsClient = this._gitHubClient.Gist; - } + _fixture = client.Gist; + } - [IntegrationTest] - public async Task CanGetGist() - { - var retrieved = await this._gistsClient.Get("6305249"); - Assert.NotNull(retrieved); - } + [IntegrationTest] + public async Task CanGetGist() + { + var retrieved = await _fixture.Get("6305249"); + Assert.NotNull(retrieved); } } \ No newline at end of file diff --git a/Octokit.Tests.Integration/Clients/MiscellaneousClientTests.cs b/Octokit.Tests.Integration/Clients/MiscellaneousClientTests.cs index c897245d..afd8a499 100644 --- a/Octokit.Tests.Integration/Clients/MiscellaneousClientTests.cs +++ b/Octokit.Tests.Integration/Clients/MiscellaneousClientTests.cs @@ -1,41 +1,40 @@ using System.Net.Http.Headers; using System.Threading.Tasks; +using Octokit; +using Octokit.Tests.Integration; using Xunit; -namespace Octokit.Tests.Integration +public class MiscellaneousClientTests { - public class MiscellaneousClientTests + public class TheGetEmojisMethod { - public class TheGetEmojisMethod + [IntegrationTest] + public async Task GetsAllTheEmojis() { - [IntegrationTest] - public async Task GetsAllTheEmojis() + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; + Credentials = Helper.Credentials + }; - var emojis = await github.Miscellaneous.GetEmojis(); + var emojis = await github.Miscellaneous.GetEmojis(); - Assert.True(emojis.Count > 1); - } + Assert.True(emojis.Count > 1); } + } - public class TheRenderRawMarkdownMethod + public class TheRenderRawMarkdownMethod + { + [IntegrationTest] + public async Task CanRenderGitHubFlavoredMarkdown() { - [IntegrationTest] - public async Task CanRenderGitHubFlavoredMarkdown() + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; + Credentials = Helper.Credentials + }; - var result = await github.Miscellaneous.RenderRawMarkdown("This is a **test**"); + var result = await github.Miscellaneous.RenderRawMarkdown("This is a **test**"); - Assert.Equal("

This is a test

", result); - } + Assert.Equal("

This is a test

", result); } } } diff --git a/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs b/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs index ebe9c8a8..26f8410d 100644 --- a/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs +++ b/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs @@ -2,60 +2,59 @@ using System.Linq; using System.Net.Http.Headers; using System.Threading.Tasks; +using Octokit; +using Octokit.Tests.Integration; using Xunit; -namespace Octokit.Tests.Integration +public class ReleasesClientTests { - public class ReleasesClientTests + public class TheGetReleasesMethod : IDisposable { - public class TheGetReleasesMethod : IDisposable + readonly IReleasesClient _releaseClient; + readonly Repository _repository; + readonly string _repositoryOwner; + readonly string _repositoryName; + readonly GitHubClient _github; + + public TheGetReleasesMethod() { - readonly IReleasesClient _releaseClient; - readonly Repository _repository; - readonly string _repositoryOwner; - readonly string _repositoryName; - readonly GitHubClient _github; - - public TheGetReleasesMethod() + _github = new GitHubClient(new ProductHeaderValue("OctokitTests")) { - _github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - _releaseClient = _github.Release; + Credentials = Helper.Credentials + }; + _releaseClient = _github.Release; - var repoName = Helper.MakeNameWithTimestamp("public-repo"); - _repository = _github.Repository.Create(new NewRepository { Name = repoName, AutoInit = true }).Result; - _repositoryOwner = _repository.Owner.Login; - _repositoryName = _repository.Name; - } + var repoName = Helper.MakeNameWithTimestamp("public-repo"); + _repository = _github.Repository.Create(new NewRepository { Name = repoName, AutoInit = true }).Result; + _repositoryOwner = _repository.Owner.Login; + _repositoryName = _repository.Name; + } - [IntegrationTest] - public async Task ReturnsReleases() - { - var releases = await _releaseClient.GetAll("git-tfs", "git-tfs"); + [IntegrationTest] + public async Task ReturnsReleases() + { + var releases = await _releaseClient.GetAll("git-tfs", "git-tfs"); - Assert.True(releases.Count > 5); - Assert.True(releases.Any(release => release.TagName == "v0.18.0")); - } + Assert.True(releases.Count > 5); + Assert.True(releases.Any(release => release.TagName == "v0.18.0")); + } - [IntegrationTest] - public async Task ReturnsReleasesWithNullPublishDate() - { - // create a release without a publish date - var releaseWithNoUpdate = new ReleaseUpdate("0.1") { Draft = true }; - var release = _releaseClient.CreateRelease(_repositoryOwner, _repositoryName, releaseWithNoUpdate).Result; + [IntegrationTest] + public async Task ReturnsReleasesWithNullPublishDate() + { + // create a release without a publish date + var releaseWithNoUpdate = new ReleaseUpdate("0.1") { Draft = true }; + var release = _releaseClient.CreateRelease(_repositoryOwner, _repositoryName, releaseWithNoUpdate).Result; - var releases = await _releaseClient.GetAll(_repositoryOwner, _repositoryName); + var releases = await _releaseClient.GetAll(_repositoryOwner, _repositoryName); - Assert.True(releases.Count == 1); - Assert.False(releases.First().PublishedAt.HasValue); - } + Assert.True(releases.Count == 1); + Assert.False(releases.First().PublishedAt.HasValue); + } - public void Dispose() - { - Helper.DeleteRepo(_repository); - } + public void Dispose() + { + Helper.DeleteRepo(_repository); } } } diff --git a/Octokit.Tests.Integration/Clients/RepositoriesClientTests.cs b/Octokit.Tests.Integration/Clients/RepositoriesClientTests.cs index 732c7fbe..fb4abee5 100644 --- a/Octokit.Tests.Integration/Clients/RepositoriesClientTests.cs +++ b/Octokit.Tests.Integration/Clients/RepositoriesClientTests.cs @@ -1,399 +1,398 @@ using System.Net.Http.Headers; using System.Threading.Tasks; +using Octokit; +using Octokit.Tests.Integration; using Xunit; -namespace Octokit.Tests.Integration +public class RepositoriesClientTests { - public class RepositoriesClientTests + public class TheCreateMethodForUser { - public class TheCreateMethodForUser + [IntegrationTest] + public async Task CreatesANewPublicRepository() { - [IntegrationTest] - public async Task CreatesANewPublicRepository() + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("public-repo"); + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("public-repo"); - var createdRepository = await github.Repository.Create(new NewRepository { Name = repoName }); + var createdRepository = await github.Repository.Create(new NewRepository { Name = repoName }); - try - { - var cloneUrl = string.Format("https://github.com/{0}/{1}.git", Helper.UserName, repoName); - Assert.Equal(repoName, createdRepository.Name); - Assert.False(createdRepository.Private); - Assert.Equal(cloneUrl, createdRepository.CloneUrl); - var repository = await github.Repository.Get(Helper.UserName, repoName); - Assert.Equal(repoName, repository.Name); - Assert.Null(repository.Description); - Assert.False(repository.Private); - Assert.True(repository.HasDownloads); - Assert.True(repository.HasIssues); - Assert.True(repository.HasWiki); - Assert.Null(repository.Homepage); - } - finally - { - Helper.DeleteRepo(createdRepository); - } - } - - [IntegrationTest] - public async Task CreatesANewPrivateRepository() + try { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("private-repo"); - - var createdRepository = await github.Repository.Create(new NewRepository - { - Name = repoName, - Private = true - }); - - try - { - Assert.True(createdRepository.Private); - var repository = await github.Repository.Get(Helper.UserName, repoName); - Assert.True(repository.Private); - } - finally - { - Helper.DeleteRepo(createdRepository); - } - } - - [IntegrationTest] - public async Task CreatesARepositoryWithoutDownloads() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("repo-without-downloads"); - - var createdRepository = await github.Repository.Create(new NewRepository - { - Name = repoName, - HasDownloads = false - }); - - try - { - Assert.False(createdRepository.HasDownloads); - var repository = await github.Repository.Get(Helper.UserName, repoName); - Assert.False(repository.HasDownloads); - } - finally - { - Helper.DeleteRepo(createdRepository); - } - } - - [IntegrationTest] - public async Task CreatesARepositoryWithoutIssues() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("repo-without-issues"); - - var createdRepository = await github.Repository.Create(new NewRepository - { - Name = repoName, - HasIssues = false - }); - - try - { - Assert.False(createdRepository.HasIssues); - var repository = await github.Repository.Get(Helper.UserName, repoName); - Assert.False(repository.HasIssues); - } - finally - { - Helper.DeleteRepo(createdRepository); - } - } - - [IntegrationTest] - public async Task CreatesARepositoryWithoutAWiki() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("repo-without-wiki"); - - var createdRepository = await github.Repository.Create(new NewRepository - { - Name = repoName, - HasWiki = false - }); - - try - { - Assert.False(createdRepository.HasWiki); - var repository = await github.Repository.Get(Helper.UserName, repoName); - Assert.False(repository.HasWiki); - } - finally - { - Helper.DeleteRepo(createdRepository); - } - } - - [IntegrationTest] - public async Task CreatesARepositoryWithADescription() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("repo-with-description"); - - var createdRepository = await github.Repository.Create(new NewRepository - { - Name = repoName, - Description = "theDescription" - }); - - try - { - Assert.Equal("theDescription", createdRepository.Description); - var repository = await github.Repository.Get(Helper.UserName, repoName); - Assert.Equal("theDescription", repository.Description); - } - finally - { - Helper.DeleteRepo(createdRepository); - } - } - - [IntegrationTest] - public async Task CreatesARepositoryWithAHomepage() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("repo-with-homepage"); - - var createdRepository = await github.Repository.Create(new NewRepository - { - Name = repoName, - Homepage = "http://aUrl.to/nowhere" - }); - - try - { - Assert.Equal("http://aUrl.to/nowhere", createdRepository.Homepage); - var repository = await github.Repository.Get(Helper.UserName, repoName); - Assert.Equal("http://aUrl.to/nowhere", repository.Homepage); - } - finally - { - Helper.DeleteRepo(createdRepository); - } - } - - [IntegrationTest] - public async Task CreatesARepositoryWithAutoInit() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("repo-with-autoinit"); - - var createdRepository = await github.Repository.Create(new NewRepository - { - Name = repoName, - AutoInit = true - }); - - try - { - // TODO: Once the contents API has been added, check the actual files in the created repo - Assert.Equal(repoName, createdRepository.Name); - var repository = await github.Repository.Get(Helper.UserName, repoName); - Assert.Equal(repoName, repository.Name); - } - finally - { - Helper.DeleteRepo(createdRepository); - } - } - - [IntegrationTest] - public async Task CreatesARepositoryWithAGitignoreTemplate() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("repo-with-gitignore"); - - var createdRepository = await github.Repository.Create(new NewRepository - { - Name = repoName, - AutoInit = true, - GitignoreTemplate = "visualstudio" - }); - - try - { - // TODO: Once the contents API has been added, check the actual files in the created repo - Assert.Equal(repoName, createdRepository.Name); - var repository = await github.Repository.Get(Helper.UserName, repoName); - Assert.Equal(repoName, repository.Name); - } - finally - { - Helper.DeleteRepo(createdRepository); - } - } - } - - public class TheCreateMethodForOrganization - { - [IntegrationTest] - public async Task CreatesANewPublicRepository() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("public-org-repo"); - var orgLogin = Helper.UserName + "-org"; - - // TODO: Create the org as part of the test - var createdRepository = await github.Repository.Create(orgLogin, new NewRepository { Name = repoName }); - - try - { - var cloneUrl = string.Format("https://github.com/{0}/{1}.git", orgLogin, repoName); - Assert.Equal(repoName, createdRepository.Name); - Assert.False(createdRepository.Private); - Assert.Equal(cloneUrl, createdRepository.CloneUrl); - var repository = await github.Repository.Get(orgLogin, repoName); - Assert.Equal(repoName, repository.Name); - Assert.Null(repository.Description); - Assert.False(repository.Private); - Assert.True(repository.HasDownloads); - Assert.True(repository.HasIssues); - Assert.True(repository.HasWiki); - Assert.Null(repository.Homepage); - } - finally - { - Helper.DeleteRepo(createdRepository); - } - } - - // TODO: Add a test for the team_id param once an overload that takes an oranization is added - } - - public class TheDeleteMethod - { - [IntegrationTest] - public async Task DeletesRepository() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - var repoName = Helper.MakeNameWithTimestamp("repo-to-delete"); - await github.Repository.Create(new NewRepository { Name = repoName }); - - Assert.DoesNotThrow(async () => { await github.Repository.Delete(Helper.UserName, repoName); }); - } - } - - public class TheGetAsyncMethod - { - [IntegrationTest] - public async Task ReturnsSpecifiedRepository() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - - var repository = await github.Repository.Get("haacked", "seegit"); - - Assert.Equal("https://github.com/Haacked/SeeGit.git", repository.CloneUrl); + var cloneUrl = string.Format("https://github.com/{0}/{1}.git", Helper.UserName, repoName); + Assert.Equal(repoName, createdRepository.Name); + Assert.False(createdRepository.Private); + Assert.Equal(cloneUrl, createdRepository.CloneUrl); + var repository = await github.Repository.Get(Helper.UserName, repoName); + Assert.Equal(repoName, repository.Name); + Assert.Null(repository.Description); Assert.False(repository.Private); - Assert.False(repository.Fork); + Assert.True(repository.HasDownloads); + Assert.True(repository.HasIssues); + Assert.True(repository.HasWiki); + Assert.Null(repository.Homepage); } - - [IntegrationTest] - public async Task ReturnsForkedRepository() + finally { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - - var repository = await github.Repository.Get("haacked", "libgit2sharp"); - - Assert.Equal("https://github.com/Haacked/libgit2sharp.git", repository.CloneUrl); - Assert.True(repository.Fork); + Helper.DeleteRepo(createdRepository); } } - public class TheGetAllForOrgMethod + [IntegrationTest] + public async Task CreatesANewPrivateRepository() { - [IntegrationTest] - public async Task ReturnsAllRepositoriesForOrganization() + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("private-repo"); - var repositories = await github.Repository.GetAllForOrg("github"); + var createdRepository = await github.Repository.Create(new NewRepository + { + Name = repoName, + Private = true + }); - Assert.True(repositories.Count > 80); + try + { + Assert.True(createdRepository.Private); + var repository = await github.Repository.Get(Helper.UserName, repoName); + Assert.True(repository.Private); + } + finally + { + Helper.DeleteRepo(createdRepository); } } - public class TheGetReadmeMethod + [IntegrationTest] + public async Task CreatesARepositoryWithoutDownloads() { - [IntegrationTest] - public async Task ReturnsReadmeForSeeGit() + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("repo-without-downloads"); - // TODO: Change this to request github/Octokit.net once we make this OSS. - var readme = await github.Repository.GetReadme("haacked", "seegit"); - Assert.Equal("README.md", readme.Name); - string readMeHtml = await readme.GetHtmlContent(); - Assert.Contains(@"
WARNING: This is some haacky code.", readMeHtml); + var createdRepository = await github.Repository.Create(new NewRepository + { + Name = repoName, + HasDownloads = false + }); + + try + { + Assert.False(createdRepository.HasDownloads); + var repository = await github.Repository.Get(Helper.UserName, repoName); + Assert.False(repository.HasDownloads); } - - [IntegrationTest] - public async Task ReturnsReadmeHtmlForSeeGit() + finally { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; + Helper.DeleteRepo(createdRepository); + } + } - // TODO: Change this to request github/Octokit.net once we make this OSS. - var readmeHtml = await github.Repository.GetReadmeHtml("haacked", "seegit"); - Assert.True(readmeHtml.StartsWith("
WARNING: This is some haacky code.", readmeHtml); + [IntegrationTest] + public async Task CreatesARepositoryWithoutIssues() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("repo-without-issues"); + + var createdRepository = await github.Repository.Create(new NewRepository + { + Name = repoName, + HasIssues = false + }); + + try + { + Assert.False(createdRepository.HasIssues); + var repository = await github.Repository.Get(Helper.UserName, repoName); + Assert.False(repository.HasIssues); + } + finally + { + Helper.DeleteRepo(createdRepository); + } + } + + [IntegrationTest] + public async Task CreatesARepositoryWithoutAWiki() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("repo-without-wiki"); + + var createdRepository = await github.Repository.Create(new NewRepository + { + Name = repoName, + HasWiki = false + }); + + try + { + Assert.False(createdRepository.HasWiki); + var repository = await github.Repository.Get(Helper.UserName, repoName); + Assert.False(repository.HasWiki); + } + finally + { + Helper.DeleteRepo(createdRepository); + } + } + + [IntegrationTest] + public async Task CreatesARepositoryWithADescription() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("repo-with-description"); + + var createdRepository = await github.Repository.Create(new NewRepository + { + Name = repoName, + Description = "theDescription" + }); + + try + { + Assert.Equal("theDescription", createdRepository.Description); + var repository = await github.Repository.Get(Helper.UserName, repoName); + Assert.Equal("theDescription", repository.Description); + } + finally + { + Helper.DeleteRepo(createdRepository); + } + } + + [IntegrationTest] + public async Task CreatesARepositoryWithAHomepage() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("repo-with-homepage"); + + var createdRepository = await github.Repository.Create(new NewRepository + { + Name = repoName, + Homepage = "http://aUrl.to/nowhere" + }); + + try + { + Assert.Equal("http://aUrl.to/nowhere", createdRepository.Homepage); + var repository = await github.Repository.Get(Helper.UserName, repoName); + Assert.Equal("http://aUrl.to/nowhere", repository.Homepage); + } + finally + { + Helper.DeleteRepo(createdRepository); + } + } + + [IntegrationTest] + public async Task CreatesARepositoryWithAutoInit() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("repo-with-autoinit"); + + var createdRepository = await github.Repository.Create(new NewRepository + { + Name = repoName, + AutoInit = true + }); + + try + { + // TODO: Once the contents API has been added, check the actual files in the created repo + Assert.Equal(repoName, createdRepository.Name); + var repository = await github.Repository.Get(Helper.UserName, repoName); + Assert.Equal(repoName, repository.Name); + } + finally + { + Helper.DeleteRepo(createdRepository); + } + } + + [IntegrationTest] + public async Task CreatesARepositoryWithAGitignoreTemplate() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("repo-with-gitignore"); + + var createdRepository = await github.Repository.Create(new NewRepository + { + Name = repoName, + AutoInit = true, + GitignoreTemplate = "visualstudio" + }); + + try + { + // TODO: Once the contents API has been added, check the actual files in the created repo + Assert.Equal(repoName, createdRepository.Name); + var repository = await github.Repository.Get(Helper.UserName, repoName); + Assert.Equal(repoName, repository.Name); + } + finally + { + Helper.DeleteRepo(createdRepository); } } } + + public class TheCreateMethodForOrganization + { + [IntegrationTest] + public async Task CreatesANewPublicRepository() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("public-org-repo"); + var orgLogin = Helper.UserName + "-org"; + + // TODO: Create the org as part of the test + var createdRepository = await github.Repository.Create(orgLogin, new NewRepository { Name = repoName }); + + try + { + var cloneUrl = string.Format("https://github.com/{0}/{1}.git", orgLogin, repoName); + Assert.Equal(repoName, createdRepository.Name); + Assert.False(createdRepository.Private); + Assert.Equal(cloneUrl, createdRepository.CloneUrl); + var repository = await github.Repository.Get(orgLogin, repoName); + Assert.Equal(repoName, repository.Name); + Assert.Null(repository.Description); + Assert.False(repository.Private); + Assert.True(repository.HasDownloads); + Assert.True(repository.HasIssues); + Assert.True(repository.HasWiki); + Assert.Null(repository.Homepage); + } + finally + { + Helper.DeleteRepo(createdRepository); + } + } + + // TODO: Add a test for the team_id param once an overload that takes an oranization is added + } + + public class TheDeleteMethod + { + [IntegrationTest] + public async Task DeletesRepository() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + var repoName = Helper.MakeNameWithTimestamp("repo-to-delete"); + await github.Repository.Create(new NewRepository { Name = repoName }); + + Assert.DoesNotThrow(async () => { await github.Repository.Delete(Helper.UserName, repoName); }); + } + } + + public class TheGetAsyncMethod + { + [IntegrationTest] + public async Task ReturnsSpecifiedRepository() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + + var repository = await github.Repository.Get("haacked", "seegit"); + + Assert.Equal("https://github.com/Haacked/SeeGit.git", repository.CloneUrl); + Assert.False(repository.Private); + Assert.False(repository.Fork); + } + + [IntegrationTest] + public async Task ReturnsForkedRepository() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + + var repository = await github.Repository.Get("haacked", "libgit2sharp"); + + Assert.Equal("https://github.com/Haacked/libgit2sharp.git", repository.CloneUrl); + Assert.True(repository.Fork); + } + } + + public class TheGetAllForOrgMethod + { + [IntegrationTest] + public async Task ReturnsAllRepositoriesForOrganization() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + + var repositories = await github.Repository.GetAllForOrg("github"); + + Assert.True(repositories.Count > 80); + } + } + + public class TheGetReadmeMethod + { + [IntegrationTest] + public async Task ReturnsReadmeForSeeGit() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + + // TODO: Change this to request github/Octokit.net once we make this OSS. + var readme = await github.Repository.GetReadme("haacked", "seegit"); + Assert.Equal("README.md", readme.Name); + string readMeHtml = await readme.GetHtmlContent(); + Assert.Contains(@"
WARNING: This is some haacky code.", readMeHtml); + } + + [IntegrationTest] + public async Task ReturnsReadmeHtmlForSeeGit() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + + // TODO: Change this to request github/Octokit.net once we make this OSS. + var readmeHtml = await github.Repository.GetReadmeHtml("haacked", "seegit"); + Assert.True(readmeHtml.StartsWith("
WARNING: This is some haacky code.", readmeHtml); + } + } } diff --git a/Octokit.Tests.Integration/Clients/UsersClientTests.cs b/Octokit.Tests.Integration/Clients/UsersClientTests.cs index 07d3f644..69d7c8ac 100644 --- a/Octokit.Tests.Integration/Clients/UsersClientTests.cs +++ b/Octokit.Tests.Integration/Clients/UsersClientTests.cs @@ -3,119 +3,118 @@ using System.Net; using System.Net.Http.Headers; using System.Reactive.Linq; using System.Threading.Tasks; +using Octokit; using Octokit.Internal; using Octokit.Tests.Helpers; +using Octokit.Tests.Integration; using Xunit; -namespace Octokit.Tests.Integration +public class UsersClientTests { - public class UsersClientTests + public class TheGetMethod { - public class TheGetMethod + [IntegrationTest] + public async Task ReturnsSpecifiedUser() { - [IntegrationTest] - public async Task ReturnsSpecifiedUser() + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; + Credentials = Helper.Credentials + }; - // Get a user by username - var user = await github.User.Get("tclem"); + // Get a user by username + var user = await github.User.Get("tclem"); - Assert.Equal("GitHub", user.Company); - } - - [IntegrationTest] - public async Task ReturnsSpecifiedUserUsingAwaitableCredentialProvider() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests"), - new ObservableCredentialProvider()); - - // Get a user by username - var user = await github.User.Get("tclem"); - - Assert.Equal("GitHub", user.Company); - } - - class ObservableCredentialProvider : ICredentialStore - { - public async Task GetCredentials() - { - return await Observable.Return(Helper.Credentials); - } - } + Assert.Equal("GitHub", user.Company); } - public class TheCurrentMethod + [IntegrationTest] + public async Task ReturnsSpecifiedUserUsingAwaitableCredentialProvider() { - [IntegrationTest] - public async Task ReturnsSpecifiedUser() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; + var github = new GitHubClient(new ProductHeaderValue("OctokitTests"), + new ObservableCredentialProvider()); - var user = await github.User.Current(); + // Get a user by username + var user = await github.User.Get("tclem"); - Assert.Equal(Helper.UserName, user.Login); - } + Assert.Equal("GitHub", user.Company); } - public class TheUpdateMethod + class ObservableCredentialProvider : ICredentialStore { - [IntegrationTest] - public async Task FailsWhenNotAuthenticated() + public async Task GetCredentials() { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")); - var userUpdate = new UserUpdate - { - Name = Helper.Credentials.Login, - Bio = "UPDATED BIO" - }; - - var e = await AssertEx.Throws(async - () => await github.User.Update(userUpdate)); - Assert.Equal(HttpStatusCode.Unauthorized, e.StatusCode); - } - - [IntegrationTest] - public async Task FailsWhenAuthenticatedWithBadCredentials() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = new Credentials(Helper.UserName, "bad-password") - }; - var userUpdate = new UserUpdate - { - Name = Helper.Credentials.Login, - Bio = "UPDATED BIO" - }; - - var e = await AssertEx.Throws(async - () => await github.User.Update(userUpdate)); - Assert.Equal(HttpStatusCode.Unauthorized, e.StatusCode); - } - } - - public class TheGetEmailsMethod - { - public async Task RetrievesEmailsForUser() - { - var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) - { - Credentials = Helper.Credentials - }; - - var emails = await github.User.GetEmails(); - - Assert.Equal(1, emails.Count()); - Assert.Equal("test-octowin@example.com", emails.First().Email); - Assert.True(emails.First().Primary); - Assert.False(emails.First().Verified); + return await Observable.Return(Helper.Credentials); } } } + + public class TheCurrentMethod + { + [IntegrationTest] + public async Task ReturnsSpecifiedUser() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + + var user = await github.User.Current(); + + Assert.Equal(Helper.UserName, user.Login); + } + } + + public class TheUpdateMethod + { + [IntegrationTest] + public async Task FailsWhenNotAuthenticated() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")); + var userUpdate = new UserUpdate + { + Name = Helper.Credentials.Login, + Bio = "UPDATED BIO" + }; + + var e = await AssertEx.Throws(async + () => await github.User.Update(userUpdate)); + Assert.Equal(HttpStatusCode.Unauthorized, e.StatusCode); + } + + [IntegrationTest] + public async Task FailsWhenAuthenticatedWithBadCredentials() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = new Credentials(Helper.UserName, "bad-password") + }; + var userUpdate = new UserUpdate + { + Name = Helper.Credentials.Login, + Bio = "UPDATED BIO" + }; + + var e = await AssertEx.Throws(async + () => await github.User.Update(userUpdate)); + Assert.Equal(HttpStatusCode.Unauthorized, e.StatusCode); + } + } + + public class TheGetEmailsMethod + { + public async Task RetrievesEmailsForUser() + { + var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + + var emails = await github.User.GetEmails(); + + Assert.Equal(1, emails.Count()); + Assert.Equal("test-octowin@example.com", emails.First().Email); + Assert.True(emails.First().Primary); + Assert.False(emails.First().Verified); + } + } }