Skip to content

Implement support for interpolated openapi paths#2317

Merged
joelrosario merged 16 commits intomainfrom
interpolated-path
Mar 18, 2026
Merged

Implement support for interpolated openapi paths#2317
joelrosario merged 16 commits intomainfrom
interpolated-path

Conversation

@StarKhan6368
Copy link
Copy Markdown
Contributor

What: Implement support for interpolated paths, such as /test/{param1},{param2} and /api/version-{version}

Checklist:

  • Unit Tests
  • Build passing locally
  • Sonar Quality Gate
  • Security scans don't report any vulnerabilities
  • Documentation added/updated (share link)
  • Sample Project added/updated (share link)
  • Demo video (share link)
  • Article on Website (share link)
  • Roadmpap updated (share link)
  • Conference Talk (share link)

- Add simple tests for the same
- Use TemplateTokenizer to parse paths instead of splitting
- Add simple test for the same
- Splits rawValue based on the provided regex
- Add simple tests for the same
- score segments by literalness
- 0 = pure token/matcher segment
- 1 = embedded/interpolated token segment
- 2 = fully literal segment
- Add simple tests for the same
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 4, 2026

Summary

Line coverage Branch coverage

Assembly Line coverage Branch coverage
application 64.9% 58.6%
application/backwardCompatibility 79.5% 65.1%
application/mcp 84.7% 76.9%
application/validate 1.2% 2.5%
io/specmatic/conversions 93.4% 78.4%
io/specmatic/conversions/lenient 97.6% 77.4%
io/specmatic/core 81.2% 62.8%
io/specmatic/core/azure 0% 0%
io/specmatic/core/config 61.6% 39.4%
io/specmatic/core/config/v1 97.9% 25%
io/specmatic/core/config/v2 91.9% 78.8%
io/specmatic/core/config/v3 56.7% 30.1%
io/specmatic/core/config/v3/components 78.9% 40%
io/specmatic/core/config/v3/components/runOptions 75.4% 47.5%
io/specmatic/core/config/v3/components/services 89.4% 59.6%
io/specmatic/core/config/v3/components/settings 100% 63.8%
io/specmatic/core/config/v3/components/sources 83.8% 61.5%
io/specmatic/core/config/v3/specmatic 57.6% 25%
io/specmatic/core/discriminator 52.6% 50%
io/specmatic/core/examples/module 45.7% 28.9%
io/specmatic/core/examples/server 73.8% 36.8%
io/specmatic/core/examples/source 91.6% 60%
io/specmatic/core/filters 83.9% 72.1%
io/specmatic/core/fuzzy 97.3% 93.8%
io/specmatic/core/git 9% 10.8%
io/specmatic/core/jsonoperator 67.3% 70.5%
io/specmatic/core/jsonoperator/value 86.2% 74.4%
io/specmatic/core/lifecycle 0% ****
io/specmatic/core/log 76.2% 62.3%
io/specmatic/core/matchers 79.2% 64.5%
io/specmatic/core/overlay 87.3% 58.8%
io/specmatic/core/pattern 87.3% 76.7%
io/specmatic/core/pattern/config 100% ****
io/specmatic/core/pattern/regex 94.5% 87.5%
io/specmatic/core/report 97.5% 91.6%
io/specmatic/core/route/modules 95% 87.5%
io/specmatic/core/utilities 70.3% 62%
io/specmatic/core/value 82.3% 69%
io/specmatic/core/wsdl/parser 81.4% 41%
io/specmatic/core/wsdl/parser/message 90% 72%
io/specmatic/core/wsdl/parser/operation 100% 100%
io/specmatic/core/wsdl/payload 81.1% 50%
io/specmatic/junit5/support 0% ****
io/specmatic/loader 84.6% 53.5%
io/specmatic/mcp/constants 0% ****
io/specmatic/mcp/report 0% 0%
io/specmatic/mcp/test 0% 0%
io/specmatic/mcp/test/client 0% 0%
io/specmatic/mcp/test/client/model 0% 0%
io/specmatic/mock 61.7% 56.5%
io/specmatic/proxy 67% 52%
io/specmatic/specmatic/core 100% ****
io/specmatic/specmatic/executable 100% ****
io/specmatic/specmatic/mcp 0% ****
io/specmatic/stub 78.6% 68%
io/specmatic/stub/listener 100% 100%
io/specmatic/stub/report 100% 77%
io/specmatic/test 73.6% 63.2%
io/specmatic/test/asserts 95.2% 86.6%
io/specmatic/test/handlers 89.7% 63.3%
io/specmatic/test/listeners 86.4% 53.2%
io/specmatic/test/reports 60% 33.3%
io/specmatic/test/reports/coverage 97.2% 54.9%
io/specmatic/test/reports/coverage/console 90.2% 84%
io/specmatic/test/reports/coverage/html 0% 0%
io/specmatic/test/reports/renderers 21.8% 24.1%
io/specmatic/test/utils 92.3% 80%

- As fine-grained errors don't matter on structural mismatch
- We can use a regex based approach which simplifies the extraction
- Move tests from PathSegmentExtractorTest to HttpPathPatternTest
# Conflicts:
#	core/src/main/kotlin/io/specmatic/conversions/OpenApiSpecification.kt
- Use a special Score dataclass instead of plain Int
- Provide an accumulated score for grouping
- Enables callers to modify resolver, for example enabling mockMode
# Conflicts:
#	core/src/main/kotlin/io/specmatic/core/HttpPathPattern.kt
@joelrosario joelrosario merged commit b484ccb into main Mar 18, 2026
2 of 3 checks passed
@joelrosario joelrosario deleted the interpolated-path branch March 18, 2026 10:14
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.

2 participants