feat: add organization domain foundation

This commit is contained in:
2026-05-04 16:15:53 -04:00
parent 802668fb0b
commit 7d3f495472
55 changed files with 2995 additions and 115 deletions

View File

@@ -0,0 +1,51 @@
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);
}
}