import groovy.mock.interceptor.MockFor
|
|
import groovy.util.GroovyTestCase
|
|
|
|
import org.wikimedia.integration.Blubber
|
|
|
|
class BlubberTestCase extends GroovyTestCase {
|
|
private class WorkflowScript {} // Mock for Jenkins Pipeline workflow context
|
|
|
|
def blubberConfig = ".pipeline/blubber.yaml"
|
|
def blubberoidURL = "https://an.example/blubberoid/v1/"
|
|
|
|
void testGenerateDockerfile() {
|
|
def mock = new MockFor(WorkflowScript)
|
|
def config = "version: v3\n" +
|
|
"base: foo"
|
|
|
|
mock.demand.readFile { args ->
|
|
assert args.file == blubberConfig
|
|
|
|
config
|
|
}
|
|
|
|
mock.demand.httpRequest { args ->
|
|
assert args.httpMode == "POST"
|
|
assert args.customHeaders == [[name: "content-type", value: "application/yaml"]]
|
|
assert args.requestBody == config
|
|
assert args.consoleLogResponseBody == true
|
|
assert args.validResponseCodes == "200"
|
|
|
|
[content: "BASE foo\n"]
|
|
}
|
|
|
|
mock.use {
|
|
def blubber = new Blubber(new WorkflowScript(), blubberConfig, blubberoidURL)
|
|
def dockerfile = blubber.generateDockerfile("foo")
|
|
|
|
assert dockerfile == "BASE foo\n"
|
|
}
|
|
}
|
|
|
|
void testGetConfigMediaType_yaml() {
|
|
def blubber = new Blubber(new WorkflowScript(), blubberConfig, blubberoidURL)
|
|
|
|
assert blubber.getConfigMediaType() == "application/yaml"
|
|
}
|
|
|
|
void testGetConfigMediaType_yml() {
|
|
def blubber = new Blubber(new WorkflowScript(), blubberConfig, blubberoidURL)
|
|
|
|
assert blubber.getConfigMediaType() == "application/yaml"
|
|
}
|
|
|
|
void testGetConfigMediaType_json() {
|
|
def blubber = new Blubber(new WorkflowScript(), ".pipeline/blubber.json", blubberoidURL)
|
|
|
|
assert blubber.getConfigMediaType() == "application/json"
|
|
}
|
|
|
|
void testGetRequestURL() {
|
|
def blubber = new Blubber(new WorkflowScript(), blubberConfig, blubberoidURL)
|
|
|
|
assert blubber.getRequestURL("foo bar") == "https://an.example/blubberoid/v1/foo+bar"
|
|
}
|
|
}
|