mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-06-09 21:09:51 +00:00
* Add "transfer repository" accept header * Create RepositoryTransfer class This will be used to send the POST request to initiate the transfer. * Create Ensure method to check for empty or null arrays * Change arg name in Ensure for nonempty arrays array -> value * Add xmldoc for ArgumentNotNullOrEmptyArray * Create Transfer method in IRepositoriesClient * Implement Transfer method in RepositoriesClient * Fix typo in xmldoc for Transfer * Add <returns> to Transfer xmldoc * Create Transfer method in IObservableRepositoriesClient * Implement Transfer in ObservableRepositoriesClient * Add DebuggerDIsplayAttribute do RepositoryTransfer * Add unit tests for RepositoryTransfer constructors * Change TeamId property type to IReadOnlyList<int> * Rewrite DebuggerDisplay property into something more succint * Make new Ensure method into an IEnumerable<T> checker * Add XmlDoc to RepositoryTransfer * Tweaks to first ctor XmlDoc * Create basic unit tests for Transfer * Create ApiUrls.RepositoryTransfer * Use ApiUrls.RepositoryTransfer to get URI in Transfer Previous implementation used wrong URI * Start implementing RepositoriesClientTests.TheTransferMethod * Implement org -> user transfer integration test * Implement user -> org transfer integration test * [WIP] Implement user -> org transfer with teams Implementation doesn't work, API usage seems correct. * Mark transfer user -> org w/ teams integration test with FIXME * Add second end point URI to ApiUrls * Add other Transfer overload to RepositoriesClient for other end point * Create unit tests for other Transfer endpoint * Add overload to IRepositoriesClient * Add integration tests for overload * Reorganize unit tests for TheTransferMethod * Rename id to repositoryId * Reorganize unit tests for RepositoriesClientTests.Transfer * Add second endpoint to IObservableRepositoriesClient * Add XmlDoc to second Transfer endpoint * Add XmlDoc to second Transfer endpoint in RepositoriesClient * Reimplement "with teams" integration tests using TeamContext * Rename integration test for consistency * Add asserts to actual ownership transfer * Rename RepositoryTransfer.TeamId property to TeamIds * Add awaiit to ThrowsAsync in RepositoriesClientTests * Put await in right places for unit tests * Add Ensures for Transfer method in RepositoriesClient * Add XmlDoc to ApiUrls.RepositoryTransfer with repo id * Update XmlDoc for RepositoryTransfer constructor and teamIds property * Rename currentOwner to owner * Add Ensure guards to ObservableRepositoriesClient.Transfer methods * Add unit tests for ObservableRepositoriesClient
This commit is contained in:
committed by
Ryan Gribble
parent
fb928f68d5
commit
74dc51a6f5
@@ -1681,4 +1681,126 @@ public class RepositoriesClientTests
|
||||
Assert.Equal("MIT License", license.License.Name);
|
||||
}
|
||||
}
|
||||
|
||||
public class TheTransferMethod
|
||||
{
|
||||
[IntegrationTest]
|
||||
public async Task TransfersFromOrgToUser()
|
||||
{
|
||||
var github = Helper.GetAuthenticatedClient();
|
||||
var newRepo = new NewRepository(Helper.MakeNameWithTimestamp("transferred-repo"));
|
||||
var newOwner = Helper.UserName;
|
||||
using (var context = await github.CreateRepositoryContext(Helper.Organization, newRepo))
|
||||
{
|
||||
var transfer = new RepositoryTransfer(newOwner);
|
||||
await github.Repository.Transfer(context.RepositoryOwner, context.RepositoryName, transfer);
|
||||
var transferred = await github.Repository.Get(newOwner, context.RepositoryName);
|
||||
|
||||
Assert.Equal(newOwner, transferred.Owner.Login);
|
||||
}
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task TransfersFromOrgToUserById()
|
||||
{
|
||||
var github = Helper.GetAuthenticatedClient();
|
||||
var newRepo = new NewRepository(Helper.MakeNameWithTimestamp("transferred-repo"));
|
||||
var newOwner = Helper.UserName;
|
||||
using (var context = await github.CreateRepositoryContext(Helper.Organization, newRepo))
|
||||
{
|
||||
var transfer = new RepositoryTransfer(newOwner);
|
||||
await github.Repository.Transfer(context.RepositoryId, transfer);
|
||||
var transferred = await github.Repository.Get(context.RepositoryId);
|
||||
|
||||
Assert.Equal(newOwner, transferred.Owner.Login);
|
||||
}
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task TransfersFromUserToOrg()
|
||||
{
|
||||
var github = Helper.GetAuthenticatedClient();
|
||||
var newRepo = new NewRepository(Helper.MakeNameWithTimestamp("transferred-repo"));
|
||||
var newOwner = Helper.Organization;
|
||||
using (var context = await github.CreateRepositoryContext(newRepo))
|
||||
{
|
||||
var transfer = new RepositoryTransfer(newOwner);
|
||||
await github.Repository.Transfer(context.RepositoryOwner, context.RepositoryName, transfer);
|
||||
var transferred = await github.Repository.Get(newOwner, context.RepositoryName);
|
||||
|
||||
Assert.Equal(newOwner, transferred.Owner.Login);
|
||||
}
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task TransfersFromUserToOrgById()
|
||||
{
|
||||
var github = Helper.GetAuthenticatedClient();
|
||||
var newRepo = new NewRepository(Helper.MakeNameWithTimestamp("transferred-repo"));
|
||||
var newOwner = Helper.Organization;
|
||||
using (var context = await github.CreateRepositoryContext(newRepo))
|
||||
{
|
||||
var transfer = new RepositoryTransfer(newOwner);
|
||||
await github.Repository.Transfer(context.RepositoryId, transfer);
|
||||
var transferred = await github.Repository.Get(context.RepositoryId);
|
||||
|
||||
Assert.Equal(newOwner, transferred.Owner.Login);
|
||||
}
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task TransfersFromUserToOrgWithTeams()
|
||||
{
|
||||
// FIXME API doesn't add teams when transferring to an organization
|
||||
var github = Helper.GetAuthenticatedClient();
|
||||
var newRepo = new NewRepository(Helper.MakeNameWithTimestamp("transferred-repo"));
|
||||
var newOwner = Helper.Organization;
|
||||
|
||||
using (var repositoryContext = await github.CreateRepositoryContext(newRepo))
|
||||
{
|
||||
NewTeam team = new NewTeam(Helper.MakeNameWithTimestamp("transfer-team"));
|
||||
using (var teamContext = await github.CreateTeamContext(Helper.Organization, team)) {
|
||||
var transferTeamIds = new int[] { teamContext.TeamId };
|
||||
var transfer = new RepositoryTransfer(newOwner, transferTeamIds);
|
||||
await github.Repository.Transfer(
|
||||
repositoryContext.RepositoryOwner, repositoryContext.RepositoryName, transfer);
|
||||
var transferred = await github.Repository.Get(repositoryContext.RepositoryId);
|
||||
var repoTeams = await github.Repository.GetAllTeams(repositoryContext.RepositoryId);
|
||||
|
||||
Assert.Equal(newOwner, transferred.Owner.Login);
|
||||
// transferTeamIds is a subset of repoTeams
|
||||
Assert.Empty(
|
||||
transferTeamIds.Except(
|
||||
repoTeams.Select(t => t.Id)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[IntegrationTest]
|
||||
public async Task TransfersFromUserToOrgWithTeamsById()
|
||||
{
|
||||
// FIXME API doesn't add teams when transferring to an organization
|
||||
var github = Helper.GetAuthenticatedClient();
|
||||
var newRepo = new NewRepository(Helper.MakeNameWithTimestamp("transferred-repo"));
|
||||
var newOwner = Helper.Organization;
|
||||
|
||||
using (var repositoryContext = await github.CreateRepositoryContext(newRepo))
|
||||
{
|
||||
NewTeam team = new NewTeam(Helper.MakeNameWithTimestamp("transfer-team"));
|
||||
using (var teamContext = await github.CreateTeamContext(Helper.Organization, team)) {
|
||||
var transferTeamIds = new int[] { teamContext.TeamId };
|
||||
var transfer = new RepositoryTransfer(newOwner, transferTeamIds);
|
||||
await github.Repository.Transfer(repositoryContext.RepositoryId, transfer);
|
||||
var transferred = await github.Repository.Get(repositoryContext.RepositoryId);
|
||||
var repoTeams = await github.Repository.GetAllTeams(repositoryContext.RepositoryId);
|
||||
|
||||
Assert.Equal(newOwner, transferred.Owner.Login);
|
||||
// transferTeamIds is a subset of repoTeams
|
||||
Assert.Empty(
|
||||
transferTeamIds.Except(
|
||||
repoTeams.Select(t => t.Id)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user