@@ -4,28 +4,23 @@ import com.beust.klaxon.JsonObject
44import com.beust.klaxon.Parser
55import org.gradle.internal.impldep.org.apache.commons.lang.RandomStringUtils
66import org.gradle.testkit.runner.BuildResult
7- import org.gradle.testkit.runner.BuildTask
87import org.gradle.testkit.runner.GradleRunner
98import org.gradle.testkit.runner.TaskOutcome
10- import org.junit.Assert.assertEquals
11- import org.junit.Assert.assertFalse
12- import org.junit.Before
13- import org.junit.Rule
14- import org.junit.Test
15- import org.junit.rules.TemporaryFolder
9+ import org.junit.jupiter.api.Assertions.assertEquals
10+ import org.junit.jupiter.api.Assertions.assertFalse
11+ import org.junit.jupiter.api.BeforeEach
12+ import org.junit.jupiter.api.Test
1613import java.io.File
1714import java.io.FileReader
15+ import java.nio.file.Files
1816
1917class OpenApiGradlePluginTest {
20- @Rule
21- @JvmField
22- var testProjectDir: TemporaryFolder = TemporaryFolder ()
2318
24- private lateinit var projectTestDir: File
25- private lateinit var buildFile: File
26- private lateinit var projectBuildDir: File
19+ private val projectTestDir = Files .createTempDirectory( " acceptance-project " ).toFile()
20+ private val buildFile = File (projectTestDir, " build.gradle " )
21+ private val projectBuildDir = File (projectTestDir, " build " )
2722
28- private var baseBuildGradle = """ plugins {
23+ private val baseBuildGradle = """ plugins {
2924 id 'org.springframework.boot' version '2.2.0.RELEASE'
3025 id 'io.spring.dependency-management' version '1.0.9.RELEASE'
3126 id 'java'
@@ -47,16 +42,9 @@ class OpenApiGradlePluginTest {
4742 }
4843 """ .trimIndent()
4944
50- @Before
51- fun setup () {
52- val acceptanceTestProject = File (this .javaClass.classLoader.getResource(" acceptance-project" )!! .path)
53- projectTestDir = File (testProjectDir.newFolder(), " acceptence-project" )
54-
55- acceptanceTestProject.copyRecursively(projectTestDir)
56- buildFile = File (projectTestDir, " build.gradle" )
57-
58- projectBuildDir = File (projectTestDir, " build" )
59- println (" !!!!! $projectBuildDir !!!!!!!" )
45+ @BeforeEach
46+ fun createTemporaryAcceptanceProjectFromTemplate () {
47+ File (javaClass.classLoader.getResource(" acceptance-project" )!! .path).copyRecursively(projectTestDir)
6048 }
6149
6250 @Test
@@ -69,165 +57,173 @@ class OpenApiGradlePluginTest {
6957 .withPluginClasspath()
7058 .build()
7159
72- assertEquals(TaskOutcome .SUCCESS , getTaskByName (result, " generateOpenApiDocs " )? .outcome)
60+ assertEquals(TaskOutcome .SUCCESS , openApiDocsTask (result) .outcome)
7361
7462 val openApiJsonFile = File (projectBuildDir, DEFAULT_OPEN_API_FILE_NAME )
7563 assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1 )
7664 }
7765
7866 @Test
7967 fun `different output dir` () {
80- var specialOutputDir = File (projectTestDir, " specialDir" )
68+ val specialOutputDir = File (projectTestDir, " specialDir" )
8169 specialOutputDir.mkdirs()
8270
83- buildFile.writeText(""" $baseBuildGradle
71+ buildFile.writeText(
72+ """ $baseBuildGradle
8473 openApi{
8574 outputDir = file("${specialOutputDir.toURI().path} ")
8675 }
87- """ .trimMargin())
76+ """ .trimMargin()
77+ )
8878
8979 val result = GradleRunner .create()
9080 .withProjectDir(projectTestDir)
9181 .withArguments(" clean" , " generateOpenApiDocs" )
9282 .withPluginClasspath()
9383 .build()
9484
95- assertEquals(TaskOutcome .SUCCESS , getTaskByName (result, " generateOpenApiDocs " )? .outcome)
85+ assertEquals(TaskOutcome .SUCCESS , openApiDocsTask (result) .outcome)
9686
9787 val openApiJsonFile = File (specialOutputDir, DEFAULT_OPEN_API_FILE_NAME )
9888 assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1 )
9989 }
10090
10191 @Test
10292 fun `different output file name` () {
103- var specialOutputJsonFileName = RandomStringUtils .randomAlphanumeric(15 )
93+ val specialOutputJsonFileName = RandomStringUtils .randomAlphanumeric(15 )
10494
105- buildFile.writeText(""" $baseBuildGradle
95+ buildFile.writeText(
96+ """ $baseBuildGradle
10697 openApi{
10798 outputFileName = "$specialOutputJsonFileName "
10899 }
109- """ .trimMargin())
100+ """ .trimMargin()
101+ )
110102
111103 val result = GradleRunner .create()
112104 .withProjectDir(projectTestDir)
113105 .withArguments(" clean" , " generateOpenApiDocs" )
114106 .withPluginClasspath()
115107 .build()
116108
117- assertEquals(TaskOutcome .SUCCESS , getTaskByName (result, " generateOpenApiDocs " )? .outcome)
109+ assertEquals(TaskOutcome .SUCCESS , openApiDocsTask (result) .outcome)
118110
119111 val openApiJsonFile = File (projectBuildDir, specialOutputJsonFileName)
120112 assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1 )
121113 }
122114
123115 @Test
124116 fun `using forked properties` () {
125- buildFile.writeText(""" $baseBuildGradle
117+ buildFile.writeText(
118+ """ $baseBuildGradle
126119 openApi{
127120 forkProperties = "-Dspring.profiles.active=multiple-endpoints -Dsome.second.property=someValue"
128121 }
129- """ .trimMargin())
122+ """ .trimMargin()
123+ )
130124
131125 val result = GradleRunner .create()
132126 .withProjectDir(projectTestDir)
133127 .withArguments(" clean" , " generateOpenApiDocs" )
134128 .withPluginClasspath()
135129 .build()
136130
137- assertEquals(TaskOutcome .SUCCESS , getTaskByName (result, " generateOpenApiDocs " )? .outcome)
131+ assertEquals(TaskOutcome .SUCCESS , openApiDocsTask (result) .outcome)
138132
139133 val openApiJsonFile = File (projectBuildDir, DEFAULT_OPEN_API_FILE_NAME )
140134 assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 3 )
141135 }
142136
143137 @Test
144138 fun `using forked properties via System properties` () {
145- buildFile.writeText(""" $baseBuildGradle
139+ buildFile.writeText(
140+ """ $baseBuildGradle
146141 openApi{
147142 forkProperties = System.properties
148143 }
149- """ .trimMargin())
144+ """ .trimMargin()
145+ )
150146
151147 val result = GradleRunner .create()
152148 .withProjectDir(projectTestDir)
153149 .withArguments(" clean" , " generateOpenApiDocs" , " -Dspring.profiles.active=multiple-endpoints" )
154150 .withPluginClasspath()
155151 .build()
156152
157- assertEquals(TaskOutcome .SUCCESS , getTaskByName (result, " generateOpenApiDocs " )? .outcome)
153+ assertEquals(TaskOutcome .SUCCESS , openApiDocsTask (result) .outcome)
158154
159155 val openApiJsonFile = File (projectBuildDir, DEFAULT_OPEN_API_FILE_NAME )
160156 assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 2 )
161157 }
162158
163159 @Test
164160 fun `configurable wait time` () {
165- buildFile.writeText(""" $baseBuildGradle
161+ buildFile.writeText(
162+ """ $baseBuildGradle
166163 openApi{
167164 forkProperties = "-Dspring.profiles.active=slower"
168165 waitTimeInSeconds = 60
169166 }
170- """ .trimMargin())
167+ """ .trimMargin()
168+ )
171169
172170 val result = GradleRunner .create()
173171 .withProjectDir(projectTestDir)
174172 .withArguments(" clean" , " generateOpenApiDocs" )
175173 .withPluginClasspath()
176174 .build()
177175
178- assertEquals(TaskOutcome .SUCCESS , getTaskByName (result, " generateOpenApiDocs " )? .outcome)
176+ assertEquals(TaskOutcome .SUCCESS , openApiDocsTask (result) .outcome)
179177
180178 val openApiJsonFile = File (projectBuildDir, DEFAULT_OPEN_API_FILE_NAME )
181179 assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1 )
182180 }
183181
184182 @Test
185183 fun `using different api url` () {
186- buildFile.writeText(""" $baseBuildGradle
184+ buildFile.writeText(
185+ """ $baseBuildGradle
187186 openApi{
188187 apiDocsUrl = "http://localhost:8080/secret-api-docs"
189188 forkProperties = "-Dspring.profiles.active=different-url"
190189 }
191- """ .trimMargin())
190+ """ .trimMargin()
191+ )
192192
193193 val result = GradleRunner .create()
194194 .withProjectDir(projectTestDir)
195195 .withArguments(" clean" , " generateOpenApiDocs" )
196196 .withPluginClasspath()
197197 .build()
198198
199- assertEquals(TaskOutcome .SUCCESS , getTaskByName(result, " generateOpenApiDocs" )?.outcome)
200-
201- val openApiJsonFile = File (projectBuildDir, DEFAULT_OPEN_API_FILE_NAME )
202- assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1 )
199+ assertEquals(TaskOutcome .SUCCESS , openApiDocsTask(result).outcome)
200+ assertOpenApiJsonFileIsAsExpected(File (projectBuildDir, DEFAULT_OPEN_API_FILE_NAME ), 1 )
203201 }
204202
205203 @Test
206204 fun `using multiple grouped apis` () {
207205 val outputJsonFileNameGroupA = " openapi-groupA.json"
208206 val outputJsonFileNameGroupB = " openapi-groupB.json"
209207
210- buildFile.writeText(""" $baseBuildGradle
208+ buildFile.writeText(
209+ """ $baseBuildGradle
211210 openApi{
212211 groupedApiMappings = ["http://localhost:8080/v3/api-docs/groupA": "$outputJsonFileNameGroupA ",
213212 "http://localhost:8080/v3/api-docs/groupB": "$outputJsonFileNameGroupB "]
214213 forkProperties = "-Dspring.profiles.active=multiple-grouped-apis"
215214 }
216- """ .trimMargin())
215+ """ .trimMargin()
216+ )
217217
218218 val result = GradleRunner .create()
219219 .withProjectDir(projectTestDir)
220220 .withArguments(" clean" , " generateOpenApiDocs" )
221221 .withPluginClasspath()
222222 .build()
223223
224- assertEquals(TaskOutcome .SUCCESS , getTaskByName(result, " generateOpenApiDocs" )?.outcome)
225-
226- val openApiJsonFileGroupA = File (projectBuildDir, outputJsonFileNameGroupA)
227- assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupA, 1 )
228-
229- val openApiJsonFileGroupB = File (projectBuildDir, outputJsonFileNameGroupB)
230- assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupB, 2 )
224+ assertEquals(TaskOutcome .SUCCESS , openApiDocsTask(result).outcome)
225+ assertOpenApiJsonFileIsAsExpected(File (projectBuildDir, outputJsonFileNameGroupA), 1 )
226+ assertOpenApiJsonFileIsAsExpected(File (projectBuildDir, outputJsonFileNameGroupB), 2 )
231227 }
232228
233229 @Test
@@ -236,45 +232,37 @@ class OpenApiGradlePluginTest {
236232 val outputJsonFileNameGroupA = " openapi-groupA.json"
237233 val outputJsonFileNameGroupB = " openapi-groupB.json"
238234
239- buildFile.writeText(""" $baseBuildGradle
235+ buildFile.writeText(
236+ """ $baseBuildGradle
240237 openApi{
241238 apiDocsUrl = "http://localhost:8080/v3/api-docs/groupA"
242239 outputFileName = "$outputJsonFileNameSingleGroupA "
243240 groupedApiMappings = ["http://localhost:8080/v3/api-docs/groupA": "$outputJsonFileNameGroupA ",
244241 "http://localhost:8080/v3/api-docs/groupB": "$outputJsonFileNameGroupB "]
245242 forkProperties = "-Dspring.profiles.active=multiple-grouped-apis"
246243 }
247- """ .trimMargin())
244+ """ .trimMargin()
245+ )
248246
249247 val result = GradleRunner .create()
250248 .withProjectDir(projectTestDir)
251249 .withArguments(" clean" , " generateOpenApiDocs" )
252250 .withPluginClasspath()
253251 .build()
254252
255- assertEquals(TaskOutcome .SUCCESS , getTaskByName(result, " generateOpenApiDocs" )?.outcome)
256-
257- val openApiJsonFileSingleGroupA = File (projectBuildDir, outputJsonFileNameSingleGroupA)
258- assertFalse(openApiJsonFileSingleGroupA.exists())
259-
260- val openApiJsonFileGroupA = File (projectBuildDir, outputJsonFileNameGroupA)
261- assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupA, 1 )
262-
263- val openApiJsonFileGroupB = File (projectBuildDir, outputJsonFileNameGroupB)
264- assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupB, 2 )
253+ assertEquals(TaskOutcome .SUCCESS , openApiDocsTask(result).outcome)
254+ assertFalse(File (projectBuildDir, outputJsonFileNameSingleGroupA).exists())
255+ assertOpenApiJsonFileIsAsExpected(File (projectBuildDir, outputJsonFileNameGroupA), 1 )
256+ assertOpenApiJsonFileIsAsExpected(File (projectBuildDir, outputJsonFileNameGroupB), 2 )
265257 }
266258
267259 private fun assertOpenApiJsonFileIsAsExpected (openApiJsonFile : File , expectedNumberOfPaths : Int ) {
268260 val openApiJson = getOpenApiJsonAtLocation(openApiJsonFile)
269- assertEquals(" 3.0.1" , openApiJson!! .string(" openapi" ))
261+ assertEquals(" 3.0.1" , openApiJson.string(" openapi" ))
270262 assertEquals(expectedNumberOfPaths, openApiJson.obj(" paths" )!! .size)
271263 }
272264
273- private fun getOpenApiJsonAtLocation (path : File ): JsonObject ? {
274- return Parser .default().parse(FileReader (path)) as JsonObject
275- }
265+ private fun getOpenApiJsonAtLocation (path : File ) = Parser .default().parse(FileReader (path)) as JsonObject
276266
277- private fun getTaskByName (result : BuildResult , name : String ): BuildTask ? {
278- return result.tasks.find { it.path.contains(name) }
279- }
280- }
267+ private fun openApiDocsTask (result : BuildResult ) = result.tasks.find { it.path.contains(" generateOpenApiDocs" ) }!!
268+ }
0 commit comments