mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-08-12 23:12:13 +02:00
MimePartMatcher does not match multipart/form-data request body (possible bug?) #723
Open
opened 2025-12-29 15:31:54 +01:00 by adam
·
4 comments
No Branch/Tag Specified
master
1341-mapping-json
stef-aspire-tests-updates
bug/973-TinyMapper
bug/1149-AppendGuidToSavedMappingFile
feature/1150-DockerImageVersion
61
stef-1108
stef-1097
stef-1083-MessageOptions_Type_Conflict
stef-1062-logger
stef-IgnoreOpenApiErrors
stef-928-TypeLoadException-FluentAssertions-net472
nunit
stef-849
stef-847-regex-questionmark
http_verb
WireMockServerContext
webapp
ai
CommandLineArgumentsParser
2.14.0
2.13.0
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.25.0
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.0
1.17.0
1.16.0
1.15.0
1.14.0
1.13.0
1.12.0
1.11.2
1.11.0
1.10.1
1.10.0
1.9.1
1.9.0
1.8.18
1.8.17
1.8.16
1.8.15
1.8.14
1.8.13
1.8.12
1.8.11
1.8.10
1.8.9
1.8.8
1.8.7
1.8.6
1.8.5
1.8.3
1.8.2
1.8.1
1.8.0
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.62
1.5.61
1.5.60
1.5.59
1.5.58
1.5.57
1.5.56
1.5.55
1.5.54
1.5.53
1.5.52
1.5.51
1.5.50
1.5.49
1.5.48
1.5.47
1.5.46
1.5.45
1.5.44
1.5.43
1.5.42
1.5.41
1.5.40
1.5.39
1.5.38
1.5.37
1.5.36
1.5.35
1.5.34
1.5.33
1.5.32
1.5.31
1.5.30
1.5.29
1.5.28
1.5.27
1.5.26
1.5.25
1.5.24
1.5.23
1.5.22
1.5.21
1.5.20
1.5.19
1.5.18
1.5.17
1.5.16
1.5.15
1.5.14
1.5.13
1.5.12
1.5.11
1.5.10
1.5.9
1.5.8
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.43
1.4.42
1.4.41
1.4.40
1.4.39
1.4.38
1.4.37
1.4.36
1.4.35
1.4.34
1.4.33
1.4.32
1.4.31
1.4.30
1.4.29
1.4.28
1.4.27
1.4.26
1.4.25
1.4.24
1.4.23
1.4.22
1.4.21
1.4.20
1.4.19
1.4.18
1.4.17
1.4.16
1.4.15
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.10
1.3.9
1.3.8
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.18
1.2.17
1.2.16
1.2.15
1.2.14
1.2.13
1.2.12
1.2.11.0
1.2.10
1.2.9.0
1.2.8.0
1.2.7.0
1.2.6.0
1.2.5.0
1.2.4.0
1.2.3.0
1.2.2.0
1.2.1.0
1.2.0.0
1.1.10
1.1.9.0
1.1.8.0
1.1.7.0
1.1.6.0
1.1.5.0
1.1.3.0
1.1.2.0
1.1.1.0
1.1.0.0
1.0.43.0
1.0.42.0
1.0.41.0
1.0.40.0
1.0.39.0
1.0.38.0
1.0.37.0
1.0.36.0
1.0.35.0
1.0.34.0
1.0.33.0
1.0.32.0
1.0.31.0
1.0.29.0
1.0.28.0
1.0.25.0
1.0.24.0
1.0.23.0
1.0.22.0
1.0.21.0
1.0.20.0
1.0.19.0
1.0.18.0
1.0.17.0
1.0.16.0
1.0.15.0
1.0.14.0
1.0.13.0
1.0.12.0
1.0.11.0
1.0.10.0
1.0.9.0
1.0.8.0
1.0.7.0
1.0.6.1
1.0.6
1.0.5
1.0.4.21
1.0.4.20
1.0.4.19
1.0.4.18
1.0.4.17
1.0.4.16
1.0.4.15
1.0.4.14
1.0.4.13
1.0.4.12
1.0.4.11
1.0.4.10
1.0.4.9
1.0.4.8
1.0.4.7
1.0.4.6
1.0.4.5
1.0.4.4
1.0.4.3
1.0.4.2
1.0.4.1
1.0.4.0
1.0.3.20
1.0.3.19
1.0.3.18
1.0.3.17
1.0.3.16
1.0.3.15
1.0.3.14
1.0.3.13
1.0.3.12
1.0.3.11
1.0.3.10
1.0.3.9
1.0.3.8
1.0.3.7
1.0.3.6
1.0.3.5
1.0.3.4
1.0.3.3
1.0.3.2
1.0.3.1
1.0.3.0
1.0.2.13
1.0.2.12
1.0.2.11
1.0.2.10
1.0.2.9
1.0.2.8
1.0.2.7
1.0.2.6
1.0.2.5
1.0.2.4
1.0.2.1
1.0.2.0
1.0.1.5
1.0.1.3
1.0.1.2
1.0.1.1
1.0.0.0
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
adam (Adam Melkus)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/WireMock.Net-wiremock#723
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @BrunoBeraud on GitHub (Oct 24, 2025).
Originally assigned to: @StefH on GitHub.
Hello,
First of all, thank you for this library — it helps us a lot in our development work!
I'm using WireMock.Net.Testcontainers 1.15.0 for our tests and the
sheyenrath/wiremock.net-alpine:1.15.0Docker image in our development environment.We want to define a stub endpoint that accepts a
multipart/form-dataHTTP request.Unfortunately, we’re not able to create a request body matcher using
MimePartMatcherin a JSON mapping file.What Works
This body matcher works correctly:
What Doesn’t Work
When using
MimePartMatcher, even with very lenient matchers, the matcher always returns a 0.0 score for the body:I also tried:
WildcardMatcherwith*for all matchersJsonMatcherwith the exact JSON sentJsonPartialMatcherusing regex (with"Regex": true) and.*for all JSON values"ContentTypeMatcher"with"Name": "ContentTypeMatcher"and"Pattern": "application/json"→ Always a 0.0 score for
BodyMatcher(whilePathMatcher,MethodMatcher, andHeadersMatcherall score 1.0).Request Example
Here’s a sample
curlrequest (exported from Postman):Observation
From the
/__admin/requestsendpoint, here’s an example of the request body WireMock receives:After digging a bit into the code, it seems that the issue comes from the use of the MimeKit library, which appears unable to parse this request body.
As a result, WireMock fails to extract the body parts, and the matcher score stays at its default value (
0.0).Possible Root Cause
It looks like the body content doesn’t include headers (such as
Content-Typewith a boundary) that would allowMimeKitto properly parse it intoBodyParts.In real HTTP requests, this header is not part of the body — it’s in the request headers — which might explain the mismatch compared to the examples in
MimePartMatcherTests, where the content type is included in the body.Question
Could this be a limitation or a bug in how
MimePartMatcher/MimeKithandles real multipart/form-data requests?Or is there a recommended approach to match multipart requests in JSON mappings?
Thank you in advance for your time and for maintaining this great library!
@StefH commented on GitHub (Dec 7, 2025):
@BrunoBeraud
I need to check.
@StefH commented on GitHub (Dec 8, 2025):
@BrunoBeraud
I did check the code and it's correct, in my unit tests I need to pass that text (including Content-Type as part of the body) to get a valid MimeMessage with 3 parts.
The real code will use the Header and prepend this to your body.
I think that your mapping json is wrong.
A possible mapping json for checking 3 parts (same as in the unit test) can be like:
See also this extra unit test --> https://github.com/wiremock/WireMock.Net/pull/1389
@BrunoBeraud commented on GitHub (Dec 17, 2025):
Hello, I have tried your json multipart request mapping file with sheyenrath/wiremock.net-alpine:1.15.0 docker container.
I used this curl request:
curl -X POST http://localhost:8080/multipart \ -F 'plainText=This is some plain text;type=text/plain' \ -F 'jsonData={ "Key": "Value" };type=text/json' \ -F 'image=@image.png;type=image/png'The image is the one expecting in the ExactObjectMatcher base64 pattern
MatchDetails all 1.0 but BodyMatcher still 0.0...
@StefH commented on GitHub (Dec 18, 2025):
@BrunoBeraud
I did not test the Docker image, but just local code.
And the mapping in json is like:
The same mapping in code is:
See also:
https://github.com/wiremock/WireMock.Net/blob/mime-part-matcher/examples/WireMock.Net.Console.NET8/MainApp.cs#L559
The image.png is attached to this comment.

(It's a small red dot below...)
Running CURL on windows:
Logging: