@Test public void testExpandValues() throws Exception { AddFixVersion addFixVersion = new AddFixVersion("Beta Release $FOO"); addFixVersion.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); EnvVars envVars = new EnvVars(); envVars.put("FOO", "BAR"); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(envVars); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101")); jiraCommits.add(new JiraCommit("SSD-101")); addFixVersion.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).addFixVersion(eq("SSD-101"), eq("Beta Release BAR")); }
/** * An exception updating a ticket should not impact other issues being updated */ @Test public void testResiliency() throws Exception { AddFixVersion addFixVersion = new AddFixVersion("Beta Release"); addFixVersion.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101")); jiraCommits.add(new JiraCommit("SSD-102")); doThrow(new RuntimeException("Issue is invalid")) .when(jiraClientSvc).addFixVersion("SSD-101", "Beta Release"); addFixVersion.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); // no exception - good! verify(jiraClientSvc, times(1)).addFixVersion("SSD-101", "Beta Release"); verify(jiraClientSvc, times(1)).addFixVersion("SSD-102", "Beta Release"); }
/** * An exception adding the first label add should not disrupt the next label */ @Test public void testResiliency() throws Exception { Transition transition = new Transition("Resolve"); transition.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); jiraCommits.add(new JiraCommit("SSD-102", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); doThrow(new RuntimeException("Issue is invalid")) .when(jiraClientSvc).changeWorkflowOfTicket("SSD-101", "Test Comment"); transition.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).changeWorkflowOfTicket(eq("SSD-101"), eq("Resolve")); verify(jiraClientSvc, times(1)).changeWorkflowOfTicket(eq("SSD-102"), eq("Resolve")); }
@Test public void testInvokeOperations() throws Exception { IssueStrategyExtension mockStrategy = mock(IssueStrategyExtension.class); JiraOperationExtension mockOperation = mock(JiraOperationExtension.class); Descriptor mockDescriptor = mock(Descriptor.class); when(mockDescriptor.getDisplayName()).thenReturn("Mock descriptor"); when(mockOperation.getDescriptor()).thenReturn(mockDescriptor); JiraExtPublisherStep publisher = new JiraExtPublisherStep(mockStrategy, Arrays.asList(mockOperation)); List<JiraCommit> commits = Arrays.asList(new JiraCommit("JENKINS-101", MockChangeLogUtil.mockChangeLogSetEntry("example ticket"))); when(mockStrategy.getJiraCommits(any(AbstractBuild.class), any(BuildListener.class))) .thenReturn(commits); assertTrue(publisher.perform(mock(AbstractBuild.class), mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset()))); verify(mockOperation).perform(eq(commits), any(AbstractBuild.class), any(Launcher.class), any(BuildListener.class)); }
@Test public void testAddLabel() throws Exception { AddLabel addLabel = new AddLabel("Test Label"); addLabel.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); addLabel.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).addLabelToTicket(eq("SSD-101"), eq("Test Label")); }
@Test public void testExpandValues() throws Exception { AddLabel addLabel = new AddLabel("Test Label $FOO"); addLabel.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); EnvVars envVars = new EnvVars(); envVars.put("FOO", "BAR"); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(envVars); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); addLabel.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).addLabelToTicket(eq("SSD-101"), eq("Test Label BAR")); }
/** * An exception adding the first label add should not disrupt the next label */ @Test public void testResiliency() throws Exception { AddLabel addLabel = new AddLabel("Test Label"); addLabel.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); jiraCommits.add(new JiraCommit("SSD-102", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); doThrow(new RuntimeException("Issue is invalid")) .when(jiraClientSvc).addLabelToTicket("SSD-101", "Test Label"); addLabel.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).addLabelToTicket(eq("SSD-101"), eq("Test Label")); verify(jiraClientSvc, times(1)).addLabelToTicket(eq("SSD-102"), eq("Test Label")); }
@Test public void testInvokeOperations() { IssueStrategyExtension mockStrategy = mock(IssueStrategyExtension.class); JiraOperationExtension mockOperation = mock(JiraOperationExtension.class); Descriptor mockDescriptor = mock(Descriptor.class); when(mockDescriptor.getDisplayName()).thenReturn("Mock descriptor"); when(mockOperation.getDescriptor()).thenReturn(mockDescriptor); JiraExtBuildStep builder = new JiraExtBuildStep(mockStrategy, Arrays.asList(mockOperation)); List<JiraCommit> commits = Arrays.asList(new JiraCommit("JENKINS-101", MockChangeLogUtil.mockChangeLogSetEntry("example ticket"))); when(mockStrategy.getJiraCommits(any(AbstractBuild.class), any(BuildListener.class))) .thenReturn(commits); assertTrue(builder.perform(mock(AbstractBuild.class), mock(Launcher.class), new StreamBuildListener(System.out))); verify(mockOperation).perform(eq(commits), any(AbstractBuild.class), any(Launcher.class), any(BuildListener.class)); }
@Test public void testFirstWordOfCommit() throws Exception { FirstWordOfCommitStrategy strategy = new FirstWordOfCommitStrategy(); ChangeLogSet mockChangeSet = MockChangeLogUtil.mockChangeLogSet( new MockChangeLogUtil.MockChangeLog("FOO-101 first", "dalvizu"), new MockChangeLogUtil.MockChangeLog("BAR-102 again", "jsmith"), new MockChangeLogUtil.MockChangeLog("No Valid Ticket", "build robot")); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getChangeSet()).thenReturn(mockChangeSet); List<JiraCommit> commits = strategy.getJiraCommits(mockBuild, new StreamBuildListener(System.out, Charset.defaultCharset())); assertEquals(commits.size(), 2); assertThat(commits, hasItem(Matchers.<JiraCommit>hasProperty("jiraTicket", equalTo("FOO-101")))); assertThat(commits, hasItem(Matchers.<JiraCommit>hasProperty("jiraTicket", equalTo("BAR-102")))); }
@Test public void testExpandValues() throws Exception { UpdateField updateField = new UpdateField("CustomField_123", "Completed $FOO"); updateField.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); EnvVars envVars = new EnvVars(); envVars.put("FOO", "BAR"); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(envVars); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); updateField.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).updateStringField(eq("SSD-101"), eq("CustomField_123"), eq("Completed BAR")); }
/** * An exception adding the first label add should not disrupt the next label */ @Test public void testResiliency() throws Exception { UpdateField updateField = new UpdateField("CustomField_123", "Completed"); updateField.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); jiraCommits.add(new JiraCommit("SSD-102", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); doThrow(new RuntimeException("Issue is invalid")) .when(jiraClientSvc).updateStringField(eq("SSD-101"), eq("CustomField_123"), eq("Completed")); updateField.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).updateStringField(eq("SSD-101"), eq("CustomField_123"), eq("Completed")); verify(jiraClientSvc, times(1)).updateStringField(eq("SSD-102"), eq("CustomField_123"), eq("Completed")); }
/** * An exception adding the first label add should not disrupt the next label */ @Test public void testResiliency() throws Exception { AddComment addComment = new AddComment(false, "Test Comment"); addComment.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); jiraCommits.add(new JiraCommit("SSD-102", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); doThrow(new RuntimeException("Issue is invalid")) .when(jiraClientSvc).addCommentToTicket("SSD-101", "Test Comment"); addComment.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).addCommentToTicket("SSD-101", "Test Comment"); verify(jiraClientSvc, times(1)).addCommentToTicket("SSD-102", "Test Comment"); }
@Test public void testAddFixVersion() throws Exception { AddFixVersion addFixVersion = new AddFixVersion("Beta Release"); addFixVersion.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101")); jiraCommits.add(new JiraCommit("SSD-101")); addFixVersion.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).addFixVersion(eq("SSD-101"), eq("Beta Release")); }
@Test public void testTransition() throws Exception { Transition transition = new Transition("Resolve"); transition.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); transition.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).changeWorkflowOfTicket(eq("SSD-101"), eq("Resolve")); }
@Test public void testUpdateField() throws Exception { UpdateField updateField = new UpdateField("CustomField_123", "Completed"); updateField.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); updateField.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).updateStringField(eq("SSD-101"), eq("CustomField_123"), eq("Completed")); }
@Test public void testCommentOnEveryCommit() throws Exception { AddComment addComment = new AddComment(true, "Test Comment"); addComment.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); addComment.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(2)).addCommentToTicket(eq("SSD-101"), eq("Test Comment")); }
@Test public void testOnlyCommentOncePerIssue() throws Exception { AddComment addComment = new AddComment(false, "Test Comment"); addComment.setJiraClientSvc(jiraClientSvc); AbstractBuild mockBuild = mock(AbstractBuild.class); when(mockBuild.getEnvironment(any(TaskListener.class))).thenReturn(new EnvVars()); List<JiraCommit> jiraCommits = new ArrayList<>(); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); jiraCommits.add(new JiraCommit("SSD-101", MockChangeLogUtil.mockChangeLogSetEntry("Test Comment"))); addComment.perform(jiraCommits, mockBuild, mock(Launcher.class), new StreamBuildListener(System.out, Charset.defaultCharset())); verify(jiraClientSvc, times(1)).addCommentToTicket(eq("SSD-101"), eq("Test Comment")); }
@Test public void testErrorInExpansion() throws Exception { AbstractBuild mockBuild = mock(AbstractBuild.class); SingleTicketStrategy strategy = new SingleTicketStrategy("$FOO"); when(mockBuild.getEnvironment(any(BuildListener.class))).thenThrow(new IOException()); List<JiraCommit> commits = strategy.getJiraCommits(mockBuild, new StreamBuildListener(System.out, Charset.defaultCharset())); assertEquals(1, commits.size()); assertEquals("$FOO", commits.get(0).getJiraTicket()); }
@Test public void testShouldBeCommited() throws Exception { DummySCM scm = new DummySCM(null); FreeStyleBuild build = mock(FreeStyleBuild.class); when(build.getResult()).thenReturn(Result.SUCCESS); Launcher launcher = mock(Launcher.class); BuildData gitBuildData = mock(BuildData.class); Build lastBuild = mock(Build.class); Revision rev = mock(Revision.class); Branch gitBranchData = mock(Branch.class); gitBuildData.lastBuild = lastBuild; lastBuild.revision = rev; when(build.getAction(BuildData.class)).thenReturn(gitBuildData); List<Branch> branches = new ArrayList<>(); branches.add(gitBranchData); when(gitBuildData.lastBuild.revision.getBranches()).thenReturn(branches); when(gitBranchData.getName()).thenReturn("origin/ready/f1"); OutputStream out = new ByteArrayOutputStream(); BuildListener listener = new StreamBuildListener(out); assertFalse(scm.isCommited()); scm.handlePostBuild(build, launcher, listener); assertTrue(scm.isCommited()); }
public void shouldRetryTaskStatusCheckFiveTimesAfterExceptionOccurs() { DeploymentService deploymentService = mock(DeploymentService.class); TaskService taskService = mock(TaskService.class); RepositoryService repositoryService = mock(RepositoryService.class); JenkinsDeploymentOptions jenkinsOptions = new JenkinsDeploymentOptions("test", VersionKind.Packaged, false, false, false, false); JenkinsDeploymentListener jenkinsDeploymentListener = new JenkinsDeploymentListener(new StreamBuildListener(System.out, Charset.defaultCharset()), true); DeployCommand deployCommand = new DeployCommand(deploymentService, taskService, repositoryService, jenkinsOptions, jenkinsDeploymentListener); Deployment deployment = new Deployment(); when(deploymentService.prepareInitial("pkg", "test")).thenReturn(deployment); when(deploymentService.validate(deployment)).thenReturn(deployment); when(deploymentService.createTask(deployment)).thenReturn("123"); TaskState taskState = mock(TaskState.class); when(taskState.getState()).thenReturn(TaskExecutionState.DONE); when(taskService.getTask("123")) .thenReturn(taskState) .thenThrow(new RuntimeException("Try 1")) .thenThrow(new RuntimeException("Try 2")) .thenThrow(new RuntimeException("Try 3")) .thenThrow(new RuntimeException("Try 4")) .thenThrow(new RuntimeException("Try 5")) .thenThrow(new MyTestValidationException("Expect this to be rethrown")); try { deployCommand.deploy("pkg", "test"); fail("Expected exception after 5 failed attempts."); } catch (MyTestValidationException e ) { //success } }
/** * Makes sure {@link GitClient} is remotable. */ public void testRemotability() throws Exception { DumbSlave s = createSlave(); File dir = createTmpDir(); final GitClient jgit = new JGitAPIImpl(dir,StreamBuildListener.fromStdout()); Computer c = s.toComputer(); c.connect(false).get(); VirtualChannel channel = c.getChannel(); channel.call(new Work(jgit)); channel.close(); }
public FailingTestResultAction() { super(new TestResult(), new StreamBuildListener(System.out)); }
@Before public void setup() { listener = new StreamBuildListener(jenkins.createTaskListener().getLogger(), Charset.defaultCharset()); mockServerClient = new MockServerClient("localhost", mockServer.getPort()); }
@Before public void setup() { listener = new StreamBuildListener(jenkins.createTaskListener().getLogger(), Charset.defaultCharset()); }