Files
speckle-sharp-sdk/tests/Speckle.Core.Tests.Integration/Api/GraphQL/Resources/ProjectInviteResourceTests.cs
T
Adam Hathcock 200b84f49a Main to dev (#18)
* Add Instances base (#6)

* Use Uri for checks in GetAccounts function (#8)

* Add integration and perf tests to sln (#9)

* Remove perf tests (#10)

* remove perf tests

* do all unit tests

* Code coverage (#11)

* code coverage

* enable codecov for GA

* Update README.md

* Update coverage and dependencies (#12)

* Update coverage and dependencies

* fmt

* add codecov config

* merge DUI3/Alpha into sdk (#13)

* merge DUI3/Alpha into sdk

* formatting

* Merge Objects dui3/alpha -> dev (#14)

* merge DUI3/Alpha into sdk

* formatting

* Objects changes

* Objects tests

* Unit test project

* update codecov to be less intrusive (#15)

* update codecov to be less intrusive

* fix codecov yaml

* add coverage exclusion

* Merge sharp `dui3/alpha` -> sdk `main` (#16)

* Merge

* csharpier format

* Fixed polysharp issues

* Integration Tests

* Fixes

* Some nullability fixes (#17)

* add coverage exclusion

* fix some tests and fix nullability errors

---------

Co-authored-by: Oğuzhan Koral <45078678+oguzhankoral@users.noreply.github.com>
Co-authored-by: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
2024-07-09 13:56:03 +01:00

108 lines
3.7 KiB
C#

using Speckle.Core.Api;
using Speckle.Core.Api.GraphQL;
using Speckle.Core.Api.GraphQL.Inputs;
using Speckle.Core.Api.GraphQL.Models;
using Speckle.Core.Api.GraphQL.Resources;
namespace Speckle.Core.Tests.Integration.API.GraphQL.Resources;
[TestOf(typeof(ProjectInviteResource))]
public class ProjectInviteResourceTests
{
private Client _inviter,
_invitee;
private Project _project;
private PendingStreamCollaborator _createdInvite;
[SetUp]
public async Task Setup()
{
_inviter = await Fixtures.SeedUserWithClient();
_invitee = await Fixtures.SeedUserWithClient();
_project = await _inviter.Project.Create(new("test", null, null));
_createdInvite = await SeedInvite();
}
private async Task<PendingStreamCollaborator> SeedInvite()
{
ProjectInviteCreateInput input = new(_invitee.Account.userInfo.email, null, null, null);
var res = await _inviter.ProjectInvite.Create(_project.id, input);
var invites = await _invitee.ActiveUser.ProjectInvites();
return invites.First(i => i.projectId == res.id);
}
[Test]
public async Task ProjectInviteCreate_ByEmail()
{
ProjectInviteCreateInput input = new(_invitee.Account.userInfo.email, null, null, null);
var res = await _inviter.ProjectInvite.Create(_project.id, input);
var invites = await _invitee.ActiveUser.ProjectInvites();
var invite = invites.First(i => i.projectId == res.id);
Assert.That(res, Has.Property(nameof(_project.id)).EqualTo(_project.id));
Assert.That(res.invitedTeam, Has.Count.EqualTo(1));
Assert.That(invite.user.id, Is.EqualTo(_invitee.Account.userInfo.id));
Assert.That(invite.token, Is.Not.Null);
}
[Test]
public async Task ProjectInviteCreate_ByUserId()
{
ProjectInviteCreateInput input = new(null, null, null, _invitee.Account.userInfo.id);
var res = await _inviter.ProjectInvite.Create(_project.id, input);
Assert.That(res, Has.Property(nameof(_project.id)).EqualTo(_project.id));
Assert.That(res.invitedTeam, Has.Count.EqualTo(1));
Assert.That(res.invitedTeam[0].user.id, Is.EqualTo(_invitee.Account.userInfo.id));
}
[Test]
public async Task ProjectInviteGet()
{
var collaborator = await _invitee.ProjectInvite.Get(_project.id, _createdInvite.token);
Assert.That(
collaborator,
Has.Property(nameof(PendingStreamCollaborator.inviteId)).EqualTo(_createdInvite.inviteId)
);
Assert.That(collaborator!.user.id, Is.EqualTo(_createdInvite.user.id));
}
[Test]
public async Task ProjectInviteUse_MemberAdded()
{
ProjectInviteUseInput input = new(true, _createdInvite.projectId, _createdInvite.token);
var res = await _invitee.ProjectInvite.Use(input);
Assert.That(res, Is.True);
var project = await _inviter.Project.GetWithTeam(_project.id);
var teamMembers = project.team.Select(c => c.user.id);
var expectedTeamMembers = new[] { _inviter.Account.userInfo.id, _invitee.Account.userInfo.id };
Assert.That(teamMembers, Is.EquivalentTo(expectedTeamMembers));
}
[Test]
public async Task ProjectInviteCancel_MemberNotAdded()
{
var res = await _inviter.ProjectInvite.Cancel(_createdInvite.projectId, _createdInvite.inviteId);
Assert.That(res.invitedTeam, Is.Empty);
}
[Test]
[TestCase(StreamRoles.STREAM_OWNER)]
[TestCase(StreamRoles.STREAM_REVIEWER)]
[TestCase(StreamRoles.STREAM_CONTRIBUTOR)]
[TestCase(StreamRoles.REVOKE)]
public async Task ProjectUpdateRole(string newRole)
{
await ProjectInviteUse_MemberAdded();
ProjectUpdateRoleInput input = new(_invitee.Account.userInfo.id, _project.id, newRole);
_ = await _inviter.Project.UpdateRole(input);
Project finalProject = await _invitee.Project.Get(_project.id);
Assert.That(finalProject.role, Is.EqualTo(newRole));
}
}