Skip to content

Commit 079622d

Browse files
authored
Merge pull request #9818 from swagger-api/resolved-spec-not-flatten-test
[openapi, openapi-yaml] - option not to flatten resolved spec, added …
2 parents 4c0558e + 3fdbce2 commit 079622d

File tree

2 files changed

+166
-0
lines changed

2 files changed

+166
-0
lines changed

modules/swagger-codegen/src/test/java/io/swagger/codegen/v3/service/GeneratorServiceTest.java

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,84 @@ public void testGeneratorServiceJavaClient2() {
359359
Assert.assertFalse(files.isEmpty());
360360
}
361361

362+
@Test(description = "test generator service resolved spec (openapi, openapi-yaml")
363+
public void testGeneratorService_ResolvedSpec() throws IOException {
364+
365+
String path = getTmpFolder().getAbsolutePath();
366+
GenerationRequest request = new GenerationRequest();
367+
request
368+
.codegenVersion(GenerationRequest.CodegenVersion.V3)
369+
.type(GenerationRequest.Type.DOCUMENTATION)
370+
.lang("openapi")
371+
.spec(loadSpecAsNode("3_0_0/flattentest.yaml", true, false))
372+
.options(
373+
new Options()
374+
.outputDir(path)
375+
.addAdditionalProperty("flattenSpec", false)
376+
);
377+
378+
new GeneratorService().generationRequest(request).generate();
379+
String spec = FileUtils.readFileToString(new File(path + File.separator + "openapi.json"));
380+
Assert.assertFalse(spec.contains("#/components/schemas/inline_response_200"));
381+
Assert.assertFalse(spec.contains("#/components/schemas/body"));
382+
383+
path = getTmpFolder().getAbsolutePath();
384+
request = new GenerationRequest();
385+
request
386+
.codegenVersion(GenerationRequest.CodegenVersion.V3)
387+
.type(GenerationRequest.Type.DOCUMENTATION)
388+
.lang("openapi-yaml")
389+
.spec(loadSpecAsNode("3_0_0/flattentest.yaml", true, false))
390+
.options(
391+
new Options()
392+
.outputDir(path)
393+
.addAdditionalProperty("flattenSpec", "false")
394+
);
395+
396+
397+
new GeneratorService().generationRequest(request).generate();
398+
spec = FileUtils.readFileToString(new File(path + File.separator + "openapi.yaml"));
399+
Assert.assertFalse(spec.contains("#/components/schemas/inline_response_200"));
400+
Assert.assertFalse(spec.contains("#/components/schemas/body"));
401+
402+
403+
path = getTmpFolder().getAbsolutePath();
404+
request = new GenerationRequest();
405+
request
406+
.codegenVersion(GenerationRequest.CodegenVersion.V3)
407+
.type(GenerationRequest.Type.DOCUMENTATION)
408+
.lang("openapi")
409+
.spec(loadSpecAsNode("3_0_0/flattentest.yaml", true, false))
410+
.options(
411+
new Options()
412+
.outputDir(path)
413+
);
414+
415+
new GeneratorService().generationRequest(request).generate();
416+
spec = FileUtils.readFileToString(new File(path + File.separator + "openapi.json"));
417+
Assert.assertTrue(spec.contains("#/components/schemas/inline_response_200"));
418+
Assert.assertTrue(spec.contains("#/components/schemas/body"));
419+
420+
421+
path = getTmpFolder().getAbsolutePath();
422+
request = new GenerationRequest();
423+
request
424+
.codegenVersion(GenerationRequest.CodegenVersion.V3)
425+
.type(GenerationRequest.Type.DOCUMENTATION)
426+
.lang("openapi-yaml")
427+
.spec(loadSpecAsNode("3_0_0/flattentest.yaml", true, false))
428+
.options(
429+
new Options()
430+
.outputDir(path)
431+
);
432+
433+
new GeneratorService().generationRequest(request).generate();
434+
spec = FileUtils.readFileToString(new File(path + File.separator + "openapi.yaml"));
435+
Assert.assertTrue(spec.contains("#/components/schemas/inline_response_200"));
436+
Assert.assertTrue(spec.contains("#/components/schemas/body"));
437+
438+
}
439+
362440
protected static File getTmpFolder() {
363441
try {
364442
File outputFolder = File.createTempFile("codegentest-", "-tmp");
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
openapi: 3.0.1
2+
info:
3+
version: "v2.0"
4+
title: Test
5+
paths:
6+
/product:
7+
get:
8+
operationId: getProduct
9+
summary: Gets a Product by ID.
10+
responses:
11+
'200':
12+
description: Successful operation
13+
content:
14+
application/json:
15+
schema:
16+
$ref: '#/components/schemas/Product'
17+
put:
18+
operationId: updateProduct
19+
summary: Updates a Product by ID.
20+
requestBody:
21+
required: true
22+
content:
23+
application/json:
24+
schema:
25+
$ref: '#/components/schemas/Product'
26+
responses:
27+
'201':
28+
description: Created
29+
/productflatten:
30+
get:
31+
operationId: getProduct
32+
summary: Gets a Product by ID.
33+
responses:
34+
'200':
35+
description: Successful operation
36+
content:
37+
application/json:
38+
schema:
39+
type: object
40+
properties:
41+
name:
42+
type: object
43+
additionalProperties:
44+
type: string
45+
active:
46+
type: boolean
47+
example: true
48+
foo:
49+
type: object
50+
additionalProperties: true
51+
put:
52+
operationId: updateProduct
53+
summary: Updates a Product by ID.
54+
requestBody:
55+
required: true
56+
content:
57+
application/json:
58+
schema:
59+
type: object
60+
properties:
61+
name:
62+
type: object
63+
additionalProperties:
64+
type: string
65+
active:
66+
type: boolean
67+
example: true
68+
foo:
69+
type: object
70+
additionalProperties: true
71+
responses:
72+
'201':
73+
description: Created
74+
components:
75+
schemas:
76+
Product:
77+
type: object
78+
properties:
79+
name:
80+
type: object
81+
additionalProperties:
82+
type: string
83+
active:
84+
type: boolean
85+
example: true
86+
foo:
87+
type: object
88+
additionalProperties: true

0 commit comments

Comments
 (0)