2020package org.eclipse.apoapsis.ortserver.workers.common.env
2121
2222import io.kotest.core.spec.style.WordSpec
23+ import io.kotest.matchers.collections.shouldContainExactly
2324import io.kotest.matchers.shouldBe
25+ import io.kotest.matchers.string.shouldBeEmpty
2426
27+ import io.mockk.every
28+
29+ import org.eclipse.apoapsis.ortserver.config.Path
30+ import org.eclipse.apoapsis.ortserver.services.config.MavenCentralMirror
2531import org.eclipse.apoapsis.ortserver.workers.common.env.definition.GradleDefinition
2632
2733class GradleInitGeneratorTest : WordSpec ({
@@ -41,5 +47,144 @@ class GradleInitGeneratorTest : WordSpec({
4147
4248 mockBuilder.homeFileName shouldBe " .gradle/init.gradle.kts"
4349 }
50+
51+ " generate an empty file if MavenCentralMirror is null" {
52+ val mockBuilder = MockConfigFileBuilder ()
53+
54+ GradleInitGenerator ().generate(mockBuilder.builder, emptyList())
55+
56+ mockBuilder.generatedText().shouldBeEmpty()
57+ }
58+
59+ " generate repositories blocks without credentials if MavenCentralMirror has no credentials" {
60+ val mavenCentralMirror = MavenCentralMirror (
61+ id = "central",
62+ name = "Maven Central ",
63+ url = "https://repo.maven.apache.org/maven2",
64+ mirrorOf = "central"
65+ )
66+
67+ val mockBuilder = MockConfigFileBuilder ()
68+ every { mockBuilder.adminConfig.mavenCentralMirror } returns mavenCentralMirror
69+
70+ GradleInitGenerator ().generate(mockBuilder.builder, emptyList())
71+
72+ val expectedLines = listOf(
73+ "allprojects {",
74+ " repositories {",
75+ " maven {",
76+ " url = uri(\"${mavenCentralMirror.url}\")",
77+ " }",
78+ " }",
79+ "",
80+ " buildscript {",
81+ " repositories {",
82+ " maven {",
83+ " url = uri(\"${mavenCentralMirror.url}\")",
84+ " }",
85+ " }",
86+ " }",
87+ "}",
88+ "",
89+ "settingsEvaluated {",
90+ " settings.pluginManagement {",
91+ " repositories {",
92+ " maven {",
93+ " url = uri(\"${mavenCentralMirror.url}\")",
94+ " }",
95+ " gradlePluginPortal()",
96+ " }",
97+ " }",
98+ "",
99+ " settings.dependencyResolutionManagement {",
100+ " repositories {",
101+ " maven {",
102+ " url = uri(\"${mavenCentralMirror.url}\")",
103+ " }",
104+ " }",
105+ " }",
106+ "}"
107+ )
108+
109+ val lines = mockBuilder.generatedLines()
110+ lines shouldContainExactly expectedLines
111+ }
112+
113+ " generate repositories blocks with credentials if MavenCentralMirror has credentials" {
114+ val username = " test-username"
115+ val infraUsernameSecret = MockConfigFileBuilder .createSecret("infra-secret-username")
116+ val password = " test-password"
117+ val infraPasswordSecret = MockConfigFileBuilder .createSecret("infra-secret-password")
118+ val mavenCentralMirror = MavenCentralMirror (
119+ id = "central",
120+ name = "Maven Central ",
121+ url = "https://repo.maven.apache.org/maven2",
122+ mirrorOf = "central",
123+ usernameSecret = infraUsernameSecret.name,
124+ passwordSecret = infraPasswordSecret.name
125+ )
126+
127+ val mockBuilder = MockConfigFileBuilder ()
128+ every { mockBuilder.infraSecretResolverFun.invoke(Path (infraUsernameSecret.path)) } returns username
129+ every { mockBuilder.infraSecretResolverFun.invoke(Path (infraPasswordSecret.path)) } returns password
130+ every { mockBuilder.adminConfig.mavenCentralMirror } returns mavenCentralMirror
131+
132+ GradleInitGenerator ().generate(mockBuilder.builder, emptyList())
133+
134+ val expectedLines = listOf(
135+ "allprojects {",
136+ " repositories {",
137+ " maven {",
138+ " url = uri(\"${mavenCentralMirror.url}\")",
139+ " credentials {",
140+ " username = \"$username\"",
141+ " password = \"$password\"",
142+ " }",
143+ " }",
144+ " }",
145+ "",
146+ " buildscript {",
147+ " repositories {",
148+ " maven {",
149+ " url = uri(\"${mavenCentralMirror.url}\")",
150+ " credentials {",
151+ " username = \"$username\"",
152+ " password = \"$password\"",
153+ " }",
154+ " }",
155+ " }",
156+ " }",
157+ "}",
158+ "",
159+ "settingsEvaluated {",
160+ " settings.pluginManagement {",
161+ " repositories {",
162+ " maven {",
163+ " url = uri(\"${mavenCentralMirror.url}\")",
164+ " credentials {",
165+ " username = \"$username\"",
166+ " password = \"$password\"",
167+ " }",
168+ " }",
169+ " gradlePluginPortal()",
170+ " }",
171+ " }",
172+ "",
173+ " settings.dependencyResolutionManagement {",
174+ " repositories {",
175+ " maven {",
176+ " url = uri(\"${mavenCentralMirror.url}\")",
177+ " credentials {",
178+ " username = \"$username\"",
179+ " password = \"$password\"",
180+ " }",
181+ " }",
182+ " }",
183+ " }",
184+ "}"
185+ )
186+ val lines = mockBuilder.generatedLines()
187+ lines shouldContainExactly expectedLines
188+ }
44189 }
45190})
0 commit comments