From 6d433945a04a01c47a6d9a2b85a3be5872543f33 Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Wed, 27 Nov 2013 11:03:52 -0800 Subject: [PATCH] added Blob to IGitDatabaseClient, added integration tests --- .../Clients/BlobClientTests.cs | 66 +++++++++++++++++++ .../Octokit.Tests.Integration.csproj | 1 + Octokit/Clients/GitDatabaseClient.cs | 2 + Octokit/Clients/IGitDatabaseClient.cs | 1 + 4 files changed, 70 insertions(+) create mode 100644 Octokit.Tests.Integration/Clients/BlobClientTests.cs diff --git a/Octokit.Tests.Integration/Clients/BlobClientTests.cs b/Octokit.Tests.Integration/Clients/BlobClientTests.cs new file mode 100644 index 00000000..9dd20c12 --- /dev/null +++ b/Octokit.Tests.Integration/Clients/BlobClientTests.cs @@ -0,0 +1,66 @@ +using System; +using System.Net.Http.Headers; +using Octokit; +using Octokit.Tests.Integration; +using System.Threading.Tasks; +using Xunit; +using System.Text; + +public class BlobClientTests : IDisposable +{ + readonly IBlobsClient _fixture; + readonly Repository _repository; + readonly string _owner; + + public BlobClientTests() + { + var client = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + Credentials = Helper.Credentials + }; + _fixture = client.GitDatabase.Blob; + + var repoName = Helper.MakeNameWithTimestamp("public-repo"); + _repository = client.Repository.Create(new NewRepository { Name = repoName, AutoInit = true }).Result; + _owner = _repository.Owner.Login; + } + + [IntegrationTest] + public async Task CanCreateABlob() + { + var blob = new NewBlob + { + Content = "Hello World!", + Encoding = EncodingType.Utf8 + }; + + var result = await _fixture.Create(_owner, _repository.Name, blob); + + Assert.False(String.IsNullOrWhiteSpace(result.Sha)); + } + + [IntegrationTest] + public async Task CanGetABlob() + { + var newBlob = new NewBlob + { + Content = "Hello World!", + Encoding = EncodingType.Utf8 + }; + + var result = await _fixture.Create(_owner, _repository.Name, newBlob); + var blob = await _fixture.Get(_owner, _repository.Name, result.Sha); + + Assert.Equal(result.Sha, blob.Sha); + Assert.Equal(EncodingType.Base64, blob.Encoding); + + var contents = Encoding.UTF8.GetString(Convert.FromBase64String(blob.Content)); + + Assert.Equal("Hello World!", contents); + } + + public void Dispose() + { + Helper.DeleteRepo(_repository); + } +} diff --git a/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj b/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj index 3650e936..63518c46 100644 --- a/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj +++ b/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj @@ -58,6 +58,7 @@ + diff --git a/Octokit/Clients/GitDatabaseClient.cs b/Octokit/Clients/GitDatabaseClient.cs index d7738733..51297036 100644 --- a/Octokit/Clients/GitDatabaseClient.cs +++ b/Octokit/Clients/GitDatabaseClient.cs @@ -5,11 +5,13 @@ public GitDatabaseClient(IApiConnection apiConnection) : base(apiConnection) { + Blob = new BlobsClient(apiConnection); Tag = new TagsClient(apiConnection); Commit = new CommitsClient(apiConnection); Reference = new ReferencesClient(apiConnection); } + public IBlobsClient Blob { get; set; } public ITagsClient Tag { get; set; } public ICommitsClient Commit { get; set; } public IReferencesClient Reference { get; set; } diff --git a/Octokit/Clients/IGitDatabaseClient.cs b/Octokit/Clients/IGitDatabaseClient.cs index e4494306..77da8040 100644 --- a/Octokit/Clients/IGitDatabaseClient.cs +++ b/Octokit/Clients/IGitDatabaseClient.cs @@ -5,6 +5,7 @@ /// public interface IGitDatabaseClient { + IBlobsClient Blob { get; set; } ITagsClient Tag { get; set; } ICommitsClient Commit { get; set; } IReferencesClient Reference { get; set; }