mirror of https://github.com/Squidex/squidex.git
committed by
GitHub
38 changed files with 332 additions and 105 deletions
@ -0,0 +1,17 @@ |
|||
// ==========================================================================
|
|||
// AppClientPermission.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
namespace Squidex.Domain.Apps.Core.Apps |
|||
{ |
|||
public enum AppClientPermission |
|||
{ |
|||
Developer, |
|||
Editor, |
|||
Reader |
|||
} |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
// ==========================================================================
|
|||
// AppContributorPermission.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
namespace Squidex.Domain.Apps.Core.Apps |
|||
{ |
|||
public enum AppContributorPermission |
|||
{ |
|||
Owner, |
|||
Developer, |
|||
Editor |
|||
} |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
// ==========================================================================
|
|||
// RoleExtension.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using Squidex.Infrastructure; |
|||
|
|||
namespace Squidex.Domain.Apps.Core.Apps |
|||
{ |
|||
public static class RoleExtension |
|||
{ |
|||
public static AppPermission ToAppPermission(this AppClientPermission clientPermission) |
|||
{ |
|||
Guard.Enum(clientPermission, nameof(clientPermission)); |
|||
|
|||
return (AppPermission)Enum.Parse(typeof(AppPermission), clientPermission.ToString()); |
|||
} |
|||
|
|||
public static AppPermission ToAppPermission(this AppContributorPermission contributorPermission) |
|||
{ |
|||
Guard.Enum(contributorPermission, nameof(contributorPermission)); |
|||
|
|||
return (AppPermission)Enum.Parse(typeof(AppPermission), contributorPermission.ToString()); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,29 @@ |
|||
// ==========================================================================
|
|||
// AppClientChanged.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using Squidex.Domain.Apps.Core.Apps; |
|||
using Squidex.Infrastructure.CQRS.Events; |
|||
using Squidex.Infrastructure.Reflection; |
|||
|
|||
namespace Squidex.Domain.Apps.Events.Apps.Old |
|||
{ |
|||
[EventType(nameof(AppClientChanged))] |
|||
public sealed class AppClientChanged : AppEvent, IMigratedEvent |
|||
{ |
|||
public string Id { get; set; } |
|||
|
|||
public bool IsReader { get; set; } |
|||
|
|||
public IEvent Migrate() |
|||
{ |
|||
var permission = IsReader ? AppClientPermission.Reader : AppClientPermission.Editor; |
|||
|
|||
return SimpleMapper.Map(this, new AppClientUpdated { Permission = permission }); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,44 @@ |
|||
// ==========================================================================
|
|||
// RoleExtensionTests.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using Xunit; |
|||
|
|||
namespace Squidex.Domain.Apps.Core.Apps |
|||
{ |
|||
public class RoleExtensionTests |
|||
{ |
|||
[Fact] |
|||
public void Should_convert_from_client_permission_to_app_permission() |
|||
{ |
|||
Assert.Equal(AppPermission.Developer, AppClientPermission.Developer.ToAppPermission()); |
|||
Assert.Equal(AppPermission.Editor, AppClientPermission.Editor.ToAppPermission()); |
|||
Assert.Equal(AppPermission.Reader, AppClientPermission.Reader.ToAppPermission()); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Should_throw_when_converting_from_invalid_client_permission() |
|||
{ |
|||
Assert.Throws<ArgumentException>(() => ((AppClientPermission)10).ToAppPermission()); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Should_convert_from_contributor_permission_to_app_permission() |
|||
{ |
|||
Assert.Equal(AppPermission.Developer, AppContributorPermission.Developer.ToAppPermission()); |
|||
Assert.Equal(AppPermission.Editor, AppContributorPermission.Editor.ToAppPermission()); |
|||
Assert.Equal(AppPermission.Owner, AppContributorPermission.Owner.ToAppPermission()); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Should_throw_when_converting_from_invalid_contributor_permission() |
|||
{ |
|||
Assert.Throws<ArgumentException>(() => ((AppContributorPermission)10).ToAppPermission()); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,51 @@ |
|||
// ==========================================================================
|
|||
// AppEventTests.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using Squidex.Domain.Apps.Core.Apps; |
|||
using Squidex.Domain.Apps.Events; |
|||
using Squidex.Domain.Apps.Events.Apps; |
|||
using Squidex.Domain.Apps.Events.Apps.Old; |
|||
using Squidex.Domain.Apps.Write.TestHelpers; |
|||
using Squidex.Infrastructure; |
|||
using Xunit; |
|||
|
|||
#pragma warning disable CS0612 // Type or member is obsolete
|
|||
|
|||
namespace Squidex.Domain.Apps.Write.Apps |
|||
{ |
|||
public class AppEventTests |
|||
{ |
|||
private readonly RefToken actor = new RefToken("User", Guid.NewGuid().ToString()); |
|||
private readonly NamedId<Guid> appId = new NamedId<Guid>(Guid.NewGuid(), "my-app"); |
|||
|
|||
[Fact] |
|||
public void Should_migrate_client_changed_as_reader_to_client_updated() |
|||
{ |
|||
var source = CreateEvent(new AppClientChanged { IsReader = true }); |
|||
|
|||
source.Migrate().ShouldBeSameEvent(CreateEvent(new AppClientUpdated { Permission = AppClientPermission.Reader })); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Should_migrate_client_changed_as_writer_to_client_updated() |
|||
{ |
|||
var source = CreateEvent(new AppClientChanged { IsReader = false }); |
|||
|
|||
source.Migrate().ShouldBeSameEvent(CreateEvent(new AppClientUpdated { Permission = AppClientPermission.Editor })); |
|||
} |
|||
|
|||
private T CreateEvent<T>(T contentEvent) where T : AppEvent |
|||
{ |
|||
contentEvent.Actor = actor; |
|||
contentEvent.AppId = appId; |
|||
|
|||
return contentEvent; |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue