Files
social-media/backend/tests/Socialize.Tests/Organizations/OrganizationPermissionRulesTests.cs

52 lines
2.6 KiB
C#

using Socialize.Api.Modules.Organizations.Services;
namespace Socialize.Tests.Organizations;
public class OrganizationPermissionRulesTests
{
[Fact]
public void Owner_has_all_initial_organization_permissions()
{
IReadOnlyCollection<string> permissions = OrganizationPermissionRules.GetPermissionsForRole(OrganizationRoles.Owner);
Assert.Contains(OrganizationPermissions.ManageOrganizationSettings, permissions);
Assert.Contains(OrganizationPermissions.ManageOrganizationMembers, permissions);
Assert.Contains(OrganizationPermissions.CreateWorkspaces, permissions);
Assert.Contains(OrganizationPermissions.ManageWorkspaces, permissions);
Assert.Contains(OrganizationPermissions.ManageBilling, permissions);
Assert.Contains(OrganizationPermissions.ManageConnectors, permissions);
Assert.Contains(OrganizationPermissions.AccessOwnedWorkspaces, permissions);
}
[Fact]
public void Admin_does_not_receive_billing_permission_by_default()
{
IReadOnlyCollection<string> permissions = OrganizationPermissionRules.GetPermissionsForRole(OrganizationRoles.Admin);
Assert.Contains(OrganizationPermissions.ManageOrganizationSettings, permissions);
Assert.Contains(OrganizationPermissions.ManageOrganizationMembers, permissions);
Assert.Contains(OrganizationPermissions.CreateWorkspaces, permissions);
Assert.Contains(OrganizationPermissions.ManageWorkspaces, permissions);
Assert.Contains(OrganizationPermissions.ManageConnectors, permissions);
Assert.Contains(OrganizationPermissions.AccessOwnedWorkspaces, permissions);
Assert.DoesNotContain(OrganizationPermissions.ManageBilling, permissions);
}
[Theory]
[InlineData(OrganizationRoles.BillingManager, OrganizationPermissions.ManageBilling, true)]
[InlineData(OrganizationRoles.BillingManager, OrganizationPermissions.ManageConnectors, false)]
[InlineData(OrganizationRoles.ConnectorManager, OrganizationPermissions.ManageConnectors, true)]
[InlineData(OrganizationRoles.ConnectorManager, OrganizationPermissions.ManageBilling, false)]
[InlineData(OrganizationRoles.Member, OrganizationPermissions.AccessOwnedWorkspaces, true)]
[InlineData(OrganizationRoles.Member, OrganizationPermissions.ManageWorkspaces, false)]
public void RoleHasPermission_enforces_role_permission_mapping(
string role,
string permission,
bool expected)
{
bool actual = OrganizationPermissionRules.RoleHasPermission(role, permission);
Assert.Equal(expected, actual);
}
}