use of org.jenkinsci.test.acceptance.po.Build in project acceptance-test-harness by jenkinsci.
the class JiraPluginTest method jira_ticket_gets_updated_with_a_build_link.
@Test
@WithCredentials(credentialType = WithCredentials.USERNAME_PASSWORD, values = { USERNAME, PASSWORD }, id = CREDENTIALS_ID)
public void jira_ticket_gets_updated_with_a_build_link() throws Exception {
JiraContainer jira = docker.get();
jira.waitForReady(this);
jira.createProject("ABC");
jira.createIssue("ABC");
jira.createIssue("ABC");
jenkins.configure();
{
new JiraGlobalConfig(jenkins).addSite(jira.getURL(), CREDENTIALS_ID);
}
jenkins.save();
FreeStyleJob job = jenkins.jobs.create();
job.configure();
{
job.useScm(GitScm.class).url(git.dir.toString());
job.addPublisher(JiraUpdater.class);
}
job.save();
git.changeAndCommitFoo("initial commit");
job.startBuild().shouldSucceed();
git.changeAndCommitFoo("[ABC-1] fixed");
git.changeAndCommitFoo("[ABC-2] fixed");
Build b = job.startBuild().shouldSucceed();
b.open();
find(by.link("ABC-1"));
find(by.link("ABC-2"));
String buildUrl = job.build(b.getNumber()).url.toString();
for (RemoteComment c : jira.getComments("ABC-1")) {
if (c.getBody().contains(buildUrl)) {
return;
}
}
fail("Comment back to Jenkins not found");
}
use of org.jenkinsci.test.acceptance.po.Build in project acceptance-test-harness by jenkinsci.
the class JobDslPluginTest method should_fail_on_missing_plugin.
/**
* Verifies whether the build will be marked as failed or unstable if a plugin must
* be installed to support all features used in the DSL script.
*/
@Test
public void should_fail_on_missing_plugin() {
assumeTrue("This test requires a restartable Jenkins", jenkins.canRestart());
// check if plugin is installed. if true, disable plugin
PluginSpec pluginSpec = new PluginSpec("chucknorris");
PluginManager pm = jenkins.getPluginManager();
if (pm.isInstalled(pluginSpec)) {
pm.enablePlugin(pluginSpec.getName(), false);
jenkins.restart();
}
FreeStyleJob seedJob = createSeedJob();
JobDslBuildStep jobDsl = seedJob.addBuildStep(JobDslBuildStep.class);
jobDsl.setScript("job('New_Job') {\n" + " publishers {\n" + " chucknorris()\n" + " }\n" + "}");
seedJob.save();
Build build = seedJob.scheduleBuild().shouldBeUnstable();
assertThat(build.getConsole(), containsString("plugin 'chucknorris' needs to be installed"));
seedJob.configure(() -> jobDsl.setFailOnMissingPlugin(true));
build = seedJob.scheduleBuild().shouldFail();
assertThat(build.getConsole(), containsString("plugin 'chucknorris' needs to be installed"));
}
use of org.jenkinsci.test.acceptance.po.Build in project acceptance-test-harness by jenkinsci.
the class JobDslPluginTest method should_run_grooy_sandbox_as_particular_user.
/**
* Verifies that Groovy sandbox can only used if 'Access Control for Builds'
* is configured. The DSL job needs to run as a particular user.
*/
@Test
@WithPlugins({ "matrix-auth@2.3", "mock-security-realm", "authorize-project" })
public void should_run_grooy_sandbox_as_particular_user() {
GlobalSecurityConfig sc = setUpSecurity();
jenkins.login().doLogin(USER);
FreeStyleJob seedJob = createSeedJob();
JobDslBuildStep jobDsl = seedJob.addBuildStep(JobDslBuildStep.class);
jobDsl.setScript("job('New_Job')");
jobDsl.setUseSandbox(true);
seedJob.save();
// Build should fail because script runs in sandbox but no particular user is specified
// which should run the build
Build build = seedJob.scheduleBuild().shouldFail();
assertThat(build.getConsole(), containsString("You must configure the DSL job to run as a specific user in order to use the Groovy sandbox"));
runBuildAsUserWhoTriggered(sc);
jenkins.login().doLogin(USER);
// Build should succeed because now a particular user is specified
seedJob.scheduleBuild().shouldSucceed();
}
use of org.jenkinsci.test.acceptance.po.Build in project acceptance-test-harness by jenkinsci.
the class JobDslPluginTest method should_ignore_existing_jobs.
/**
* Verifies whether previously generated jobs will be ignored or updated.
* By default, all previous generated jobs will be updated.
* If existing jobs should be ignored, the plugin do not modify previous
* generated jobs.
*/
@Test
public void should_ignore_existing_jobs() {
FreeStyleJob seedJob = createSeedJob();
JobDslBuildStep jobDsl = seedJob.addBuildStep(JobDslBuildStep.class);
jobDsl.setScript("job('Existing_Job') {\n" + " description('Existing description');\n" + "}");
seedJob.save();
seedJob.scheduleBuild().shouldSucceed();
FreeStyleJob existingJob = getJob("Existing_Job");
seedJob.configure(() -> {
jobDsl.setScript("job('Existing_Job') {\n" + " description('This is a description');\n" + "}");
jobDsl.setIgnoreExisting(true);
});
Build build = seedJob.scheduleBuild().shouldSucceed();
Pattern expected = Pattern.compile("Existing items:(\\s*)GeneratedJob[{]name='Existing_Job'}");
assertThat(build.getConsole(), containsRegexp(expected));
checkDescription(existingJob, "Existing description");
seedJob.configure(() -> jobDsl.setIgnoreExisting(false));
Build build2 = seedJob.scheduleBuild().shouldSucceed();
assertThat(build2.getConsole(), containsRegexp(expected));
checkDescription(existingJob, "This is a description");
}
use of org.jenkinsci.test.acceptance.po.Build in project acceptance-test-harness by jenkinsci.
the class JobDslPluginTest method should_ignore_removed_config_files.
/**
* Verifies whether a previously generated config file will be ignored if it
* is not referenced anymore.
*/
@Test
@WithPlugins("config-file-provider")
public void should_ignore_removed_config_files() {
FreeStyleJob seedJob = executeRemovedConfigFilesAction(JobDslRemovedConfigFilesAction.IGNORE);
Build build = seedJob.scheduleBuild().shouldSucceed();
Pattern expected = Pattern.compile("Unreferenced config files:(\\s*)GeneratedConfigFile[{]name='Old_Config_File', id='123456789'}");
assertThat(build.getConsole(), containsRegexp(expected));
ConfigFileProvider configFileProvider = new ConfigFileProvider(jenkins);
configFileProvider.open();
assertThat(driver, hasElement(by.xpath("//a[@href='editConfig?id=123456789']")));
}
Aggregations