mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-06-07 04:16:51 +00:00
feat: Add create organization invitation via email (#2895)
* Add API request to create org invitation * Add tests for create org invitation * Add IObservable API request to create org invitation * Add tests for IObservable create org invitation
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
using System.Linq;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Octokit.Tests.Helpers;
|
||||
using Octokit.Tests.Integration.Helpers;
|
||||
using Xunit;
|
||||
|
||||
@@ -172,6 +174,95 @@ namespace Octokit.Tests.Integration.Clients
|
||||
}
|
||||
}
|
||||
|
||||
public class TheCreateOrganizationInvitationMethod
|
||||
{
|
||||
readonly IGitHubClient _gitHub;
|
||||
|
||||
public TheCreateOrganizationInvitationMethod()
|
||||
{
|
||||
_gitHub = Helper.GetAuthenticatedClient();
|
||||
}
|
||||
|
||||
[OrganizationTest]
|
||||
public async Task ReturnsOrganizationMembershipInvitationViaUserId()
|
||||
{
|
||||
var user = await _gitHub.User.Get("alfhenrik-test-2");
|
||||
|
||||
var organizationInvitationRequest = new OrganizationInvitationRequest(user.Id);
|
||||
var organizationMembershipInvitation = await _gitHub.Organization.Member.CreateOrganizationInvitation(Helper.Organization, organizationInvitationRequest);
|
||||
|
||||
Assert.Equal("alfhenrik-test-2", organizationMembershipInvitation.Login);
|
||||
Assert.Equal(OrganizationMembershipRole.DirectMember, organizationMembershipInvitation.Role.Value);
|
||||
Assert.Equal(Helper.UserName, organizationMembershipInvitation.Inviter.Login);
|
||||
|
||||
await _gitHub.Organization.Member.RemoveOrganizationMembership(Helper.Organization, "alfhenrik-test-2");
|
||||
}
|
||||
|
||||
[OrganizationTest]
|
||||
public async Task ReturnsOrganizationMembershipInvitationViaUserEmail()
|
||||
{
|
||||
var email = RandomEmailGenerator.GenerateRandomEmail();
|
||||
|
||||
var organizationInvitationRequest = new OrganizationInvitationRequest(email);
|
||||
var organizationMembershipInvitation = await _gitHub.Organization.Member.CreateOrganizationInvitation(Helper.Organization, organizationInvitationRequest);
|
||||
|
||||
Assert.Equal(email, organizationMembershipInvitation.Email);
|
||||
Assert.Equal(OrganizationMembershipRole.DirectMember, organizationMembershipInvitation.Role.Value);
|
||||
Assert.Equal(Helper.UserName, organizationMembershipInvitation.Inviter.Login);
|
||||
|
||||
await _gitHub.Organization.Member.CancelOrganizationInvitation(Helper.Organization, organizationMembershipInvitation.Id);
|
||||
}
|
||||
|
||||
[OrganizationTest]
|
||||
public async Task ThrowsApiValidationExceptionForCurrentOrganizationMembers()
|
||||
{
|
||||
var user = await _gitHub.User.Get(Helper.UserName);
|
||||
var organizationInvitationRequest = new OrganizationInvitationRequest(user.Id);
|
||||
|
||||
await Assert.ThrowsAsync<ApiValidationException>(() => _gitHub.Organization.Member.CreateOrganizationInvitation(Helper.Organization, organizationInvitationRequest));
|
||||
}
|
||||
|
||||
[OrganizationTest]
|
||||
public async Task ReturnsOrganizationMembershipInvitationSingleTeam()
|
||||
{
|
||||
var user = await _gitHub.User.Get("alfhenrik-test-2");
|
||||
|
||||
var team1 = await _gitHub.Organization.Team.Create(Helper.Organization, new NewTeam("TestTeam1"));
|
||||
|
||||
var organizationInvitationRequest = new OrganizationInvitationRequest(user.Id, new int[] {team1.Id});
|
||||
var organizationMembershipInvitation = await _gitHub.Organization.Member.CreateOrganizationInvitation(Helper.Organization, organizationInvitationRequest);
|
||||
|
||||
Assert.Equal("alfhenrik-test-2", organizationMembershipInvitation.Login);
|
||||
Assert.Equal(OrganizationMembershipRole.DirectMember, organizationMembershipInvitation.Role.Value);
|
||||
Assert.Equal(Helper.UserName, organizationMembershipInvitation.Inviter.Login);
|
||||
Assert.Equal(1, organizationMembershipInvitation.TeamCount);
|
||||
|
||||
await _gitHub.Organization.Team.Delete(Helper.Organization, team1.Slug);
|
||||
await _gitHub.Organization.Member.RemoveOrganizationMembership(Helper.Organization, "alfhenrik-test-2");
|
||||
}
|
||||
|
||||
[OrganizationTest]
|
||||
public async Task ReturnsOrganizationMembershipInvitationMultipleTeams()
|
||||
{
|
||||
var user = await _gitHub.User.Get("alfhenrik-test-2");
|
||||
|
||||
var team1 = await _gitHub.Organization.Team.Create(Helper.Organization, new NewTeam("TestTeam1"));
|
||||
var team2 = await _gitHub.Organization.Team.Create(Helper.Organization, new NewTeam("TestTeam2"));
|
||||
|
||||
var organizationInvitationRequest = new OrganizationInvitationRequest(user.Id, new int[] {team1.Id, team2.Id});
|
||||
var organizationMembershipInvitation = await _gitHub.Organization.Member.CreateOrganizationInvitation(Helper.Organization, organizationInvitationRequest);
|
||||
|
||||
Assert.Equal("alfhenrik-test-2", organizationMembershipInvitation.Login);
|
||||
Assert.Equal(OrganizationMembershipRole.DirectMember, organizationMembershipInvitation.Role.Value);
|
||||
Assert.Equal(Helper.UserName, organizationMembershipInvitation.Inviter.Login);
|
||||
Assert.Equal(2, organizationMembershipInvitation.TeamCount);
|
||||
|
||||
await _gitHub.Organization.Team.Delete(Helper.Organization, team1.Slug);
|
||||
await _gitHub.Organization.Team.Delete(Helper.Organization, team2.Slug);
|
||||
await _gitHub.Organization.Member.RemoveOrganizationMembership(Helper.Organization, "alfhenrik-test-2");
|
||||
}
|
||||
}
|
||||
|
||||
public class TheRemoveOrganizationMembershipMethod
|
||||
{
|
||||
readonly IGitHubClient _gitHub;
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
using System.Reactive.Linq;
|
||||
using System;
|
||||
using System.Reactive.Linq;
|
||||
using System.Reactive.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
using Octokit.Reactive;
|
||||
using Octokit.Tests.Helpers;
|
||||
using Octokit.Tests.Integration.Helpers;
|
||||
using Xunit;
|
||||
|
||||
@@ -62,6 +64,97 @@ namespace Octokit.Tests.Integration.Reactive
|
||||
await _client.RemoveOrganizationMembership(Helper.Organization, "alfhenrik-test-2");
|
||||
}
|
||||
}
|
||||
|
||||
public class TheCreateOrganizationInvitationMethod
|
||||
{
|
||||
readonly IGitHubClient _gitHub;
|
||||
readonly ObservableOrganizationMembersClient _client;
|
||||
|
||||
public TheCreateOrganizationInvitationMethod()
|
||||
{
|
||||
_gitHub = Helper.GetAuthenticatedClient();
|
||||
_client = new ObservableOrganizationMembersClient(_gitHub);
|
||||
}
|
||||
|
||||
[OrganizationTest]
|
||||
public async Task ReturnsOrganizationMembershipInvitationViaUserId()
|
||||
{
|
||||
var user = await _gitHub.User.Get("alfhenrik-test-2");
|
||||
|
||||
var organizationInvitationRequest = new OrganizationInvitationRequest(user.Id);
|
||||
var organizationMembershipInvitation = await _client.CreateOrganizationInvitation(Helper.Organization, organizationInvitationRequest);
|
||||
|
||||
Assert.Equal("alfhenrik-test-2", organizationMembershipInvitation.Login);
|
||||
Assert.Equal(OrganizationMembershipRole.DirectMember, organizationMembershipInvitation.Role.Value);
|
||||
Assert.Equal(Helper.UserName, organizationMembershipInvitation.Inviter.Login);
|
||||
|
||||
await _client.RemoveOrganizationMembership(Helper.Organization, "alfhenrik-test-2");
|
||||
}
|
||||
|
||||
[OrganizationTest]
|
||||
public async Task ReturnsOrganizationMembershipInvitationViaUserEmail()
|
||||
{
|
||||
var email = RandomEmailGenerator.GenerateRandomEmail();
|
||||
|
||||
var organizationInvitationRequest = new OrganizationInvitationRequest(email);
|
||||
var organizationMembershipInvitation = await _client.CreateOrganizationInvitation(Helper.Organization, organizationInvitationRequest);
|
||||
|
||||
Assert.Equal(email, organizationMembershipInvitation.Email);
|
||||
Assert.Equal(OrganizationMembershipRole.DirectMember, organizationMembershipInvitation.Role.Value);
|
||||
Assert.Equal(Helper.UserName, organizationMembershipInvitation.Inviter.Login);
|
||||
|
||||
await _client.CancelOrganizationInvitation(Helper.Organization, organizationMembershipInvitation.Id);
|
||||
}
|
||||
|
||||
[OrganizationTest]
|
||||
public async Task ThrowsApiValidationExceptionForCurrentOrganizationMembers()
|
||||
{
|
||||
var user = await _gitHub.User.Get(Helper.UserName);
|
||||
var organizationInvitationRequest = new OrganizationInvitationRequest(user.Id);
|
||||
|
||||
await Assert.ThrowsAsync<ApiValidationException>(() => _client.CreateOrganizationInvitation(Helper.Organization, organizationInvitationRequest).ToTask());
|
||||
}
|
||||
|
||||
[OrganizationTest]
|
||||
public async Task ReturnsOrganizationMembershipInvitationSingleTeam()
|
||||
{
|
||||
var user = await _gitHub.User.Get("alfhenrik-test-2");
|
||||
|
||||
var team1 = await _gitHub.Organization.Team.Create(Helper.Organization, new NewTeam("TestTeam1"));
|
||||
|
||||
var organizationInvitationRequest = new OrganizationInvitationRequest(user.Id, new int[] {team1.Id});
|
||||
var organizationMembershipInvitation = await _client.CreateOrganizationInvitation(Helper.Organization, organizationInvitationRequest);
|
||||
|
||||
Assert.Equal("alfhenrik-test-2", organizationMembershipInvitation.Login);
|
||||
Assert.Equal(OrganizationMembershipRole.DirectMember, organizationMembershipInvitation.Role.Value);
|
||||
Assert.Equal(Helper.UserName, organizationMembershipInvitation.Inviter.Login);
|
||||
Assert.Equal(1, organizationMembershipInvitation.TeamCount);
|
||||
|
||||
await _gitHub.Organization.Team.Delete(Helper.Organization, team1.Slug);
|
||||
await _client.RemoveOrganizationMembership(Helper.Organization, "alfhenrik-test-2");
|
||||
}
|
||||
|
||||
[OrganizationTest]
|
||||
public async Task ReturnsOrganizationMembershipInvitationMultipleTeams()
|
||||
{
|
||||
var user = await _gitHub.User.Get("alfhenrik-test-2");
|
||||
|
||||
var team1 = await _gitHub.Organization.Team.Create(Helper.Organization, new NewTeam("TestTeam1"));
|
||||
var team2 = await _gitHub.Organization.Team.Create(Helper.Organization, new NewTeam("TestTeam2"));
|
||||
|
||||
var organizationInvitationRequest = new OrganizationInvitationRequest(user.Id, new int[] {team1.Id, team2.Id});
|
||||
var organizationMembershipInvitation = await _client.CreateOrganizationInvitation(Helper.Organization, organizationInvitationRequest);
|
||||
|
||||
Assert.Equal("alfhenrik-test-2", organizationMembershipInvitation.Login);
|
||||
Assert.Equal(OrganizationMembershipRole.DirectMember, organizationMembershipInvitation.Role.Value);
|
||||
Assert.Equal(Helper.UserName, organizationMembershipInvitation.Inviter.Login);
|
||||
Assert.Equal(2, organizationMembershipInvitation.TeamCount);
|
||||
|
||||
await _gitHub.Organization.Team.Delete(Helper.Organization, team1.Slug);
|
||||
await _gitHub.Organization.Team.Delete(Helper.Organization, team2.Slug);
|
||||
await _client.RemoveOrganizationMembership(Helper.Organization, "alfhenrik-test-2");
|
||||
}
|
||||
}
|
||||
|
||||
public class TheRemoveOrganizationMembershipMethod
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user