blob: 58448a2d56069c4cb3931b741853eee0836b0cd2 [file] [log] [blame]
import com.homeaway.devtools.jenkins.testing.JenkinsPipelineSpecification
import org.jenkinsci.plugins.workflow.steps.Step
import org.jenkinsci.plugins.workflow.steps.StepContext
import org.jenkinsci.plugins.workflow.steps.StepExecution
import org.kie.jenkins.MavenSettingsConfigBuilder
import org.kie.jenkins.MavenSettingsService
class MavenSettingsServiceSpec extends JenkinsPipelineSpecification {
def steps
def env = [:]
def setup() {
steps = new Step() {
@Override
StepExecution start(StepContext stepContext) throws Exception {
return null
}
}
}
def "[MavenSettingsService.groovy] create with all set"() {
setup:
steps.env = ['MAVEN_SETTINGS_XML':'settingsFileId']
def mvnCfg = new MavenSettingsConfigBuilder()
.dependenciesRepositoriesInSettings([ID: 'URL'])
.disabledMirrorRepoInSettings(['DISABLED_ID'] as Set)
.disableSnapshotsInSettings(true)
.settingsXmlConfigFileId('anyId')
.build()
when:
new MavenSettingsService(steps, mvnCfg).createSettingsFile()
then:
1 * getPipelineMock("sh")([returnStdout: true, script: 'mktemp --suffix -settings.xml']) >> 'anything-settings.xml'
1 * getPipelineMock('sh')("""
sed -i 's|<repositories>|<repositories><!-- BEGIN added repository --><repository><id>ID</id><name>ID</name><url>URL</url><layout>default</layout><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository><!-- END added repository -->|g' settingsFileId
sed -i 's|<pluginRepositories>|<pluginRepositories><!-- BEGIN added repository --><pluginRepository><id>ID</id><name>ID</name><url>URL</url><layout>default</layout><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></pluginRepository><!-- END added repository -->|g' settingsFileId
""")
1 * getPipelineMock('sh')("sed -i 's|</mirrorOf>|,!ID</mirrorOf>|g' settingsFileId")
1 * getPipelineMock('sh')("sed -i 's|</mirrorOf>|,!DISABLED_ID</mirrorOf>|g' settingsFileId")
1 * getPipelineMock('sh')("sed -i '/<repository>/,/<\\/repository>/ { /<snapshots>/,/<\\/snapshots>/ { s|<enabled>true</enabled>|<enabled>false</enabled>|; }}' settingsFileId")
1 * getPipelineMock('sh')("sed -i '/<pluginRepository>/,/<\\/pluginRepository>/ { /<snapshots>/,/<\\/snapshots>/ { s|<enabled>true</enabled>|<enabled>false</enabled>|; }}' settingsFileId")
}
def "[MavenSettingsService.groovy] settingsXmlConfigFileId"() {
setup:
steps.env = ['MAVEN_SETTINGS_XML':'settingsFileId']
def mvnCfg = new MavenSettingsConfigBuilder()
.settingsXmlConfigFileId('anyId')
.build()
when:
def settingsFile = new MavenSettingsService(steps, mvnCfg).createSettingsFile()
then:
1 * getPipelineMock("sh")([returnStdout: true, script: 'mktemp --suffix -settings.xml']) >> 'anything-settings.xml'
settingsFile == 'settingsFileId'
}
def "[MavenSettingsService.groovy] settingsXmlConfigFileId not existing"() {
setup:
def mvnCfg = new MavenSettingsConfigBuilder()
.settingsXmlConfigFileId('anyId')
.build()
when:
def settingsFile = new MavenSettingsService(steps, mvnCfg).createSettingsFile()
then:
1 * getPipelineMock("sh")([returnStdout: true, script: 'mktemp --suffix -settings.xml']) >> 'anything-settings.xml'
settingsFile == ''
}
def "[MavenSettingsService.groovy] settingsXmlPath"() {
setup:
def mvnCfg = new MavenSettingsConfigBuilder()
.settingsXmlPath('FILE')
.build()
when:
def settingsFile = new MavenSettingsService(steps, mvnCfg).createSettingsFile()
then:
settingsFile == 'FILE'
}
def "[MavenSettingsService.groovy] settingsXmlPath and settingsXmlConfigFileId"() {
setup:
steps.env = ['MAVEN_SETTINGS_XML':'settingsFileId']
def mvnCfg = new MavenSettingsConfigBuilder()
.settingsXmlPath('FILE')
.settingsXmlConfigFileId('anyId')
.build()
when:
def settingsFile = new MavenSettingsService(steps, mvnCfg).createSettingsFile()
then:
1 * getPipelineMock("sh")([returnStdout: true, script: 'mktemp --suffix -settings.xml']) >> 'anything-settings.xml'
settingsFile == 'settingsFileId'
}
def "[MavenSettingsService.groovy] dependenciesRepositoriesInSettings"() {
setup:
def mvnCfg = new MavenSettingsConfigBuilder()
.settingsXmlPath('FILE')
.dependenciesRepositoriesInSettings([ID: 'URL'])
.build()
when:
def settingsFile = new MavenSettingsService(steps, mvnCfg).createSettingsFile()
then:
1 * getPipelineMock('sh')("""
sed -i 's|<repositories>|<repositories><!-- BEGIN added repository --><repository><id>ID</id><name>ID</name><url>URL</url><layout>default</layout><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository><!-- END added repository -->|g' FILE
sed -i 's|<pluginRepositories>|<pluginRepositories><!-- BEGIN added repository --><pluginRepository><id>ID</id><name>ID</name><url>URL</url><layout>default</layout><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></pluginRepository><!-- END added repository -->|g' FILE
""")
1 * getPipelineMock('sh')("sed -i 's|</mirrorOf>|,!ID</mirrorOf>|g' FILE")
settingsFile == 'FILE'
}
def "[MavenSettingsService.groovy] disabledMirrorRepoInSettings"() {
setup:
def mvnCfg = new MavenSettingsConfigBuilder()
.settingsXmlPath('FILE')
.disabledMirrorRepoInSettings(['ID'] as Set)
.build()
when:
def settingsFile = new MavenSettingsService(steps, mvnCfg).createSettingsFile()
then:
1 * getPipelineMock('sh')("sed -i 's|</mirrorOf>|,!ID</mirrorOf>|g' FILE")
settingsFile == 'FILE'
}
def "[MavenSettingsService.groovy] disableSnapshotsInSettings"() {
setup:
def mvnCfg = new MavenSettingsConfigBuilder()
.settingsXmlPath('FILE')
.disableSnapshotsInSettings(true)
.build()
when:
def settingsFile = new MavenSettingsService(steps, mvnCfg).createSettingsFile()
then:
1 * getPipelineMock('sh')("sed -i '/<repository>/,/<\\/repository>/ { /<snapshots>/,/<\\/snapshots>/ { s|<enabled>true</enabled>|<enabled>false</enabled>|; }}' FILE")
1 * getPipelineMock('sh')("sed -i '/<pluginRepository>/,/<\\/pluginRepository>/ { /<snapshots>/,/<\\/snapshots>/ { s|<enabled>true</enabled>|<enabled>false</enabled>|; }}' FILE")
settingsFile == 'FILE'
}
def "[MavenSettingsService.groovy] servers"() {
setup:
def mvnCfg = new MavenSettingsConfigBuilder()
.settingsXmlPath('FILE')
.servers([
[id: 'testId', username: 'USERNAME', password: 'PASSWORD'],
[id: 'testId2', username: 'USERNAME2', password: 'PASSWORD2'],
])
.build()
when:
def settingsFile = new MavenSettingsService(steps, mvnCfg).createSettingsFile()
then:
1 * getPipelineMock('sh')("sed -i 's|<servers>|<servers><server><id>testId</id><username>USERNAME</username><password>PASSWORD</password></server>|g' FILE")
1 * getPipelineMock('sh')("sed -i 's|<servers>|<servers><server><id>testId2</id><username>USERNAME2</username><password>PASSWORD2</password></server>|g' FILE")
settingsFile == 'FILE'
}
def "[MavenSettingsService.groovy] clone ok"() {
setup:
steps.env = ['MAVEN_SETTINGS_XML':'settingsFileId']
def props = new Properties()
props.put('key1', 'value1')
def mvnCfg = new MavenSettingsConfigBuilder()
.settingsXmlPath('SETTINGS_FILE')
.dependenciesRepositoriesInSettings([ID: 'URL'])
.disabledMirrorRepoInSettings(['DISABLED_ID'] as Set)
.disableSnapshotsInSettings(true)
.servers([
[id: 'testId', username: 'USERNAME', password: 'PASSWORD'],
])
.build()
when:
new MavenSettingsService(steps, mvnCfg).createSettingsFile()
def newCfg = MavenSettingsConfigBuilder.from(mvnCfg)
.settingsXmlConfigFileId('anyId')
.servers([
[id: 'testId2', username: 'USERNAME2', password: 'PASSWORD2'],
])
.build()
def newSettingsFile = new MavenSettingsService(steps, newCfg).createSettingsFile()
def settingsFile = new MavenSettingsService(steps, mvnCfg).createSettingsFile()
then:
1 * getPipelineMock("sh")([returnStdout: true, script: 'mktemp --suffix -settings.xml']) >> 'anything-settings.xml'
2 * getPipelineMock('sh')("""
sed -i 's|<repositories>|<repositories><!-- BEGIN added repository --><repository><id>ID</id><name>ID</name><url>URL</url><layout>default</layout><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository><!-- END added repository -->|g' SETTINGS_FILE
sed -i 's|<pluginRepositories>|<pluginRepositories><!-- BEGIN added repository --><pluginRepository><id>ID</id><name>ID</name><url>URL</url><layout>default</layout><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></pluginRepository><!-- END added repository -->|g' SETTINGS_FILE
""")
2 * getPipelineMock('sh')("sed -i 's|</mirrorOf>|,!ID</mirrorOf>|g' SETTINGS_FILE")
2 * getPipelineMock('sh')("sed -i 's|</mirrorOf>|,!DISABLED_ID</mirrorOf>|g' SETTINGS_FILE")
2 * getPipelineMock('sh')("sed -i '/<repository>/,/<\\/repository>/ { /<snapshots>/,/<\\/snapshots>/ { s|<enabled>true</enabled>|<enabled>false</enabled>|; }}' SETTINGS_FILE")
2 * getPipelineMock('sh')("sed -i '/<pluginRepository>/,/<\\/pluginRepository>/ { /<snapshots>/,/<\\/snapshots>/ { s|<enabled>true</enabled>|<enabled>false</enabled>|; }}' SETTINGS_FILE")
2 * getPipelineMock('sh')("sed -i 's|<servers>|<servers><server><id>testId</id><username>USERNAME</username><password>PASSWORD</password></server>|g' SETTINGS_FILE")
1 * getPipelineMock('sh')("""
sed -i 's|<repositories>|<repositories><!-- BEGIN added repository --><repository><id>ID</id><name>ID</name><url>URL</url><layout>default</layout><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository><!-- END added repository -->|g' settingsFileId
sed -i 's|<pluginRepositories>|<pluginRepositories><!-- BEGIN added repository --><pluginRepository><id>ID</id><name>ID</name><url>URL</url><layout>default</layout><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></pluginRepository><!-- END added repository -->|g' settingsFileId
""")
1 * getPipelineMock('sh')("sed -i 's|</mirrorOf>|,!ID</mirrorOf>|g' settingsFileId")
1 * getPipelineMock('sh')("sed -i 's|</mirrorOf>|,!DISABLED_ID</mirrorOf>|g' settingsFileId")
1 * getPipelineMock('sh')("sed -i '/<repository>/,/<\\/repository>/ { /<snapshots>/,/<\\/snapshots>/ { s|<enabled>true</enabled>|<enabled>false</enabled>|; }}' settingsFileId")
1 * getPipelineMock('sh')("sed -i '/<pluginRepository>/,/<\\/pluginRepository>/ { /<snapshots>/,/<\\/snapshots>/ { s|<enabled>true</enabled>|<enabled>false</enabled>|; }}' settingsFileId")
1 * getPipelineMock('sh')("sed -i 's|<servers>|<servers><server><id>testId</id><username>USERNAME</username><password>PASSWORD</password></server>|g' settingsFileId")
1 * getPipelineMock('sh')("sed -i 's|<servers>|<servers><server><id>testId2</id><username>USERNAME2</username><password>PASSWORD2</password></server>|g' settingsFileId")
settingsFile == 'SETTINGS_FILE'
newSettingsFile == 'settingsFileId'
}
}