From ef22c342270d5ea2b043502373ea136e9c595239 Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Mon, 5 May 2014 08:33:50 +0800 Subject: [PATCH] added some tests around uploading assets --- .../Clients/ReleasesClientTests.cs | 53 +++++++++++++++++++ Octokit.Tests.Integration/Helper.cs | 14 +++++ .../Octokit.Tests.Integration.csproj | 3 ++ .../fixtures/hello-world.txt | 1 + 4 files changed, 71 insertions(+) create mode 100644 Octokit.Tests.Integration/fixtures/hello-world.txt diff --git a/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs b/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs index c8a64942..399a87c5 100644 --- a/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs +++ b/Octokit.Tests.Integration/Clients/ReleasesClientTests.cs @@ -56,4 +56,57 @@ public class ReleasesClientTests Helper.DeleteRepo(_repository); } } + + public class TheUploadAssetMethod : IDisposable + { + readonly IReleasesClient _releaseClient; + readonly Repository _repository; + readonly string _repositoryOwner; + readonly string _repositoryName; + readonly GitHubClient _github; + + public TheUploadAssetMethod() + { + _github = new GitHubClient(new ProductHeaderValue("OctokitTests")) + { + 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; + } + + [IntegrationTest] + public async Task CanUploadAndRetrieveAnAsset() + { + var releaseWithNoUpdate = new ReleaseUpdate("0.1") { Draft = true }; + var release = await _releaseClient.CreateRelease(_repositoryOwner, _repositoryName, releaseWithNoUpdate); + + var stream = Helper.LoadFixture("hello-world.txt"); + + var newAsset = new ReleaseAssetUpload + { + ContentType = "text/plain", FileName = "hello-world.txt", RawData = stream + }; + + var result = await _releaseClient.UploadAsset(release, newAsset); + + Assert.True(result.Id > 0); + + var assets = await _releaseClient.GetAssets(_repositoryOwner, _repositoryName, release.Id); + + Assert.Equal(1, assets.Count); + var asset = assets[0]; + Assert.Equal(result.Id, asset.Id); + Assert.NotNull(asset.Url); + } + + public void Dispose() + { + Helper.DeleteRepo(_repository); + } + } } diff --git a/Octokit.Tests.Integration/Helper.cs b/Octokit.Tests.Integration/Helper.cs index 3b44476f..90f220e3 100644 --- a/Octokit.Tests.Integration/Helper.cs +++ b/Octokit.Tests.Integration/Helper.cs @@ -1,6 +1,8 @@ using System; using System.Diagnostics; +using System.IO; using System.Net.Http.Headers; +using System.Reflection; namespace Octokit.Tests.Integration { @@ -57,5 +59,17 @@ namespace Octokit.Tests.Integration { return string.Concat(name, "-", DateTime.UtcNow.ToString("yyyyMMddhhmmssfff")); } + + public static Stream LoadFixture(string fileName) + { + var key = "Octokit.Tests.Integration.fixtures." + fileName; + var stream = typeof(Helper).Assembly.GetManifestResourceStream(key); + if (stream == null) + { + throw new InvalidOperationException( + "The file '" + fileName + "' was not found as an embedded resource in the assembly. Failing the test..."); + } + return stream; + } } } diff --git a/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj b/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj index 8ed7758e..db710660 100644 --- a/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj +++ b/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj @@ -116,6 +116,9 @@ + + +