1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-14 11:03:09 +02:00
sap-jenkins-library/test/groovy/DockerExecuteTest.groovy

104 lines
3.0 KiB
Groovy

import org.junit.Before
import org.junit.Test
import static org.junit.Assert.assertEquals
import static org.junit.Assert.assertTrue
import static org.junit.Assert.assertFalse
class DockerExecuteTest extends PiperTestBase {
private DockerMock docker
String echos
int whichDockerReturnValue = 0
@Before
void setUp() {
super.setUp()
docker = new DockerMock()
binding.setVariable('docker', docker)
binding.setVariable('Jenkins', [instance: [pluginManager: [plugins: [new PluginMock()]]]])
echos = ''
helper.registerAllowedMethod("echo", [String.class], { String s -> echos += " $s" })
helper.registerAllowedMethod('sh', [Map.class], {return whichDockerReturnValue})
}
@Test
void testExecuteInsideDocker() throws Exception {
def script = loadScript("test/resources/pipelines/dockerExecuteTest/executeInsideDocker.groovy")
script.execute()
assertEquals('maven:3.5-jdk-8-alpine', docker.getImageName())
assertTrue(docker.isImagePulled())
assertEquals(' --env http_proxy --env https_proxy --env no_proxy --env HTTP_PROXY --env HTTPS_PROXY --env NO_PROXY', docker.getParameters())
assertTrue(echos.contains('Inside Docker'))
}
@Test
void testExecuteInsideDockerWithParameters() throws Exception {
def script = loadScript("test/resources/pipelines/dockerExecuteTest/executeInsideDockerWithParameters.groovy")
script.execute()
assertTrue(docker.getParameters().contains(' --env https_proxy '))
assertTrue(docker.getParameters().contains(' --env http_proxy=http://proxy:8000'))
assertTrue(docker.getParameters().contains(' -it'))
assertTrue(docker.getParameters().contains(' --volume my_vol:/my_vol'))
}
@Test
void testDockerNotInstalledResultsInLocalExecution() throws Exception {
whichDockerReturnValue = 1
def script = loadScript("test/resources/pipelines/dockerExecuteTest/executeInsideDockerWithParameters.groovy")
script.execute()
assertTrue(echos.contains('No docker environment found'))
assertTrue(echos.contains('Running on local environment'))
assertFalse(docker.isImagePulled())
}
private class DockerMock {
private String imageName
private boolean imagePulled = false
private String parameters
DockerMock image(String imageName) {
this.imageName = imageName
return this
}
void pull() {
imagePulled = true
}
void inside(String parameters, body) {
this.parameters = parameters
body()
}
String getImageName() {
return imageName
}
boolean isImagePulled() {
return imagePulled
}
String getParameters() {
return parameters
}
}
private class PluginMock {
def getShortName() {
return 'docker-workflow'
}
boolean isActive() {
return true
}
}
}