diff --git a/src/activities/Elsa.Activities.Http/Activities/HttpEndpoint/HttpEndpoint.cs b/src/activities/Elsa.Activities.Http/Activities/HttpEndpoint/HttpEndpoint.cs index 225eb7f46..bcb5373af 100644 --- a/src/activities/Elsa.Activities.Http/Activities/HttpEndpoint/HttpEndpoint.cs +++ b/src/activities/Elsa.Activities.Http/Activities/HttpEndpoint/HttpEndpoint.cs @@ -63,7 +63,7 @@ namespace Elsa.Activities.Http Category = PropertyCategories.Advanced, UIHint = ActivityInputUIHints.CodeEditor, OptionsProvider = typeof(HttpEndpoint))] - public string? Schema { get; set; } + public string? Schema { get; set; } [ActivityInput( Hint = "Check to allow authenticated requests only", @@ -76,19 +76,14 @@ namespace Elsa.Activities.Http Hint = "Provide a policy to evaluate. If the policy fails, the request is forbidden.", SupportedSyntaxes = new[] { SyntaxNames.Literal, SyntaxNames.JavaScript, SyntaxNames.Liquid }, Category = "Security" - )] + )] public string? Policy { get; set; } [ActivityOutput(Hint = "The received HTTP request.")] public HttpRequestModel? Output { get; set; } - protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context) - { - var isTest = context.WorkflowExecutionContext.WorkflowInstance.GetMetadata("isTest"); - var result = context.WorkflowExecutionContext.IsFirstPass && !Convert.ToBoolean(isTest) ? ExecuteInternal(context) : Suspend(); + protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context) => context.WorkflowExecutionContext.IsFirstPass ? ExecuteInternal(context) : Suspend(); - return result; - } protected override IActivityExecutionResult OnResume(ActivityExecutionContext context) => ExecuteInternal(context); private IActivityExecutionResult ExecuteInternal(ActivityExecutionContext context) diff --git a/src/server/Elsa.Server.Api/Handlers/ConfigureWorkflowContextForTestHandler.cs b/src/server/Elsa.Server.Api/Handlers/ConfigureWorkflowContextForTestHandler.cs new file mode 100644 index 000000000..6d4d5fff1 --- /dev/null +++ b/src/server/Elsa.Server.Api/Handlers/ConfigureWorkflowContextForTestHandler.cs @@ -0,0 +1,22 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using Elsa.Events; +using MediatR; + +namespace Elsa.Server.Api.Handlers +{ + public class ConfigureWorkflowContextForTestHandler : INotificationHandler + { + public Task Handle(WorkflowExecuting notification, CancellationToken cancellationToken) + { + var isTest = Convert.ToBoolean(notification.WorkflowExecutionContext.WorkflowInstance.GetMetadata("isTest")); + + // If we are in test mode, we always block on the first activity. + if (isTest) + notification.WorkflowExecutionContext.CompletePass(); + + return Task.CompletedTask; + } + } +} \ No newline at end of file diff --git a/test/unit/Elsa.UnitTests/Services/WorkflowExecutionContextForWorkflowBlueprintFactoryTests.cs b/test/unit/Elsa.UnitTests/Services/WorkflowExecutionContextForWorkflowBlueprintFactoryTests.cs index 190fc90ac..9be189cf7 100644 --- a/test/unit/Elsa.UnitTests/Services/WorkflowExecutionContextForWorkflowBlueprintFactoryTests.cs +++ b/test/unit/Elsa.UnitTests/Services/WorkflowExecutionContextForWorkflowBlueprintFactoryTests.cs @@ -20,7 +20,7 @@ namespace Elsa.Services { var sut = new WorkflowExecutionContextForWorkflowBlueprintFactory(serviceProvider, workflowFactory); Mock.Get(workflowFactory) - .Setup(x => x.InstantiateAsync(workflowBlueprint, default, default, default, default, default, default)) + .Setup(x => x.InstantiateAsync(workflowBlueprint, default, default, default, default)) .Returns(() => Task.FromResult(instance)); var result = await sut.CreateWorkflowExecutionContextAsync(workflowBlueprint);