1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-12 10:55:20 +02:00
sap-jenkins-library/test/groovy/DownloadCacheUtilsTest.groovy
2020-06-11 21:59:55 +02:00

195 lines
6.4 KiB
Groovy

import com.sap.piper.BuildTool
import com.sap.piper.DownloadCacheUtils
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.rules.RuleChain
import util.BasePiperTest
import util.JenkinsFileExistsRule
import util.JenkinsWriteFileRule
import util.Rules
import static org.junit.Assert.*
class DownloadCacheUtilsTest extends BasePiperTest {
private JenkinsFileExistsRule fileExistsRule = new JenkinsFileExistsRule(this, [])
@Rule
public RuleChain ruleChain = Rules
.getCommonRules(this)
.around(fileExistsRule)
.around(new JenkinsWriteFileRule(this))
@Before
void init() {
DownloadCacheUtils.metaClass.static.networkName = {return }
DownloadCacheUtils.metaClass.static.hostname = { return }
helper.registerAllowedMethod("libraryResource", [String.class], { path ->
File resource = new File(new File('resources'), path)
if (resource.exists()) {
return resource.getText()
}
return ''
})
helper.registerAllowedMethod('node', [String.class, Closure.class]) { s, body ->
body()
}
}
@After
void after(){
DownloadCacheUtils.metaClass.static.networkName = {return }
DownloadCacheUtils.metaClass.static.hostname = { return }
}
@Test
void 'isEnabled should return true if dl cache is enabled'() {
DownloadCacheUtils.metaClass.static.networkName = {
return 'cx-network'
}
DownloadCacheUtils.metaClass.static.hostname = {
return 'cx-downloadcache'
}
boolean actual = DownloadCacheUtils.isEnabled(nullScript)
assertTrue(actual)
}
@Test
void 'getDockerOptions should return docker network if configured'() {
DownloadCacheUtils.metaClass.static.networkName = {
return 'cx-network'
}
String expected = '--network=cx-network'
String actual = DownloadCacheUtils.getDockerOptions(nullScript)
assertEquals(expected, actual)
}
@Test
void 'getGlobalMavenSettingsForDownloadCache should write file'() {
DownloadCacheUtils.metaClass.static.hostname = {
return 'cx-downloadcache'
}
boolean writeFileExecuted = false
helper.registerAllowedMethod('writeFile', [Map.class]) { Map m ->
writeFileExecuted = true
}
String expected = '.pipeline/global_settings.xml'
String actual = DownloadCacheUtils.getGlobalMavenSettingsForDownloadCache(nullScript)
assertEquals(expected, actual)
assertTrue(writeFileExecuted)
}
@Test
void 'getGlobalMavenSettingsForDownloadCache should return filePath if file already exists'() {
fileExistsRule.registerExistingFile('.pipeline/global_settings.xml')
DownloadCacheUtils.metaClass.static.hostname = {
return 'cx-downloadcache'
}
boolean writeFileExecuted = false
helper.registerAllowedMethod('writeFile', [Map.class]) { Map m ->
writeFileExecuted = true
}
String expected = '.pipeline/global_settings.xml'
String actual = DownloadCacheUtils.getGlobalMavenSettingsForDownloadCache(nullScript)
assertFalse(writeFileExecuted)
assertEquals(expected, actual)
}
@Test
void 'getGlobalMavenSettingsForDownloadCache should return empty string if dl cache not active'() {
String expected = ''
String actual = DownloadCacheUtils.getGlobalMavenSettingsForDownloadCache(nullScript)
assertEquals(expected, actual)
}
@Test
void 'injectDownloadCacheInParameters should not change the parameters if dl cache not active'() {
Map newParameters = DownloadCacheUtils.injectDownloadCacheInParameters(nullScript, [:], BuildTool.MAVEN)
assertTrue(newParameters.isEmpty())
}
@Test
void 'injectDownloadCacheInParameters should set docker options and global settings for maven'() {
DownloadCacheUtils.metaClass.static.hostname = {
return 'cx-downloadcache'
}
DownloadCacheUtils.metaClass.static.networkName = {
return 'cx-network'
}
Map expected = [
dockerOptions: ['--network=cx-network'],
globalSettingsFile: '.pipeline/global_settings.xml'
]
Map actual = DownloadCacheUtils.injectDownloadCacheInParameters(nullScript, [:], BuildTool.MAVEN)
assertEquals(expected, actual)
}
@Test
void 'injectDownloadCacheInParameters should set docker options, global settings and npm default registry for mta'() {
DownloadCacheUtils.metaClass.static.hostname = {
return 'cx-downloadcache'
}
DownloadCacheUtils.metaClass.static.networkName = {
return 'cx-network'
}
Map expected = [
dockerOptions: ['--network=cx-network'],
globalSettingsFile: '.pipeline/global_settings.xml',
defaultNpmRegistry: 'http://cx-downloadcache:8081/repository/npm-proxy/'
]
Map actual = DownloadCacheUtils.injectDownloadCacheInParameters(nullScript, [:], BuildTool.MTA)
assertEquals(expected, actual)
}
@Test
void 'injectDownloadCacheInParameters should set docker options and default npm config for npm'() {
DownloadCacheUtils.metaClass.static.hostname = {
return 'cx-downloadcache'
}
DownloadCacheUtils.metaClass.static.networkName = {
return 'cx-network'
}
Map expected = [
dockerOptions: ['--network=cx-network'],
defaultNpmRegistry: 'http://cx-downloadcache:8081/repository/npm-proxy/'
]
Map actual = DownloadCacheUtils.injectDownloadCacheInParameters(nullScript, [:], BuildTool.NPM)
assertEquals(expected, actual)
}
@Test
void 'injectDownloadCacheInParameters should append docker options'() {
DownloadCacheUtils.metaClass.static.hostname = {
return 'cx-downloadcache'
}
DownloadCacheUtils.metaClass.static.networkName = {
return 'cx-network'
}
List expectedDockerOptions = ['--test', '--network=cx-network']
Map actual = DownloadCacheUtils.injectDownloadCacheInParameters(nullScript, [dockerOptions: '--test'], BuildTool.MAVEN)
assertEquals(expectedDockerOptions, actual.dockerOptions)
}
}