88 lines
3.0 KiB
C#
88 lines
3.0 KiB
C#
using Socialize.Api.Modules.CalendarIntegrations.Data;
|
|
using Socialize.Api.Modules.CalendarIntegrations.Handlers;
|
|
using Socialize.Api.Modules.CalendarIntegrations.Services;
|
|
|
|
namespace Socialize.Tests.CalendarIntegrations;
|
|
|
|
public class CalendarSourceRulesTests
|
|
{
|
|
[Theory]
|
|
[InlineData(CalendarSourceScopes.Organization, true, false, true)]
|
|
[InlineData(CalendarSourceScopes.Organization, false, true, false)]
|
|
[InlineData(CalendarSourceScopes.Workspace, false, true, true)]
|
|
[InlineData(CalendarSourceScopes.Workspace, true, false, false)]
|
|
public void CanManageScope_uses_scope_specific_shared_calendar_permissions(
|
|
string scope,
|
|
bool canManageOrganizationCalendars,
|
|
bool canManageWorkspaceCalendars,
|
|
bool expected)
|
|
{
|
|
Guid currentUserId = Guid.NewGuid();
|
|
|
|
bool actual = CalendarSourceRules.CanManageScope(
|
|
scope,
|
|
canManageOrganizationCalendars,
|
|
canManageWorkspaceCalendars,
|
|
currentUserId,
|
|
sourceUserId: null);
|
|
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void CanManageScope_allows_only_owner_for_user_sources()
|
|
{
|
|
Guid currentUserId = Guid.NewGuid();
|
|
|
|
Assert.True(CalendarSourceRules.CanManageScope(
|
|
CalendarSourceScopes.User,
|
|
canManageOrganizationCalendars: false,
|
|
canManageWorkspaceCalendars: false,
|
|
currentUserId,
|
|
currentUserId));
|
|
|
|
Assert.False(CalendarSourceRules.CanManageScope(
|
|
CalendarSourceScopes.User,
|
|
canManageOrganizationCalendars: true,
|
|
canManageWorkspaceCalendars: true,
|
|
currentUserId,
|
|
Guid.NewGuid()));
|
|
}
|
|
|
|
[Fact]
|
|
public void Workspace_context_marks_inherited_organization_sources_read_only()
|
|
{
|
|
Guid organizationId = Guid.NewGuid();
|
|
CalendarSource organizationSource = new()
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
Scope = CalendarSourceScopes.Organization,
|
|
OrganizationId = organizationId,
|
|
DisplayTitle = "Public holidays",
|
|
Color = "#2F80ED",
|
|
Category = "public-holiday",
|
|
InheritanceMode = CalendarSourceInheritanceModes.Required,
|
|
};
|
|
|
|
CalendarSource workspaceSource = new()
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
Scope = CalendarSourceScopes.Workspace,
|
|
WorkspaceId = Guid.NewGuid(),
|
|
DisplayTitle = "Campaign moments",
|
|
Color = "#27AE60",
|
|
Category = "marketing-moment",
|
|
};
|
|
|
|
CalendarSourceDto inheritedDto = CalendarSourceDto.FromSource(
|
|
organizationSource,
|
|
CalendarSourceRules.IsInheritedOrganizationSource(organizationSource, organizationId));
|
|
CalendarSourceDto workspaceDto = CalendarSourceDto.FromSource(
|
|
workspaceSource,
|
|
CalendarSourceRules.IsInheritedOrganizationSource(workspaceSource, organizationId));
|
|
|
|
Assert.True(inheritedDto.IsReadOnly);
|
|
Assert.False(workspaceDto.IsReadOnly);
|
|
}
|
|
}
|