package hudson.plugins.promoted_builds.integrations.jobdsl;
import com.google.common.io.Files;
import hudson.model.FreeStyleBuild;
import hudson.model.FreeStyleProject;
import hudson.model.Result;
import hudson.model.TopLevelItem;
import hudson.model.queue.QueueTaskFuture;
import java.io.File;
import java.nio.charset.Charset;
import javaposse.jobdsl.plugin.RemovedJobAction;
import javaposse.jobdsl.plugin.ExecuteDslScripts;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import org.jvnet.hudson.test.HudsonTestCase;
public class PromotionsDslContextExtensionTest extends HudsonTestCase {
@Test
public void testShouldGenerateTheDefindedJob() throws Exception {
// Given
String dsl = FileUtils.readFileToString(new File("src/test/resources/example-dsl.groovy"));
FreeStyleProject seedJob = createFreeStyleProject();
seedJob.getBuildersList().add(
new ExecuteDslScripts(new ExecuteDslScripts.ScriptLocation(Boolean.TRUE.toString(), null, dsl), false, RemovedJobAction.DELETE));
// When
QueueTaskFuture<FreeStyleBuild> scheduleBuild2 = seedJob.scheduleBuild2(0);
// Then
assertBuildStatusSuccess(scheduleBuild2);
}
@Test
public void testShouldGenerateTheDefindedComplexJob() throws Exception {
// Given
String dsl = FileUtils.readFileToString(new File("src/test/resources/complex-example-dsl.groovy"));
FreeStyleProject seedJob = createFreeStyleProject();
seedJob.getBuildersList().add(
new ExecuteDslScripts(new ExecuteDslScripts.ScriptLocation(Boolean.TRUE.toString(), null, dsl), false, RemovedJobAction.DELETE));
// When
QueueTaskFuture<FreeStyleBuild> scheduleBuild2 = seedJob.scheduleBuild2(0);
// Then
assertBuildStatusSuccess(scheduleBuild2);
}
@Test
public void testShouldGenerateTheCopyArtifactsJob() throws Exception {
// Given
String dsl = FileUtils.readFileToString(new File("src/test/resources/copyartifacts-example-dsl.groovy"));
FreeStyleProject seedJob = createFreeStyleProject();
seedJob.getBuildersList().add(
new ExecuteDslScripts(new ExecuteDslScripts.ScriptLocation(Boolean.TRUE.toString(), null, dsl), false, RemovedJobAction.DELETE));
// When
QueueTaskFuture<FreeStyleBuild> scheduleBuild2 = seedJob.scheduleBuild2(0);
// Then (unstable b/c we aren't including the CopyArtifacts dependency)
assertBuildStatus(Result.UNSTABLE, scheduleBuild2.get());
TopLevelItem item = jenkins.getItem("copy-artifacts-test");
File config = new File(item.getRootDir(), "promotions/Development/config.xml");
String content = Files.toString(config, Charset.forName("UTF-8"));
assert content.contains("<selector class=\"hudson.plugins.copyartifact.SpecificBuildSelector\">");
}
}