Skip to content

Conversation

@jheyens
Copy link
Contributor

@jheyens jheyens commented Oct 14, 2025

In case of an endpoint that may reply with multiple Content-Types (e.g. a file as application/octet-stream if successful and an error message as application/json in case of an error), the Wiremock stubs create the following snippet:

[...]
.withHeader("Accept", havingExactly("application/octet-stream", "application/json"))
[...]

This results in a failed request if there are not at least to "Accept: "-headers, one being exactly Accept: application/octet-stream, the other being exactly Accept: application/json. This, however, is not how user agents set the "Accept: "-Header. Instead, they supply only one Header containing both (separated by , plus optional whitespace).

This PR replaces the lines like

.withHeader("Accept", havingExactly("application/octet-stream", "application/json"))

with one line for each requested header like this:

.withHeader("Accept", containing("application/octet-stream"))
.withHeader("Accept", containing("application/json"))

The switch from havingExactly to containing is due to shortcomings in the wiremock DSL, which would require specification-compliant parsing of the "Accept: "-Header content. I don't think that would be worth the trouble, though, since substring matching ought to be enough for test suites.

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package || exit
    ./bin/generate-samples.sh ./bin/configs/*.yaml || exit
    ./bin/utils/export_docs_generators.sh || exit
    
    (For Windows users, please run the script in WSL)
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
  • File the PR against the correct branch: master (upcoming 7.x.0 minor release - breaking changes with fallbacks), 8.0.x (breaking changes without fallbacks)
  • If your PR solves a reported issue, reference it using GitHub's linking syntax (e.g., having "fixes #123" present in the PR description)
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@bbdouglas
@sreeshas
@jfiala
@lukoyanov
@cbornet
@jeff9finger
@karismann
@Zomzog
@lwlee2608
@martin-mfg

@jheyens jheyens force-pushed the wiremockAcceptHeaders branch from 3a0fc8b to 945efbe Compare October 14, 2025 16:59
@jheyens jheyens force-pushed the wiremockAcceptHeaders branch 2 times, most recently from 6c2b992 to 03a3159 Compare October 15, 2025 15:37
@wing328
Copy link
Member

wing328 commented Oct 15, 2025

thanks for the PR

cc acouvreur - author of Java Wiremock generator

@jheyens jheyens force-pushed the wiremockAcceptHeaders branch from 03a3159 to ac2923f Compare October 15, 2025 17:50
@jheyens jheyens force-pushed the wiremockAcceptHeaders branch from ac2923f to 7063f44 Compare October 15, 2025 18:21
@wing328
Copy link
Member

wing328 commented Oct 18, 2025

thanks for the PR

let's give it a try

@wing328 wing328 merged commit 552ab4c into OpenAPITools:master Oct 18, 2025
16 checks passed
@wing328 wing328 added this to the 7.17.0 milestone Oct 18, 2025
rajvesh pushed a commit to rajvesh/openapi-generator that referenced this pull request Dec 25, 2025
…aders (OpenAPITools#22133)

* Java-wiremock: Allow matching multiple Accept-header values

* Wiremock: Ignore casing when matching requests' Content-Type headers

* Java-wiremock: Regenerate samples
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants