/** * Performs a configuration round-trip testing for a publisher. */ public <P extends Publisher> P configRoundtrip(P before) throws Exception { FreeStyleProject p = createFreeStyleProject(); p.getPublishersList().add(before); configRoundtrip((Item) p); return (P)p.getPublishersList().get(before.getClass()); }
/** * Performs a configuration round-trip testing for a builder. */ public <B extends Builder> B configRoundtrip(B before) throws Exception { FreeStyleProject p = createFreeStyleProject(); p.getBuildersList().add(before); configRoundtrip((Item)p); return (B)p.getBuildersList().get(before.getClass()); }
@Before public void before() throws Exception { r.configRoundtrip(); cloud = r.jenkins.clouds.get(KubernetesCloud.class); }
@Test public void configRoundtrip() throws Exception { Folder f = createFolder(); r.configRoundtrip(f); }
/** * Creates a {@link FreeStyleProject} with a gerrit-trigger configured for a specific server name. * * @param rule the instance of JenkinsRule. * @param projectName the name of the new job. * @param serverName of your server * @return the project. * * @throws Exception if so. * @deprecated use {@link TestUtils.JobBuilder} instead. */ @Deprecated public static FreeStyleProject createGerritTriggeredJob(JenkinsRule rule, String projectName, String serverName) throws Exception { FreeStyleProject p = rule.createFreeStyleProject(projectName); List<GerritProject> projects = new LinkedList<GerritProject>(); projects.add(new GerritProject(CompareType.ANT, "**", Collections.singletonList(new Branch(CompareType.ANT, "**")), null, null, null, false)); p.addTrigger(new GerritTrigger(projects, null, null, null, null, null, null, null, null, null, null, null, false, false, true, false, false, null, null, null, null, null, null, null, null, serverName, null, null, false, null, null)); return rule.configRoundtrip(p); }
@Test public void configRoundTrip() throws Exception { WorkflowJob job = jenkins.jenkins.createProject(WorkflowJob.class, "p"); job.setDefinition(new CpsFlowDefinition("echo 'whatever'", false)); jenkins.configRoundtrip(job); }
@Test public void triggersRoundtrip() throws Exception { SampleComputedFolder s = r.jenkins.createProject(SampleComputedFolder.class, "s"); s.addTrigger(new PeriodicFolderTrigger("30m")); SampleComputedFolder s2 = r.configRoundtrip(s); Trigger<?> trigger = s2.getTriggers().get(r.jenkins.getDescriptorByType(PeriodicFolderTrigger.DescriptorImpl.class)); assertThat(trigger, notNullValue()); assertThat(trigger, instanceOf(PeriodicFolderTrigger.class)); assertThat(((PeriodicFolderTrigger)trigger).getInterval(), is("30m")); }
/** * Tests that the re-loaded trigger is still there when a new triggered project is added and reconfigured. * * @throws Exception if so. */ @Test @LocalData public void testReconfigureNewProject() throws Exception { FreeStyleProject p = createGerritTriggeredJob(j, "testing1"); assertNrOfEventListeners(1); j.configRoundtrip((Item)p); assertNrOfEventListeners(1); }
/** * Tests resaving a project. * * @throws Exception if so. */ @LocalData @Test public void testNewProjectCreationWithReSave() throws Exception { FreeStyleProject p = createGerritTriggeredJob(j, "testJob2"); j.configRoundtrip((Item)p); assertNbrOfGerritEventListeners( PluginImpl.getInstance().getServer(PluginImpl.DEFAULT_SERVER_NAME)); }
@Test public void configRoundTrip() throws Exception { JUnitResultArchiver a = new JUnitResultArchiver("TEST-*.xml"); a.setKeepLongStdio(true); a.setTestDataPublishers(Collections.<TestDataPublisher>singletonList(new MockTestDataPublisher("testing"))); a.setHealthScaleFactor(0.77); a = j.configRoundtrip(a); assertEquals("TEST-*.xml", a.getTestResults()); assertTrue(a.isKeepLongStdio()); List<? extends TestDataPublisher> testDataPublishers = a.getTestDataPublishers(); assertEquals(1, testDataPublishers.size()); assertEquals(MockTestDataPublisher.class, testDataPublishers.get(0).getClass()); assertEquals("testing", ((MockTestDataPublisher) testDataPublishers.get(0)).getName()); assertEquals(0.77, a.getHealthScaleFactor(), 0.01); }
/** * Akin to {@link JenkinsRule#configRoundtrip(Builder)}. * @param <S> step type * @param before the incoming step * @return the result after displaying in a form and resaving */ @SuppressWarnings("unchecked") public <S extends Step> S configRoundTrip(S before) throws Exception { FreeStyleProject p = rule.createFreeStyleProject(); p.getBuildersList().add(new StepBuilder(before)); // workaround for eclipse compiler Ambiguous method call p = (FreeStyleProject) rule.configRoundtrip((Item)p); StepBuilder b = p.getBuildersList().get(StepBuilder.class); assertNotNull(b); Step after = b.s; assertNotNull(after); assertEquals(before.getClass(), after.getClass()); return (S) after; }
@Issue("JENKINS-7944") @Test public void configRoundtrip2() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); SubversionSCM scm = new SubversionSCM( Arrays.asList( new ModuleLocation("https://svn.jenkins-ci.org/trunk/hudson/test-projects/testSubversionExclusion", "")), new UpdateUpdater(),null,null,null,null,null,null); p.setScm(scm); r.configRoundtrip((Item)p); verify(scm,(SubversionSCM)p.getScm()); }
@Bug(20186) @Test public void configureBrowser() throws Exception { FreeStyleProject p = j.createFreeStyleProject(); p.setScm(new MercurialSCM(null, "https://host/repo", null, null, null, new HgWeb("https://host/repo"), false, null)); j.configRoundtrip(p); assertEquals("https://host/repo/", ((MercurialSCM) p.getScm()).getBrowser().getUrl().toString()); }
/** * Tests a job called AllOff that has most advanced boolean settings set to false. * Specifically interested in {@link GerritTrigger#getNameAndEmailParameterMode()} * and {@link GerritTrigger#getCommitMessageParameterMode()}. * * @throws Exception if so */ @Test @LocalData public void testAllOff() throws Exception { FreeStyleProject job = j.jenkins.getItemByFullName("AllOff", FreeStyleProject.class); GerritTrigger trigger = GerritTrigger.getTrigger(job); verifyAllOff(trigger); job = j.configRoundtrip(job); trigger = GerritTrigger.getTrigger(job); verifyAllOff(trigger); }
/** * Tests a job called AllOn that has a couple of atypical advanced settings set to true. * Specifically interested in {@link GerritTrigger#getNameAndEmailParameterMode()} * and {@link GerritTrigger#getCommitMessageParameterMode()}. * * @throws Exception if so */ @Test @LocalData public void testAllOn() throws Exception { FreeStyleProject job = j.jenkins.getItemByFullName("AllOn", FreeStyleProject.class); GerritTrigger trigger = GerritTrigger.getTrigger(job); verifyAllOn(trigger); job = j.configRoundtrip(job); trigger = GerritTrigger.getTrigger(job); verifyAllOn(trigger); }
/** * Tests a {@link JenkinsRule#configRoundtrip(hudson.model.Job)} on the workflow job. * * @throws Exception if so. */ @Test public void testConfigRoundTrip() throws Exception { PatchsetCreated event = Setup.createPatchsetCreated(PluginImpl.DEFAULT_SERVER_NAME); WorkflowJob job = createWorkflowJob(event); jenkinsRule.configRoundtrip(job); job = (WorkflowJob)jenkinsRule.jenkins.getItem("WFJob"); GerritTrigger trigger = GerritTrigger.getTrigger(job); assertFalse(trigger.isSilentMode()); assertEquals(1, trigger.getGerritBuildSuccessfulCodeReviewValue().intValue()); assertEquals(1, trigger.getGerritBuildSuccessfulVerifiedValue().intValue()); assertEquals(0, trigger.getGerritBuildFailedCodeReviewValue().intValue()); assertThat(trigger.getGerritProjects(), hasItem( allOf( isA(GerritProject.class), hasProperty("compareType", is(CompareType.PLAIN)), hasProperty("pattern", equalTo(event.getChange().getProject())) ) )); }
@Test public void configRoundtrip() throws Exception { sampleRepo.init(); WorkflowJob p = r.jenkins.createProject(WorkflowJob.class, "p"); CpsScmFlowDefinition def = new CpsScmFlowDefinition(new GitStep(sampleRepo.toString()).createSCM(), "Jenkinsfile"); def.setLightweight(true); p.setDefinition(def); r.configRoundtrip(p); def = (CpsScmFlowDefinition) p.getDefinition(); assertEquals("Jenkinsfile", def.getScriptPath()); assertTrue(def.isLightweight()); assertEquals(GitSCM.class, def.getScm().getClass()); }
/** * Tests that there are no duplicated listeners when a project is renamed. * * @throws Exception if so. */ @Test @LocalData public void testProjectRename() throws Exception { FreeStyleProject project = DuplicatesUtil.createGerritTriggeredJob(j, "projectX"); serverMock.waitForCommand(GERRIT_STREAM_EVENTS, 2000); gerritServer.triggerEvent(Setup.createPatchsetCreated()); TestUtils.waitForBuilds(project, 1, 60000); project.renameTo("anotherName"); project = j.configRoundtrip(project); gerritServer.triggerEvent(Setup.createPatchsetCreated()); TestUtils.waitForBuilds(project, 2, 60000); } }
@Test public void configRoundtrip() throws Exception { WorkflowMultiBranchProject mp = r.jenkins.createProject(WorkflowMultiBranchProject.class, "p"); BranchSource bs = new BranchSource(new GitSCMSource(null, sampleRepo.toString(), "", "*", "", false)); mp.getSourcesList().add(bs); bs.setStrategy(new DefaultBranchPropertyStrategy(new BranchProperty[]{new DurabilityHintBranchProperty(FlowDurabilityHint.SURVIVABLE_NONATOMIC)})); r.configRoundtrip(mp); DefaultBranchPropertyStrategy strat = (DefaultBranchPropertyStrategy)(mp.getBranchPropertyStrategy(mp.getSCMSources().get(0))); DurabilityHintBranchProperty prop = null; for (BranchProperty bp : strat.getProps()) { if (bp instanceof DurabilityHintBranchProperty) { prop = (DurabilityHintBranchProperty)bp; break; } } Assert.assertNotNull(prop); Assert.assertEquals(FlowDurabilityHint.SURVIVABLE_NONATOMIC, prop.getHint()); }
@BeforeClass public static void setup() throws Exception { CredentialsStore store = CredentialsProvider.lookupStores(j.jenkins).iterator().next(); String usernamePasswordCredentialsId = "FOOcredentials"; UsernamePasswordCredentialsImpl usernamePassword = new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, usernamePasswordCredentialsId, "sample", usernamePasswordUsername, usernamePasswordPassword); store.addCredentials(Domain.global(), usernamePassword); StringCredentialsImpl mixedEnvCred1 = new StringCredentialsImpl(CredentialsScope.GLOBAL, mixedEnvCred1Id, "test", Secret.fromString(mixedEnvCred1Secret)); store.addCredentials(Domain.global(), mixedEnvCred1); UsernamePasswordCredentialsImpl mixedEnvCred2 = new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, mixedEnvCred2Id, "sample", mixedEnvCred2U, mixedEnvCred2P); store.addCredentials(Domain.global(), mixedEnvCred2); StringCredentialsImpl mixedEnvCred3 = new StringCredentialsImpl(CredentialsScope.GLOBAL, mixedEnvCred3Id, "test", Secret.fromString(mixedEnvCred3Secret)); store.addCredentials(Domain.global(), mixedEnvCred3); FileCredentialsImpl fileCred = new FileCredentialsImpl(CredentialsScope.GLOBAL, fileCredId, "test", fileCredName, SecretBytes.fromBytes(fileCredContent.getBytes())); store.addCredentials(Domain.global(), fileCred); FileCredentialsImpl otherFileCred = new FileCredentialsImpl(CredentialsScope.GLOBAL, otherFileCredId, "test", otherFileCredName, SecretBytes.fromBytes(otherFileCredContent.getBytes())); store.addCredentials(Domain.global(), otherFileCred); folder = j.jenkins.createProject(Folder.class, "testFolder"); folder.addProperty(new FolderCredentialsProvider.FolderCredentialsProperty(new DomainCredentials[0])); j.configRoundtrip(folder); CredentialsStore folderStore = folder.getProperties().get(FolderCredentialsProvider.FolderCredentialsProperty.class).getStore(); StringCredentialsImpl sc = new StringCredentialsImpl(CredentialsScope.GLOBAL, mixedEnvCred1Id, "test", Secret.fromString(mixedEnvInFolderCred1Secret)); folderStore.addCredentials(Domain.global(), sc); UsernamePasswordCredentialsImpl c = new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, mixedEnvCred2Id, "sample", mixedEnvInFoldercred2U, mixedEnvInFolderCred2P); folderStore.addCredentials(Domain.global(), c); SSHUserPrivateKey k = new BasicSSHUserPrivateKey(CredentialsScope.GLOBAL, "sshCred1", "bobby", new BasicSSHUserPrivateKey.DirectEntryPrivateKeySource("abc123"), null, "sample"); store.addCredentials(Domain.global(), k); }