Files
octokit.net/Octokit.Tests.Integration/Clients/DeploymentStatusClientTests.cs
Tom Longhurst cd1835326b Fix xUnit Warnings (#2906)
* Fix xUnit Warnings

* Fix

* Fix formatting in AsyncPaginationExtensionGenerator.cs

---------

Co-authored-by: Keegan Campbell <me@kfcampbell.com>
2024-04-15 13:19:26 -07:00

261 lines
10 KiB
C#

using System;
using System.Threading.Tasks;
using Octokit;
using Octokit.Tests.Integration;
using Xunit;
using Octokit.Tests.Integration.Helpers;
public class DeploymentStatusClientTests : IDisposable
{
private readonly IDeploymentsClient _deploymentsClient;
private readonly RepositoryContext _context;
private readonly Deployment _deployment;
public DeploymentStatusClientTests()
{
var github = Helper.GetAuthenticatedClient();
_deploymentsClient = github.Repository.Deployment;
_context = github.CreateRepositoryContextWithAutoInit("public-repo").Result;
var blob = new NewBlob
{
Content = "Hello World!",
Encoding = EncodingType.Utf8
};
var blobResult = github.Git.Blob.Create(_context.RepositoryOwner, _context.RepositoryName, blob).Result;
var newTree = new NewTree();
newTree.Tree.Add(new NewTreeItem
{
Type = TreeType.Blob,
Mode = FileMode.File,
Path = "README.md",
Sha = blobResult.Sha
});
var treeResult = github.Git.Tree.Create(_context.RepositoryOwner, _context.RepositoryName, newTree).Result;
var newCommit = new NewCommit("test-commit", treeResult.Sha);
var commit = github.Git.Commit.Create(_context.RepositoryOwner, _context.RepositoryName, newCommit).Result;
var newDeployment = new NewDeployment(commit.Sha)
{
Environment = "production",
AutoMerge = false
};
_deployment = _deploymentsClient.Create(_context.RepositoryOwner, _context.RepositoryName, newDeployment).Result;
}
[IntegrationTest]
public async Task CanCreateDeploymentStatus()
{
var newStatus = new NewDeploymentStatus(DeploymentState.Success);
var status = await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus);
Assert.NotNull(status);
Assert.Equal(DeploymentState.Success, status.State);
}
[IntegrationTest]
public async Task CanCreateDeploymentStatusWithNewState()
{
var newStatus = new NewDeploymentStatus(DeploymentState.InProgress);
var status = await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus);
Assert.NotNull(status);
Assert.Equal(DeploymentState.InProgress, status.State);
}
[IntegrationTest]
public async Task CanCreateDeploymentStatusWithRepositoryId()
{
var newStatus = new NewDeploymentStatus(DeploymentState.Success);
var status = await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus);
Assert.NotNull(status);
Assert.Equal(DeploymentState.Success, status.State);
}
[IntegrationTest]
public async Task CanReadDeploymentStatuses()
{
var newStatus = new NewDeploymentStatus(DeploymentState.Success) { LogUrl = "http://test.com/log", EnvironmentUrl = "http:test.com/staging" };
await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus);
var statuses = await _deploymentsClient.Status.GetAll(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id);
Assert.NotEmpty(statuses);
Assert.Equal(DeploymentState.Success, statuses[0].State);
Assert.Equal(newStatus.LogUrl, statuses[0].LogUrl);
Assert.Equal(newStatus.EnvironmentUrl, statuses[0].EnvironmentUrl);
}
[IntegrationTest]
public async Task CanReadDeploymentStatusesWithRepositoryId()
{
var newStatus = new NewDeploymentStatus(DeploymentState.Success);
await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus);
var statuses = await _deploymentsClient.Status.GetAll(_context.Repository.Id, _deployment.Id);
Assert.NotEmpty(statuses);
Assert.Equal(DeploymentState.Success, statuses[0].State);
}
[IntegrationTest]
public async Task ReturnsCorrectCountOfDeploymentStatusesWithoutStart()
{
var newStatus1 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus2 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus3 = new NewDeploymentStatus(DeploymentState.Success);
await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus1);
await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus2);
await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus3);
var options = new ApiOptions
{
PageSize = 3,
PageCount = 1
};
var deploymentStatuses = await _deploymentsClient.Status.GetAll(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, options);
Assert.Equal(3, deploymentStatuses.Count);
}
[IntegrationTest]
public async Task ReturnsCorrectCountOfDeploymentStatusesWithoutStartWithRepositoryId()
{
var newStatus1 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus2 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus3 = new NewDeploymentStatus(DeploymentState.Success);
await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus1);
await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus2);
await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus3);
var options = new ApiOptions
{
PageSize = 3,
PageCount = 1
};
var deploymentStatuses = await _deploymentsClient.Status.GetAll(_context.Repository.Id, _deployment.Id, options);
Assert.Equal(3, deploymentStatuses.Count);
}
[IntegrationTest]
public async Task ReturnsCorrectCountOfDeploymentStatusesWithStart()
{
var newStatus1 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus2 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus3 = new NewDeploymentStatus(DeploymentState.Success);
await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus1);
await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus2);
await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus3);
var options = new ApiOptions
{
PageSize = 2,
PageCount = 1,
StartPage = 2
};
var deploymentStatuses = await _deploymentsClient.Status.GetAll(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, options);
Assert.Single(deploymentStatuses);
}
[IntegrationTest]
public async Task ReturnsCorrectCountOfDeploymentStatusesWithStartWithRepositoryId()
{
var newStatus1 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus2 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus3 = new NewDeploymentStatus(DeploymentState.Success);
await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus1);
await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus2);
await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus3);
var options = new ApiOptions
{
PageSize = 2,
PageCount = 1,
StartPage = 2
};
var deploymentStatuses = await _deploymentsClient.Status.GetAll(_context.Repository.Id, _deployment.Id, options);
Assert.Single(deploymentStatuses);
}
[IntegrationTest]
public async Task ReturnsDistinctDeploymentStatusesBasedOnStartPage()
{
var newStatus1 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus2 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus3 = new NewDeploymentStatus(DeploymentState.Success);
await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus1);
await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus2);
await _deploymentsClient.Status.Create(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, newStatus3);
var startOptions = new ApiOptions
{
PageSize = 1,
PageCount = 1
};
var firstPage = await _deploymentsClient.Status.GetAll(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, startOptions);
var skipStartOptions = new ApiOptions
{
PageSize = 1,
PageCount = 1,
StartPage = 2
};
var secondPage = await _deploymentsClient.Status.GetAll(_context.RepositoryOwner, _context.RepositoryName, _deployment.Id, skipStartOptions);
Assert.NotEqual(firstPage[0].Id, secondPage[0].Id);
}
[IntegrationTest]
public async Task ReturnsDistinctDeploymentStatusesBasedOnStartPageWithRepositoryId()
{
var newStatus1 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus2 = new NewDeploymentStatus(DeploymentState.Success);
var newStatus3 = new NewDeploymentStatus(DeploymentState.Success);
await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus1);
await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus2);
await _deploymentsClient.Status.Create(_context.Repository.Id, _deployment.Id, newStatus3);
var startOptions = new ApiOptions
{
PageSize = 1,
PageCount = 1
};
var firstPage = await _deploymentsClient.Status.GetAll(_context.Repository.Id, _deployment.Id, startOptions);
var skipStartOptions = new ApiOptions
{
PageSize = 1,
PageCount = 1,
StartPage = 2
};
var secondPage = await _deploymentsClient.Status.GetAll(_context.Repository.Id, _deployment.Id, skipStartOptions);
Assert.NotEqual(firstPage[0].Id, secondPage[0].Id);
}
public void Dispose()
{
_context.Dispose();
}
}