using Socialize.Api.Modules.Organizations.Services; namespace Socialize.Tests.Organizations; public class OrganizationPermissionRulesTests { [Fact] public void Owner_has_all_initial_organization_permissions() { IReadOnlyCollection 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 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); } }