Browse Source

Rule events.

pull/998/head
Sebastian 3 years ago
parent
commit
c76dc3fc45
  1. 4
      tools/TestSuite/TestSuite.ApiTests/AnonymousTests.cs
  2. 6
      tools/TestSuite/TestSuite.ApiTests/AppClientsTests.cs
  3. 8
      tools/TestSuite/TestSuite.ApiTests/AppContributorsTests.cs
  4. 10
      tools/TestSuite/TestSuite.ApiTests/AppLanguagesTests.cs
  5. 19
      tools/TestSuite/TestSuite.ApiTests/AppWorkflowsTests.cs
  6. 6
      tools/TestSuite/TestSuite.ApiTests/AssetTests.cs
  7. 2
      tools/TestSuite/TestSuite.ApiTests/BackupTests.cs
  8. 2
      tools/TestSuite/TestSuite.ApiTests/ContentUpdateTests.cs
  9. 119
      tools/TestSuite/TestSuite.ApiTests/RuleEventsTests.cs
  10. 14
      tools/TestSuite/TestSuite.ApiTests/RuleRunnerTests.cs
  11. 7
      tools/TestSuite/TestSuite.ApiTests/RuleTests.cs
  12. 4
      tools/TestSuite/TestSuite.Shared/Fixtures/ClientFixture.cs

4
tools/TestSuite/TestSuite.ApiTests/AnonymousTests.cs

@ -46,7 +46,7 @@ public class AnonymousTests : IClassFixture<ClientFixture>
// STEP 3: Check anonymous permission. // STEP 3: Check anonymous permission.
var url = $"{_.Client.Options.Url}api/apps/{appName}/settings"; var url = $"{_.Client.Options.Url}api/apps/{app.Options.AppName}/settings";
using (var httpClient = new HttpClient()) using (var httpClient = new HttpClient())
{ {
@ -89,7 +89,7 @@ public class AnonymousTests : IClassFixture<ClientFixture>
// STEP 3: Create a content. // STEP 3: Create a content.
var url = $"{_.Client.Options.Url}api/content/{appName}/my-content"; var url = $"{_.Client.Options.Url}api/content/{app.Options.AppName}/my-content";
using (var httpClient = new HttpClient()) using (var httpClient = new HttpClient())
{ {

6
tools/TestSuite/TestSuite.ApiTests/AppClientsTests.cs

@ -33,7 +33,7 @@ public sealed class AppClientsTests : IClassFixture<ClientFixture>
public async Task Should_create_client() public async Task Should_create_client()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Create client. // STEP 1: Create client.
@ -51,7 +51,7 @@ public sealed class AppClientsTests : IClassFixture<ClientFixture>
public async Task Should_update_client() public async Task Should_update_client()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 0: Create client. // STEP 0: Create client.
@ -86,7 +86,7 @@ public sealed class AppClientsTests : IClassFixture<ClientFixture>
public async Task Should_delete_client() public async Task Should_delete_client()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 0: Create client. // STEP 0: Create client.

8
tools/TestSuite/TestSuite.ApiTests/AppContributorsTests.cs

@ -31,7 +31,7 @@ public sealed class AppContributorsTests : IClassFixture<ClientFixture>
public async Task Should_not_invite_contributor_if_flag_is_false() public async Task Should_not_invite_contributor_if_flag_is_false()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Do not invite contributors when flag is false. // STEP 1: Do not invite contributors when flag is false.
@ -52,7 +52,7 @@ public sealed class AppContributorsTests : IClassFixture<ClientFixture>
public async Task Should_invite_contributor() public async Task Should_invite_contributor()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Assign contributor. // STEP 1: Assign contributor.
@ -70,7 +70,7 @@ public sealed class AppContributorsTests : IClassFixture<ClientFixture>
public async Task Should_update_contributor() public async Task Should_update_contributor()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Assign contributor. // STEP 1: Assign contributor.
@ -95,7 +95,7 @@ public sealed class AppContributorsTests : IClassFixture<ClientFixture>
public async Task Should_remove_contributor() public async Task Should_remove_contributor()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Assign contributor. // STEP 1: Assign contributor.

10
tools/TestSuite/TestSuite.ApiTests/AppLanguagesTests.cs

@ -30,7 +30,7 @@ public sealed class AppLanguagesTests : IClassFixture<ClientFixture>
public async Task Should_add_language() public async Task Should_add_language()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Add languages. // STEP 1: Add languages.
@ -48,7 +48,7 @@ public sealed class AppLanguagesTests : IClassFixture<ClientFixture>
public async Task Should_add_custom_language() public async Task Should_add_custom_language()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Add languages. // STEP 1: Add languages.
@ -66,7 +66,7 @@ public sealed class AppLanguagesTests : IClassFixture<ClientFixture>
public async Task Should_update_language() public async Task Should_update_language()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Add languages. // STEP 1: Add languages.
@ -97,7 +97,7 @@ public sealed class AppLanguagesTests : IClassFixture<ClientFixture>
public async Task Should_update_master_language() public async Task Should_update_master_language()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Add languages. // STEP 1: Add languages.
@ -146,7 +146,7 @@ public sealed class AppLanguagesTests : IClassFixture<ClientFixture>
public async Task Should_delete_language() public async Task Should_delete_language()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Add languages. // STEP 1: Add languages.

19
tools/TestSuite/TestSuite.ApiTests/AppWorkflowsTests.cs

@ -17,8 +17,7 @@ namespace TestSuite.ApiTests;
[UsesVerify] [UsesVerify]
public sealed class AppWorkflowsTests : IClassFixture<ClientFixture> public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
{ {
private readonly string appName = Guid.NewGuid().ToString(); private readonly string workflowName = Guid.NewGuid().ToString();
private readonly string name = Guid.NewGuid().ToString();
public ClientFixture _ { get; } public ClientFixture _ { get; }
@ -31,7 +30,7 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
public async Task Should_create_workflow() public async Task Should_create_workflow()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Create workflow. // STEP 1: Create workflow.
@ -48,7 +47,7 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
public async Task Should_update_workflow() public async Task Should_update_workflow()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 0: Create workflow. // STEP 0: Create workflow.
@ -70,11 +69,11 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
}, },
["Published"] = new WorkflowStepDto(), ["Published"] = new WorkflowStepDto(),
}, },
Name = name Name = workflowName
}; };
var workflows_2 = await app.Apps.PutWorkflowAsync(workflow.Id, updateRequest); var workflows_2 = await app.Apps.PutWorkflowAsync(workflow.Id, updateRequest);
var workflow_2 = workflows_2.Items.Find(x => x.Name == name); var workflow_2 = workflows_2.Items.Find(x => x.Name == workflowName);
Assert.NotNull(workflow_2); Assert.NotNull(workflow_2);
Assert.NotNull(workflow_2.Name); Assert.NotNull(workflow_2.Name);
@ -87,7 +86,7 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
public async Task Should_delete_workflow() public async Task Should_delete_workflow()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 0: Create workflow. // STEP 0: Create workflow.
@ -97,7 +96,7 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
// STEP 1: Delete workflow. // STEP 1: Delete workflow.
var workflows_2 = await app.Apps.DeleteWorkflowAsync(workflow.Id); var workflows_2 = await app.Apps.DeleteWorkflowAsync(workflow.Id);
Assert.DoesNotContain(workflows_2.Items, x => x.Name == name); Assert.DoesNotContain(workflows_2.Items, x => x.Name == workflowName);
await Verify(workflows_2); await Verify(workflows_2);
} }
@ -106,11 +105,11 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
{ {
var createRequest = new AddWorkflowDto var createRequest = new AddWorkflowDto
{ {
Name = name Name = workflowName
}; };
var workflows = await app.Apps.PostWorkflowAsync(createRequest); var workflows = await app.Apps.PostWorkflowAsync(createRequest);
var workflow = workflows.Items.Find(x => x.Name == name); var workflow = workflows.Items.Find(x => x.Name == workflowName);
return workflow; return workflow;
} }

6
tools/TestSuite/TestSuite.ApiTests/AssetTests.cs

@ -462,10 +462,8 @@ public class AssetTests : IClassFixture<CreatedAppFixture>
[Fact] [Fact]
public async Task Should_protect_asset_with_script() public async Task Should_protect_asset_with_script()
{ {
var appName = Guid.NewGuid().ToString();
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Create folder. // STEP 1: Create folder.
@ -667,7 +665,7 @@ public class AssetTests : IClassFixture<CreatedAppFixture>
Filter = "isDeleted eq true" Filter = "isDeleted eq true"
}); });
Assert.Equal(!permanent, deleted.Items.Any(x => x.Id == asset.Id)); Assert.Equal(!permanent, deleted.Items.Exists(x => x.Id == asset.Id));
} }
[Theory] [Theory]

2
tools/TestSuite/TestSuite.ApiTests/BackupTests.cs

@ -144,7 +144,7 @@ public class BackupTests : IClassFixture<ClientFixture>
// Create a workflow // Create a workflow
var workflowRequest = new AddWorkflowDto var workflowRequest = new AddWorkflowDto
{ {
Name = appName Name = "workflow"
}; };
await app.Apps.PostWorkflowAsync(workflowRequest); await app.Apps.PostWorkflowAsync(workflowRequest);

2
tools/TestSuite/TestSuite.ApiTests/ContentUpdateTests.cs

@ -501,7 +501,7 @@ public class ContentUpdateTests : IClassFixture<ContentFixture>
var deleted = await _.Contents.GetAsync(q, QueryContext.Default.Unpublished(true)); var deleted = await _.Contents.GetAsync(q, QueryContext.Default.Unpublished(true));
Assert.Equal(strategy is Strategies.Deletion.SingleSoft or Strategies.Deletion.BulkSoft, deleted.Items.Any(x => x.Id == content.Id)); Assert.Equal(strategy is Strategies.Deletion.SingleSoft or Strategies.Deletion.BulkSoft, deleted.Items.Exists(x => x.Id == content.Id));
} }
[Theory] [Theory]

119
tools/TestSuite/TestSuite.ApiTests/RuleEventsTests.cs

@ -0,0 +1,119 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using Squidex.ClientLibrary;
using Squidex.ClientLibrary.Management;
using TestSuite.Fixtures;
#pragma warning disable SA1300 // Element should begin with upper-case letter
#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row
namespace TestSuite.ApiTests;
public class RuleEventsTests : IClassFixture<ClientFixture>
{
public ClientFixture _ { get; }
public RuleEventsTests(ClientFixture fixture)
{
_ = fixture;
}
[Fact]
public async Task Should_cancel_event()
{
// STEP 0: Create app.
var (app, rule) = await CreateAppAndRuleAsync();
// STEP 1: Get events.
var events_0 = await app.Rules.GetEventsAsync(rule.Id);
Assert.Single(events_0.Items);
Assert.Single(events_0.Items, x => x.NextAttempt != null);
// STEP 2: Cancel event.
await app.Rules.DeleteEventAsync(events_0.Items[0].Id);
var events_1 = await app.Rules.GetEventsAsync(rule.Id);
Assert.Single(events_1.Items);
Assert.Single(events_1.Items, x => x.NextAttempt == null);
}
[Fact]
public async Task Should_cancel_event_by_rule()
{
// STEP 0: Create app.
var (app, rule) = await CreateAppAndRuleAsync();
// STEP 1: Get events.
var events_0 = await app.Rules.GetEventsAsync(rule.Id);
Assert.Single(events_0.Items);
Assert.Single(events_0.Items, x => x.NextAttempt != null);
// STEP 2: Cancel event.
await app.Rules.DeleteRuleEventsAsync(rule.Id);
var events_1 = await app.Rules.GetEventsAsync(rule.Id);
Assert.Single(events_1.Items);
Assert.Single(events_1.Items, x => x.NextAttempt == null);
}
[Fact]
public async Task Should_cancel_event_by_app()
{
// STEP 0: Create app.
var (app, rule) = await CreateAppAndRuleAsync();
// STEP 1: Get events.
var events_0 = await app.Rules.GetEventsAsync(rule.Id);
Assert.Single(events_0.Items);
Assert.Single(events_0.Items, x => x.NextAttempt != null);
// STEP 2: Cancel event.
await app.Rules.DeleteEventsAsync();
var events_1 = await app.Rules.GetEventsAsync(rule.Id);
Assert.Single(events_1.Items);
Assert.Single(events_1.Items, x => x.NextAttempt == null);
}
private async Task<(ISquidexClient App, RuleDto)> CreateAppAndRuleAsync()
{
var appName = Guid.NewGuid().ToString();
var (app, _) = await _.PostAppAsync();
var createRule = new CreateRuleDto
{
Action = new WebhookRuleActionDto
{
Method = WebhookMethod.POST,
Payload = null,
PayloadType = null,
Url = new Uri("http://squidex.io")
},
Trigger = new ManualRuleTriggerDto(),
};
var rule = await app.Rules.PostRuleAsync(createRule);
await app.Rules.TriggerRuleAsync(rule.Id);
return (app, rule);
}
}

14
tools/TestSuite/TestSuite.ApiTests/RuleRunnerTests.cs

@ -37,7 +37,7 @@ public class RuleRunnerTests : IClassFixture<ClientFixture>, IClassFixture<Webho
public async Task Should_run_rules_on_content_change() public async Task Should_run_rules_on_content_change()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Start webhook session. // STEP 1: Start webhook session.
@ -88,7 +88,7 @@ public class RuleRunnerTests : IClassFixture<ClientFixture>, IClassFixture<Webho
public async Task Should_run_rules_on_reference_change() public async Task Should_run_rules_on_reference_change()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Start webhook session. // STEP 1: Start webhook session.
@ -189,7 +189,7 @@ public class RuleRunnerTests : IClassFixture<ClientFixture>, IClassFixture<Webho
public async Task Should_run_scripting_rule_on_content_change() public async Task Should_run_scripting_rule_on_content_change()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Start webhook session. // STEP 1: Start webhook session.
@ -236,7 +236,7 @@ public class RuleRunnerTests : IClassFixture<ClientFixture>, IClassFixture<Webho
public async Task Should_run_rules_on_asset_change() public async Task Should_run_rules_on_asset_change()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Start webhook session. // STEP 1: Start webhook session.
@ -284,7 +284,7 @@ public class RuleRunnerTests : IClassFixture<ClientFixture>, IClassFixture<Webho
public async Task Should_run_rules_on_schema_change() public async Task Should_run_rules_on_schema_change()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Start webhook session. // STEP 1: Start webhook session.
@ -332,7 +332,7 @@ public class RuleRunnerTests : IClassFixture<ClientFixture>, IClassFixture<Webho
public async Task Should_run_rule_manually() public async Task Should_run_rule_manually()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Start webhook session. // STEP 1: Start webhook session.
@ -382,7 +382,7 @@ public class RuleRunnerTests : IClassFixture<ClientFixture>, IClassFixture<Webho
public async Task Should_rerun_rules(bool fromSnapshots) public async Task Should_rerun_rules(bool fromSnapshots)
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Start webhook session. // STEP 1: Start webhook session.

7
tools/TestSuite/TestSuite.ApiTests/RuleTests.cs

@ -16,7 +16,6 @@ namespace TestSuite.ApiTests;
[UsesVerify] [UsesVerify]
public class RuleTests : IClassFixture<ClientFixture> public class RuleTests : IClassFixture<ClientFixture>
{ {
private readonly string appName = Guid.NewGuid().ToString();
private readonly string ruleName = Guid.NewGuid().ToString(); private readonly string ruleName = Guid.NewGuid().ToString();
public ClientFixture _ { get; } public ClientFixture _ { get; }
@ -30,7 +29,7 @@ public class RuleTests : IClassFixture<ClientFixture>
public async Task Should_create_rule() public async Task Should_create_rule()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Create rule. // STEP 1: Create rule.
@ -60,7 +59,7 @@ public class RuleTests : IClassFixture<ClientFixture>
public async Task Should_update_rule() public async Task Should_update_rule()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Create rule. // STEP 1: Create rule.
@ -99,7 +98,7 @@ public class RuleTests : IClassFixture<ClientFixture>
public async Task Should_delete_rule() public async Task Should_delete_rule()
{ {
// STEP 0: Create app. // STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName); var (app, _) = await _.PostAppAsync();
// STEP 1: Create rule. // STEP 1: Create rule.

4
tools/TestSuite/TestSuite.Shared/Fixtures/ClientFixture.cs

@ -40,8 +40,10 @@ public class ClientFixture : IAsyncLifetime
VerifierSettings.IgnoreMembersWithType<DateTimeOffset>(); VerifierSettings.IgnoreMembersWithType<DateTimeOffset>();
} }
public Task<(ISquidexClient, AppDto)> PostAppAsync(string name) public Task<(ISquidexClient, AppDto)> PostAppAsync(string name = null)
{ {
name ??= Guid.NewGuid().ToString();
var createRequest = new CreateAppDto var createRequest = new CreateAppDto
{ {
Name = name Name = name

Loading…
Cancel
Save