Skip to content

test: add integration tests for DO_WHILE list iteration (issue #624)#824

Open
nthmost-orkes wants to merge 9 commits intomainfrom
work/624-do-while-list-iteration
Open

test: add integration tests for DO_WHILE list iteration (issue #624)#824
nthmost-orkes wants to merge 9 commits intomainfrom
work/624-do-while-list-iteration

Conversation

@nthmost-orkes
Copy link
Copy Markdown
Contributor

@nthmost-orkes nthmost-orkes commented Mar 5, 2026

Summary

  • Adds two Spock integration tests for the DO_WHILE list iteration feature (items parameter) introduced in issue Epic: Implement native list iteration for DO_WHILE (Q4 Roadmap 2.3) #624
  • Adds do_while_list_iteration_integration_test.json — a self-contained workflow definition using LAMBDA tasks (no external HTTP dependencies)
  • Covers: normal iteration over a 3-item list; and empty list completing immediately

Context

The list iteration feature (items field on DO_WHILE tasks) was already merged into main. This PR adds the missing integration test coverage in the test-harness.

Depends On

Blocked by #820 — The test workflow uses items without loopCondition. Until the validator fix in #820 is merged, registering this workflow during setup() throws a ConstraintViolationException that causes all DoWhileSpec tests to fail. CI will be red until #820 merges.

Test plan

  • Test DO_WHILE list iteration with items parameter iterates over each item — starts workflow with ['apple', 'banana', 'cherry'], verifies COMPLETED status, 4 tasks (DO_WHILE iter=3 + 3 LAMBDA executions)
  • Test DO_WHILE list iteration with empty items list completes immediately — starts workflow with [], verifies COMPLETED status, 1 task (DO_WHILE only, no iterations)

Closes #624 (integration test coverage)

@nthmost-orkes nthmost-orkes marked this pull request as ready for review March 5, 2026 01:46
Add Spock integration tests for the native list iteration mode of DO_WHILE
tasks (items parameter, issue #624). Tests cover both normal iteration over
a list of items and the edge case of an empty items list completing immediately.

Also adds the workflow definition JSON used by the integration tests, using
LAMBDA tasks for self-contained testing without external HTTP dependencies.
@nthmost-orkes nthmost-orkes force-pushed the work/624-do-while-list-iteration branch from e17464e to 7bf2f5c Compare March 6, 2026 22:03
nthmost-orkes and others added 8 commits March 12, 2026 01:27
…pCondition

When a DO_WHILE task uses list-iteration mode (items field set, or _items
in inputParameters for Orkes compat), the executor auto-generates the loop
condition. The validator was incorrectly requiring loopCondition in all
cases, blocking workflow definitions that used the list-iteration feature.

Fixes #819

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Spring Boot BOM bump fixes:
- CVE-2025-48988: Tomcat DoS in multipart upload
- CVE-2025-48989: Tomcat HTTP/2 MadeYouReset DoS
- CVE-2025-55752: Tomcat directory traversal with possible RCE
- CVE-2025-22235: Spring Boot EndpointRequest.to() wrong matcher
- CVE-2025-41249: Spring Framework annotation detection vulnerability

Dependency version constraints added for transitive deps:
- CVE-2025-66516: tika-core 3.0.0 -> 3.2.2 (CRITICAL)
- CVE-2025-48734: commons-beanutils 1.9.4 -> 1.11.0
- CVE-2025-12183: lz4-java 1.8.0 -> 1.8.1
- CVE-2025-59250: mssql-jdbc 12.6.4 -> 12.8.2.jre11
at.yawk.lz4:lz4-java declares the same Gradle capability as org.lz4:lz4-java.
Using a dependency constraint forced org.lz4:lz4-java onto the classpath as a
direct dependency, triggering an unresolvable capability conflict with the yawk
fork. Moved the version pin to resolutionStrategy.eachDependency which upgrades
existing transitive deps without adding a new direct dependency.

CVE-2025-12183 mitigation is preserved.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…publisher (#720)

* feat: Add configurable workflow status subscription for HTTP webhook publisher

* fix: preserve backward-compatible defaults for workflow status publishing
eachDependency alone is insufficient because capability conflicts are
resolved during module selection, before version selection runs.
at.yawk.lz4:lz4-java:1.8.1 declares Gradle capability org.lz4:lz4-java:1.8.1
in its module metadata. When lz4-java is upgraded to 1.8.1 for CVE-2025-12183,
both modules claim the same capability and Gradle deadlocks.

Add capabilitiesResolution rule to explicitly prefer org.lz4:lz4-java
over the at.yawk fork when both are present, breaking the tie.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
taskResult.getLogs() can return null, causing a NullPointerException
that prevents decide(workflowId) from being invoked and blocks
subsequent task execution in the workflow.

Revives the fix from community PR #334 (closed without merge).

Closes #791

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: Add GENERATE_PDF system task for markdown-to-PDF conversion
Use default TaskDef instead of terminating workflow when definition is missing.
@nthmost-orkes
Copy link
Copy Markdown
Contributor Author

Rebased on top of #820 (DO_WHILE validator fix) — the tests require that PR's change to allow DO_WHILE tasks with items to pass validation without loopCondition. CI should now pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Epic: Implement native list iteration for DO_WHILE (Q4 Roadmap 2.3)

3 participants