Skip to content

Commit dc03f38

Browse files
authored
Merge pull request #6718 from thc202/openapi/object-empty
openapi: correct empty object generation
2 parents bf6338f + 832eb9d commit dc03f38

File tree

4 files changed

+38
-1
lines changed

4 files changed

+38
-1
lines changed

addOns/openapi/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
77

88
### Fixed
99
- Warn logs to always include stack trace.
10+
- Correct generation of empty object.
1011

1112
## [45] - 2025-03-24
1213
### Fixed

addOns/openapi/src/main/java/org/zaproxy/zap/extension/openapi/generators/DataGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public String generateBodyValue(String name, Schema<?> property) {
177177
} else if (property.getProperties() != null && !property.getProperties().isEmpty()) {
178178
return generators.getBodyGenerator().generate(property);
179179
} else {
180-
return "";
180+
return "{}";
181181
}
182182
}
183183
return generateValue(name, property, false);

addOns/openapi/src/test/java/org/zaproxy/zap/extension/openapi/generators/DataGeneratorUnitTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,22 @@ void shouldUseContentInParameter() throws IOException {
8282
assertEquals("{\"id\":10,\"name\":\"John Doe\"}", data);
8383
}
8484

85+
@Test
86+
void shouldGenerateEmptyPropertyObject() throws IOException {
87+
// Given
88+
OpenAPI openAPI = parseResource("defn-with-query-params.yml");
89+
Parameter parameter =
90+
openAPI.getPaths()
91+
.get("/content-json-empty-object")
92+
.getGet()
93+
.getParameters()
94+
.get(0);
95+
// When
96+
String data = generator.generate(parameter.getName(), parameter);
97+
// Then
98+
assertEquals("{\"data\":{}}", data);
99+
}
100+
85101
private OpenAPI parseResource(String fileName) throws IOException {
86102
ParseOptions options = new ParseOptions();
87103
options.setResolveFully(true);

addOns/openapi/src/test/resources/org/zaproxy/zap/extension/openapi/generators/defn-with-query-params.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,19 @@ paths:
1818
'200':
1919
description: OK
2020

21+
/content-json-empty-object:
22+
get:
23+
parameters:
24+
- name: param
25+
in: query
26+
content:
27+
application/json:
28+
schema:
29+
$ref: '#/components/schemas/PropertyEmptyObject'
30+
responses:
31+
'200':
32+
description: OK
33+
2134
/without-schema:
2235
get:
2336
parameters:
@@ -39,3 +52,10 @@ components:
3952
format: int64
4053
name:
4154
type: string
55+
PropertyEmptyObject:
56+
type: object
57+
properties:
58+
data:
59+
type: object
60+
additionalProperties: true
61+

0 commit comments

Comments
 (0)