using System;
using System.Linq;
using System.Threading.Tasks;
using Xunit;
namespace Octokit.Tests.Integration.Clients
{
public class RepositoryContentsClientTests
{
public class TheGetReadmeMethod
{
[IntegrationTest]
public async Task ReturnsReadmeForSeeGit()
{
var github = new GitHubClient(new ProductHeaderValue("OctokitTests"))
{
Credentials = Helper.Credentials
};
var readme = await github.Repository.Content.GetReadme("octokit", "octokit.net");
Assert.Equal("README.md", readme.Name);
string readMeHtml = await readme.GetHtmlContent();
Assert.True(readMeHtml.StartsWith("
2);
Assert.Equal(ContentType.Dir, contents.First().Type);
}
}
[IntegrationTest]
public async Task CrudTest()
{
var client = new GitHubClient(new ProductHeaderValue("OctokitTests"))
{
Credentials = Helper.Credentials
};
Repository repository = null;
try
{
var fixture = client.Repository.Content;
var repoName = Helper.MakeNameWithTimestamp("source-repo");
repository = await client.Repository.Create(new NewRepository { Name = repoName, AutoInit = true });
var file = await fixture.CreateFile(
repository.Owner.Login,
repository.Name,
"somefile.txt",
new CreateFileRequest("Test commit", "Some Content"));
Assert.Equal("somefile.txt", file.Content.Name);
var contents = await fixture.GetContents(repository.Owner.Login, repository.Name, "somefile.txt");
string fileSha = contents.First().Sha;
Assert.Equal("Some Content", contents.First().Content);
var update = await fixture.UpdateFile(
repository.Owner.Login,
repository.Name,
"somefile.txt",
new UpdateFileRequest("Updating file", "New Content", fileSha));
Assert.Equal("somefile.txt", update.Content.Name);
contents = await fixture.GetContents(repository.Owner.Login, repository.Name, "somefile.txt");
Assert.Equal("New Content", contents.First().Content);
fileSha = contents.First().Sha;
await fixture.DeleteFile(
repository.Owner.Login,
repository.Name,
"somefile.txt",
new DeleteFileRequest("Deleted file", fileSha));
await Assert.ThrowsAsync(
async () => await fixture.GetContents(repository.Owner.Login, repository.Name, "somefile.txt"));
}
finally
{
if (repository != null)
client.Repository.Delete(repository.Owner.Login, repository.Name);
}
}
}
}