From c62a882ad8e097cac1d90f7784ef80f68d222fd5 Mon Sep 17 00:00:00 2001 From: lukhipolito-nexxbiz Date: Tue, 2 Dec 2025 13:00:46 +0100 Subject: [PATCH 1/5] Update test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../Scenarios/Activities/Http/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/README.md b/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/README.md index 7fe60e201..3c7fd72aa 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/README.md +++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/README.md @@ -61,7 +61,6 @@ The `Workflows/` directory contains test workflow implementations: - `JsonContentWorkflow.cs` - JSON content parsing - `FormDataWorkflow.cs` - Form data handling - `FileUploadWorkflow.cs` - File upload processing -- `FileValidationWorkflow.cs` - File validation constraints with size, extension, and MIME type validation - `SecurityTestWorkflows.cs` - Security-focused workflows including authentication and blocked extensions ## Key Features Tested From a3b46d14190911b0453a5b3eb25f488f56d4e7bf Mon Sep 17 00:00:00 2001 From: lukhipolito-nexxbiz Date: Tue, 2 Dec 2025 13:01:02 +0100 Subject: [PATCH 2/5] Update test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/RouteParametersWorkflow.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../Activities/Http/Workflows/RouteParametersWorkflow.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/RouteParametersWorkflow.cs b/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/RouteParametersWorkflow.cs index f8be07ee1..2a16a9365 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/RouteParametersWorkflow.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/RouteParametersWorkflow.cs @@ -53,9 +53,9 @@ public class RouteParametersWorkflow : WorkflowBase return "Could not parse route parameters"; } - catch + catch (Exception ex) { - return "UserId: unknown, OrderId: unknown"; + return $"UserId: unknown, OrderId: unknown (Error: {ex.Message})"; } }), ContentType = new("text/plain"), From 65159e2665805386722d2718467720d015a09f08 Mon Sep 17 00:00:00 2001 From: lukhipolito-nexxbiz Date: Tue, 2 Dec 2025 13:02:59 +0100 Subject: [PATCH 3/5] Update test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/RouteParametersWorkflow.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../Http/Workflows/RouteParametersWorkflow.cs | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/RouteParametersWorkflow.cs b/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/RouteParametersWorkflow.cs index 2a16a9365..db812f609 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/RouteParametersWorkflow.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/RouteParametersWorkflow.cs @@ -28,29 +28,43 @@ public class RouteParametersWorkflow : WorkflowBase }, new WriteHttpResponse { - Content = new(context => + Content = new(context => { - // WORKAROUND: Since route table isn't populated during tests, - // manually parse the request URL to extract parameters + // Try to use RouteData variable first for robustness. + // If unavailable (test infra limitation), fallback to manual parsing. + const string BasePathPrefix = "/workflows/"; // Extracted as constant for flexibility. try { + // Attempt to get route parameters from RouteData variable. + var routeData = context.GetVariable>(); + if (routeData != null && routeData.TryGetValue("userId", out var userIdObj) && routeData.TryGetValue("orderId", out var orderIdObj)) + { + var userId = userIdObj?.ToString() ?? "unknown"; + var orderId = orderIdObj?.ToString() ?? "unknown"; + return $"UserId: {userId}, OrderId: {orderId}"; + } + + // WORKAROUND: Since route table isn't populated during tests, + // manually parse the request URL to extract parameters. var httpContext = context.GetRequiredService().HttpContext; var path = httpContext?.Request?.Path.Value ?? ""; - - // Pattern: /workflows/test/users/{userId}/orders/{orderId} - var match = System.Text.RegularExpressions.Regex.Match(path, @"/workflows/test/users/([^/]+)/orders/([^/]+)"); + + // More flexible pattern: allow any base path before /test/users/{userId}/orders/{orderId} + var pattern = $"{BasePathPrefix}?test/users/([^/]+)/orders/([^/]+)"; + var match = System.Text.RegularExpressions.Regex.Match(path, pattern); if (match.Success && match.Groups.Count >= 3) { return $"UserId: {match.Groups[1].Value}, OrderId: {match.Groups[2].Value}"; } - - // Fallback: try simple splitting + + // Fallback: try simple splitting, accounting for base path var parts = path.Split('/', StringSplitOptions.RemoveEmptyEntries); - if (parts.Length >= 6 && parts[1] == "test" && parts[2] == "users" && parts[4] == "orders") + // Find "test" segment and extract parameters relative to it + var testIdx = Array.IndexOf(parts, "test"); + if (testIdx >= 0 && parts.Length > testIdx + 5 && parts[testIdx + 1] == "users" && parts[testIdx + 3] == "orders") { - return $"UserId: {parts[3]}, OrderId: {parts[5]}"; + return $"UserId: {parts[testIdx + 2]}, OrderId: {parts[testIdx + 4]}"; } - return "Could not parse route parameters"; } catch (Exception ex) From 3c3154a7ee51561c264db7e22dfa082ba77c3c5d Mon Sep 17 00:00:00 2001 From: lukhipolito-nexxbiz Date: Tue, 2 Dec 2025 13:42:09 +0100 Subject: [PATCH 4/5] Update test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/FormDataWorkflow.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../Activities/Http/Workflows/FormDataWorkflow.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/FormDataWorkflow.cs b/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/FormDataWorkflow.cs index 0d7cb34c0..47ccbfafc 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/FormDataWorkflow.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/FormDataWorkflow.cs @@ -33,8 +33,16 @@ public class FormDataWorkflow : WorkflowBase var content = parsedContentVariable.Get(context); if (content is IDictionary formData) { - var name = formData.ContainsKey("name") ? formData["name"]?.ToString() : "unknown"; - var email = formData.ContainsKey("email") ? formData["email"]?.ToString() : "unknown"; + string name; + if (formData.TryGetValue("name", out var nameObj) && nameObj != null) + name = nameObj.ToString(); + else + name = "unknown"; + string email; + if (formData.TryGetValue("email", out var emailObj) && emailObj != null) + email = emailObj.ToString(); + else + email = "unknown"; return $"Name: {name}, Email: {email}"; } return "No form data received"; From e3645566e408a496790b84468ced3e16d064ba0e Mon Sep 17 00:00:00 2001 From: lukhipolito-nexxbiz Date: Tue, 2 Dec 2025 15:05:17 +0100 Subject: [PATCH 5/5] Update test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/FileUploadWorkflow.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../Scenarios/Activities/Http/Workflows/FileUploadWorkflow.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/FileUploadWorkflow.cs b/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/FileUploadWorkflow.cs index f5003cc16..5bb05b7db 100644 --- a/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/FileUploadWorkflow.cs +++ b/test/component/Elsa.Workflows.ComponentTests/Scenarios/Activities/Http/Workflows/FileUploadWorkflow.cs @@ -33,7 +33,6 @@ public class FileUploadWorkflow : WorkflowBase Content = new(context => { var files = filesVariable.Get(context); - var firstFile = fileVariable.Get(context); if (files?.Length > 0) {