@@ -318,6 +318,159 @@ class MavenSettingsGeneratorTest : WordSpec({
318318 ).withIndent(8)
319319 )
320320 }
321+
322+ " generate mirror section when defined in MavenDefinition" {
323+ val secUser = MockConfigFileBuilder .createSecret("userSecret")
324+ val secPass = MockConfigFileBuilder .createSecret("passSecret")
325+ val definition = MavenDefinition (
326+ MockConfigFileBuilder .createInfrastructureService(
327+ "https://repo.example.org/test.git",
328+ secUser,
329+ secPass
330+ ),
331+ emptySet(),
332+ "repo",
333+ "central"
334+ )
335+
336+ val mockBuilder = MockConfigFileBuilder ()
337+
338+ MavenSettingsGenerator ().generate(mockBuilder.builder, listOf(definition))
339+
340+ val content = mockBuilder.generatedText()
341+ content.shouldContain(serverBlock("repo", secUser, secPass).withIndent(8))
342+ content.shouldContain(
343+ mirrorBlock(
344+ definition.id,
345+ definition.service.name,
346+ definition.service.url,
347+ definition.mirrorOf!!
348+ ).withIndent(8)
349+ )
350+ }
351+
352+ " ignore global MavenCentralMirror if MavenDefinition uses same mirrorOf" {
353+ val secUser = MockConfigFileBuilder .createSecret("userSecret")
354+ val secPass = MockConfigFileBuilder .createSecret("passSecret")
355+ val definition = MavenDefinition (
356+ MockConfigFileBuilder .createInfrastructureService(
357+ "https://repo.example.org/test.git",
358+ secUser,
359+ secPass
360+ ),
361+ emptySet(),
362+ "repo",
363+ "central"
364+ )
365+
366+ val username = " test-username"
367+ val infraUsernameSecret = MockConfigFileBuilder .createSecret("infra-secret-username")
368+ val password = " test-password"
369+ val infraPasswordSecret = MockConfigFileBuilder .createSecret("infra-secret-password")
370+ val mavenCentralMirror = MavenCentralMirror (
371+ id = "central",
372+ name = "Maven Central ",
373+ url = "https://repo.maven.apache.org/maven2",
374+ mirrorOf = "central",
375+ usernameSecret = infraUsernameSecret.name,
376+ passwordSecret = infraPasswordSecret.name
377+ )
378+
379+ val mockBuilder = MockConfigFileBuilder ()
380+ every { mockBuilder.infraSecretResolverFun.invoke(Path (infraUsernameSecret.path)) } returns username
381+ every { mockBuilder.infraSecretResolverFun.invoke(Path (infraPasswordSecret.path)) } returns password
382+ every { mockBuilder.adminConfig.mavenCentralMirror } returns mavenCentralMirror
383+
384+ MavenSettingsGenerator ().generate(mockBuilder.builder, listOf(definition))
385+
386+ val content = mockBuilder.generatedText()
387+ content.shouldContain(serverBlock("repo", secUser, secPass).withIndent(8))
388+ content.shouldNotContain(
389+ serverBlock(
390+ "central",
391+ infraUsernameSecret,
392+ infraPasswordSecret,
393+ { secret -> mockBuilder.infraSecretResolverFun.invoke(Path (secret.path)) }
394+ ).withIndent(8)
395+ )
396+ content.shouldContain(
397+ mirrorBlock(
398+ definition.id,
399+ definition.service.name,
400+ definition.service.url,
401+ definition.mirrorOf!!
402+ ).withIndent(8)
403+ )
404+ content.shouldNotContain(
405+ mirrorBlock(
406+ mavenCentralMirror.id,
407+ mavenCentralMirror.name,
408+ mavenCentralMirror.url,
409+ mavenCentralMirror.mirrorOf
410+ ).withIndent(8)
411+ )
412+ }
413+
414+ " generate mirror sections for both MavenDefinition and MavenCentralMirror if mirrorOf values differ" {
415+ val secUser = MockConfigFileBuilder .createSecret("userSecret")
416+ val secPass = MockConfigFileBuilder .createSecret("passSecret")
417+ val definition = MavenDefinition (
418+ MockConfigFileBuilder .createInfrastructureService(
419+ "https://repo.example.org/test.git",
420+ secUser,
421+ secPass
422+ ),
423+ emptySet(),
424+ "repo",
425+ "project-repository-id"
426+ )
427+
428+ val username = " test-username"
429+ val infraUsernameSecret = MockConfigFileBuilder .createSecret("infra-secret-username")
430+ val password = " test-password"
431+ val infraPasswordSecret = MockConfigFileBuilder .createSecret("infra-secret-password")
432+ val mavenCentralMirror = MavenCentralMirror (
433+ id = "central",
434+ name = "Maven Central ",
435+ url = "https://repo.maven.apache.org/maven2",
436+ mirrorOf = "central",
437+ usernameSecret = infraUsernameSecret.name,
438+ passwordSecret = infraPasswordSecret.name
439+ )
440+
441+ val mockBuilder = MockConfigFileBuilder ()
442+ every { mockBuilder.infraSecretResolverFun.invoke(Path (infraUsernameSecret.path)) } returns username
443+ every { mockBuilder.infraSecretResolverFun.invoke(Path (infraPasswordSecret.path)) } returns password
444+ every { mockBuilder.adminConfig.mavenCentralMirror } returns mavenCentralMirror
445+
446+ MavenSettingsGenerator ().generate(mockBuilder.builder, listOf(definition))
447+ val content = mockBuilder.generatedText()
448+ content.shouldContain(serverBlock("repo", secUser, secPass).withIndent(8))
449+ content.shouldContain(
450+ serverBlock(
451+ "central",
452+ infraUsernameSecret,
453+ infraPasswordSecret,
454+ { secret -> mockBuilder.infraSecretResolverFun.invoke(Path (secret.path)) }
455+ ).withIndent(8)
456+ )
457+ content.shouldContain(
458+ mirrorBlock(
459+ definition.id,
460+ definition.service.name,
461+ definition.service.url,
462+ definition.mirrorOf!!
463+ ).withIndent(8)
464+ )
465+ content.shouldContain(
466+ mirrorBlock(
467+ mavenCentralMirror.id,
468+ mavenCentralMirror.name,
469+ mavenCentralMirror.url,
470+ mavenCentralMirror.mirrorOf
471+ ).withIndent(8)
472+ )
473+ }
321474 }
322475})
323476
0 commit comments