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.
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())
{
@ -89,7 +89,7 @@ public class AnonymousTests : IClassFixture<ClientFixture>
// 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())
{

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

@ -33,7 +33,7 @@ public sealed class AppClientsTests : IClassFixture<ClientFixture>
public async Task Should_create_client()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Create client.
@ -51,7 +51,7 @@ public sealed class AppClientsTests : IClassFixture<ClientFixture>
public async Task Should_update_client()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 0: Create client.
@ -86,7 +86,7 @@ public sealed class AppClientsTests : IClassFixture<ClientFixture>
public async Task Should_delete_client()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// 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()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// 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()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Assign contributor.
@ -70,7 +70,7 @@ public sealed class AppContributorsTests : IClassFixture<ClientFixture>
public async Task Should_update_contributor()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Assign contributor.
@ -95,7 +95,7 @@ public sealed class AppContributorsTests : IClassFixture<ClientFixture>
public async Task Should_remove_contributor()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// 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()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Add languages.
@ -48,7 +48,7 @@ public sealed class AppLanguagesTests : IClassFixture<ClientFixture>
public async Task Should_add_custom_language()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Add languages.
@ -66,7 +66,7 @@ public sealed class AppLanguagesTests : IClassFixture<ClientFixture>
public async Task Should_update_language()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Add languages.
@ -97,7 +97,7 @@ public sealed class AppLanguagesTests : IClassFixture<ClientFixture>
public async Task Should_update_master_language()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Add languages.
@ -146,7 +146,7 @@ public sealed class AppLanguagesTests : IClassFixture<ClientFixture>
public async Task Should_delete_language()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Add languages.

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

@ -17,8 +17,7 @@ namespace TestSuite.ApiTests;
[UsesVerify]
public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
{
private readonly string appName = Guid.NewGuid().ToString();
private readonly string name = Guid.NewGuid().ToString();
private readonly string workflowName = Guid.NewGuid().ToString();
public ClientFixture _ { get; }
@ -31,7 +30,7 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
public async Task Should_create_workflow()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Create workflow.
@ -48,7 +47,7 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
public async Task Should_update_workflow()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 0: Create workflow.
@ -70,11 +69,11 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
},
["Published"] = new WorkflowStepDto(),
},
Name = name
Name = workflowName
};
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.Name);
@ -87,7 +86,7 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
public async Task Should_delete_workflow()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 0: Create workflow.
@ -97,7 +96,7 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
// STEP 1: Delete workflow.
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);
}
@ -106,11 +105,11 @@ public sealed class AppWorkflowsTests : IClassFixture<ClientFixture>
{
var createRequest = new AddWorkflowDto
{
Name = name
Name = workflowName
};
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;
}

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

@ -462,10 +462,8 @@ public class AssetTests : IClassFixture<CreatedAppFixture>
[Fact]
public async Task Should_protect_asset_with_script()
{
var appName = Guid.NewGuid().ToString();
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Create folder.
@ -667,7 +665,7 @@ public class AssetTests : IClassFixture<CreatedAppFixture>
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]

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

@ -144,7 +144,7 @@ public class BackupTests : IClassFixture<ClientFixture>
// Create a workflow
var workflowRequest = new AddWorkflowDto
{
Name = appName
Name = "workflow"
};
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));
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]

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()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// 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()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// 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()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// 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()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// 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()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Start webhook session.
@ -332,7 +332,7 @@ public class RuleRunnerTests : IClassFixture<ClientFixture>, IClassFixture<Webho
public async Task Should_run_rule_manually()
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Start webhook session.
@ -382,7 +382,7 @@ public class RuleRunnerTests : IClassFixture<ClientFixture>, IClassFixture<Webho
public async Task Should_rerun_rules(bool fromSnapshots)
{
// STEP 0: Create app.
var (app, _) = await _.PostAppAsync(appName);
var (app, _) = await _.PostAppAsync();
// STEP 1: Start webhook session.

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

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

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

@ -40,8 +40,10 @@ public class ClientFixture : IAsyncLifetime
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
{
Name = name

Loading…
Cancel
Save