Skip to content

Commit 71daa77

Browse files
chore: support application/vnd.api+json content type
1 parent 5e36fe5 commit 71daa77

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

internal/app/pactproxy/interaction.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ import (
1414
)
1515

1616
const (
17-
mediaTypeJSON = "application/json"
18-
mediaTypeText = "text/plain"
19-
mediaTypeXml = "application/xml"
20-
mediaTypeCsv = "text/csv"
17+
mediaTypeJSON = "application/json"
18+
mediaTypeJSONAPI = "application/vnd.api+json"
19+
mediaTypeText = "text/plain"
20+
mediaTypeXml = "application/xml"
21+
mediaTypeCsv = "text/csv"
2122
)
2223

2324
type pathMatcher interface {
@@ -116,7 +117,7 @@ func LoadInteraction(data []byte, alias string) (*Interaction, error) {
116117
}
117118

118119
switch mediaType {
119-
case mediaTypeJSON:
120+
case mediaTypeJSON, mediaTypeJSONAPI:
120121
interaction.addJSONConstraintsFromPact("$.body", propertiesWithMatchingRule, requestBody)
121122
return interaction, nil
122123
case mediaTypeText, mediaTypeCsv, mediaTypeXml:

internal/app/pactproxy/proxy.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@ type Config struct {
3636
}
3737

3838
var supportedMediaTypes = map[string]func([]byte, *url.URL) (requestDocument, error){
39-
mediaTypeJSON: ParseJSONRequest,
40-
mediaTypeText: ParsePlainTextRequest,
41-
mediaTypeCsv: ParsePlainTextRequest,
42-
mediaTypeXml: ParsePlainTextRequest,
39+
mediaTypeJSON: ParseJSONRequest,
40+
mediaTypeJSONAPI: ParseJSONRequest,
41+
mediaTypeText: ParsePlainTextRequest,
42+
mediaTypeCsv: ParsePlainTextRequest,
43+
mediaTypeXml: ParsePlainTextRequest,
4344
}
4445

4546
type api struct {

internal/app/proxy_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,12 @@ func createNonJsonTestCases() map[string]nonJsonTestCase {
296296
respContentType: "application/json",
297297
respBody: `{"status":"ok"}`,
298298
},
299+
"application/vnd.api+json request and application/json response": {
300+
reqContentType: "application/vnd.api+json",
301+
reqBody: `{"firstname":"foo"}`,
302+
respContentType: "application/json",
303+
respBody: `{"status":"ok"}`,
304+
},
299305
}
300306
}
301307

0 commit comments

Comments
 (0)