Add SOAPAction header support to Scenario apiDescription property #1877
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The
apiDescription
property inScenario.kt
did not include SOAPAction header information in test descriptions, making it difficult to distinguish between different SOAP operations that use the same endpoint but different SOAPAction values.Solution
Modified the
apiDescription
property to include SOAPAction header values when present:"POST /soap/service SOAP Action http://example.com/action -> 200"
"POST /soap/service -> 200"
(unchanged from original)Implementation Details
apiDescription
from a simple property to a computed property that dynamically checks for SOAPAction headersExactValuePattern
instances to ensure we have concrete SOAPAction values (ignores generic string patterns)Example Usage
Before:
After (with SOAPAction):
Testing
Added comprehensive test suite covering:
testDescription()
methodAll existing tests continue to pass, ensuring no regressions.
Files Changed
core/src/main/kotlin/io/specmatic/core/Scenario.kt
- Modified apiDescription propertycore/src/test/kotlin/io/specmatic/core/ScenarioSOAPActionTest.kt
- New comprehensive test suiteFixes the issue where SOAP test descriptions lacked operation-specific information, making test results more informative and easier to debug.
Warning
Firewall rules blocked me from connecting to one or more addresses
I tried to connect to the following addresses, but was blocked by firewall rules:
api.github.com
/usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.xml/javax.xml.namespace=ALL-UNNAMED -Xmx768m -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant -cp /home/REDACTED/.gradle/wrapper/dists/gradle-8.14.1-all/ai1r9v1zgfsr225kjzlvo0rag/gradle-8.14.1/lib/gradle-daemon-main-8.14.1.jar -javaagent:/home/REDACTED/.gradle/wrapper/dists/gradle-8.14.1-all/ai1r9v1zgfsr225kjzlvo0rag/gradle-8.14.1/lib/agents/gradl 8000 e-instrumentation-agent-8.14.1.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 8.14.1
(dns block)If you need me to access, download, or install something from one of these locations, you can either:
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.