Search in sources :

Example 41 with Build

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");
}
Also used : Build(org.jenkinsci.test.acceptance.po.Build) JiraGlobalConfig(org.jenkinsci.test.acceptance.plugins.jira.JiraGlobalConfig) RemoteComment(hudson.plugins.jira.soap.RemoteComment) JiraContainer(org.jenkinsci.test.acceptance.docker.fixtures.JiraContainer) FreeStyleJob(org.jenkinsci.test.acceptance.po.FreeStyleJob) JiraUpdater(org.jenkinsci.test.acceptance.plugins.jira.JiraUpdater) WithCredentials(org.jenkinsci.test.acceptance.junit.WithCredentials) AbstractJUnitTest(org.jenkinsci.test.acceptance.junit.AbstractJUnitTest) Test(org.junit.Test) DockerTest(org.jenkinsci.test.acceptance.junit.DockerTest)

Example 42 with Build

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"));
}
Also used : PluginManager(org.jenkinsci.test.acceptance.po.PluginManager) PluginSpec(org.jenkinsci.test.acceptance.update_center.PluginSpec) JobDslBuildStep(org.jenkinsci.test.acceptance.plugins.job_dsl.JobDslBuildStep) Build(org.jenkinsci.test.acceptance.po.Build) FreeStyleJob(org.jenkinsci.test.acceptance.po.FreeStyleJob) AbstractJUnitTest(org.jenkinsci.test.acceptance.junit.AbstractJUnitTest) Test(org.junit.Test)

Example 43 with Build

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();
}
Also used : JobDslBuildStep(org.jenkinsci.test.acceptance.plugins.job_dsl.JobDslBuildStep) Build(org.jenkinsci.test.acceptance.po.Build) FreeStyleJob(org.jenkinsci.test.acceptance.po.FreeStyleJob) GlobalSecurityConfig(org.jenkinsci.test.acceptance.po.GlobalSecurityConfig) AbstractJUnitTest(org.jenkinsci.test.acceptance.junit.AbstractJUnitTest) Test(org.junit.Test) WithPlugins(org.jenkinsci.test.acceptance.junit.WithPlugins)

Example 44 with Build

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");
}
Also used : Pattern(java.util.regex.Pattern) JobDslBuildStep(org.jenkinsci.test.acceptance.plugins.job_dsl.JobDslBuildStep) Build(org.jenkinsci.test.acceptance.po.Build) FreeStyleJob(org.jenkinsci.test.acceptance.po.FreeStyleJob) AbstractJUnitTest(org.jenkinsci.test.acceptance.junit.AbstractJUnitTest) Test(org.junit.Test)

Example 45 with Build

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']")));
}
Also used : Pattern(java.util.regex.Pattern) Build(org.jenkinsci.test.acceptance.po.Build) ConfigFileProvider(org.jenkinsci.test.acceptance.plugins.config_file_provider.ConfigFileProvider) FreeStyleJob(org.jenkinsci.test.acceptance.po.FreeStyleJob) AbstractJUnitTest(org.jenkinsci.test.acceptance.junit.AbstractJUnitTest) Test(org.junit.Test) WithPlugins(org.jenkinsci.test.acceptance.junit.WithPlugins)

Aggregations

Build (org.jenkinsci.test.acceptance.po.Build)175 Test (org.junit.Test)157 FreeStyleJob (org.jenkinsci.test.acceptance.po.FreeStyleJob)113 AbstractJUnitTest (org.jenkinsci.test.acceptance.junit.AbstractJUnitTest)101 WithPlugins (org.jenkinsci.test.acceptance.junit.WithPlugins)40 DockerTest (org.jenkinsci.test.acceptance.junit.DockerTest)22 WorkflowJob (org.jenkinsci.test.acceptance.po.WorkflowJob)20 Issue (org.jvnet.hudson.test.Issue)18 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)14 GitRepo (org.jenkinsci.test.acceptance.plugins.git.GitRepo)13 JobDslBuildStep (org.jenkinsci.test.acceptance.plugins.job_dsl.JobDslBuildStep)13 Pattern (java.util.regex.Pattern)11 Job (org.jenkinsci.test.acceptance.po.Job)11 SmokeTest (org.jenkinsci.test.acceptance.junit.SmokeTest)9 WithCredentials (org.jenkinsci.test.acceptance.junit.WithCredentials)9 GitScm (org.jenkinsci.test.acceptance.plugins.git.GitScm)9 Matchers.containsString (org.hamcrest.Matchers.containsString)8 WarningsAction (org.jenkinsci.test.acceptance.plugins.warnings.WarningsAction)8 MavenModuleSet (org.jenkinsci.test.acceptance.plugins.maven.MavenModuleSet)7 IOException (java.io.IOException)6