Skip to content

Commit 3cf071d

Browse files
authored
Added tests for GiteeCreatePullRequestPublisher.java and small bug fix (#141)
1 parent a96d8b7 commit 3cf071d

File tree

3 files changed

+101
-2
lines changed

3 files changed

+101
-2
lines changed

src/main/java/com/gitee/jenkins/publisher/GiteeCreatePullRequestPublisher.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import hudson.model.AbstractBuild;
2121
import hudson.model.AbstractProject;
2222
import hudson.model.BuildListener;
23+
import hudson.model.Result;
2324
import hudson.tasks.BuildStepDescriptor;
2425
import hudson.tasks.BuildStepMonitor;
2526
import hudson.tasks.Notifier;
@@ -112,9 +113,12 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListen
112113
if (addDatetime) {
113114
pullRequestTitle = LocalDateTime.now().toString() + title;
114115
}
115-
client.createPullRequest(owner, repo, pullRequestTitle, base, head);
116116

117-
LOGGER.log(Level.INFO, "Pull request {0} generated, {1} -> {2}", LoggerUtil.toArray(title, head, base));
117+
if (build.getResult() == Result.SUCCESS) {
118+
client.createPullRequest(owner, repo, pullRequestTitle, base, head);
119+
LOGGER.log(Level.INFO, "Pull request {0} generated, {1} -> {2}", LoggerUtil.toArray(title, head, base));
120+
}
121+
118122
return true;
119123
}
120124

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package com.gitee.jenkins.publisher;
2+
3+
import static com.gitee.jenkins.publisher.TestUtility.GITEE_CONNECTION_V5;
4+
import static com.gitee.jenkins.publisher.TestUtility.OWNER_PATH;
5+
import static com.gitee.jenkins.publisher.TestUtility.REPO_PATH;
6+
import static com.gitee.jenkins.publisher.TestUtility.setupGiteeConnections;
7+
import static com.gitee.jenkins.publisher.TestUtility.verifyMatrixAggregatable;
8+
import static org.mockserver.model.HttpRequest.request;
9+
import static org.mockserver.model.HttpResponse.response;
10+
import static com.gitee.jenkins.publisher.TestUtility.mockSimpleBuild;
11+
import java.io.IOException;
12+
import java.nio.charset.Charset;
13+
import org.junit.jupiter.api.AfterEach;
14+
import org.junit.jupiter.api.BeforeAll;
15+
import org.junit.jupiter.api.BeforeEach;
16+
import org.junit.jupiter.api.Test;
17+
import org.junit.jupiter.api.extension.ExtendWith;
18+
import org.jvnet.hudson.test.JenkinsRule;
19+
import org.jvnet.hudson.test.junit.jupiter.WithJenkins;
20+
import org.mockserver.client.MockServerClient;
21+
import org.mockserver.junit.jupiter.MockServerExtension;
22+
import org.mockserver.model.HttpRequest;
23+
24+
import hudson.model.BuildListener;
25+
import hudson.model.Result;
26+
import hudson.model.StreamBuildListener;
27+
28+
@WithJenkins
29+
@ExtendWith(MockServerExtension.class)
30+
public class GiteeCreatePullRequestPublisherTest {
31+
private static JenkinsRule jenkins;
32+
33+
private static MockServerClient mockServerClient;
34+
private BuildListener listener;
35+
36+
@BeforeAll
37+
static void setUp(JenkinsRule rule, MockServerClient client) throws Exception {
38+
jenkins = rule;
39+
mockServerClient = client;
40+
setupGiteeConnections(jenkins, client);
41+
}
42+
43+
@BeforeEach
44+
void setUp() {
45+
listener = new StreamBuildListener(jenkins.createTaskListener().getLogger(), Charset.defaultCharset());
46+
}
47+
48+
@AfterEach
49+
void tearDown() {
50+
mockServerClient.reset();
51+
}
52+
53+
@Test
54+
void matrixAggregatable() throws Exception {
55+
verifyMatrixAggregatable(GiteeMessagePublisher.class, listener);
56+
}
57+
58+
@Test
59+
void success() throws InterruptedException, IOException {
60+
HttpRequest createPullRequestStatus = prepareCreatePullRequest("v5");
61+
mockServerClient.when(createPullRequestStatus).respond(response().withStatusCode(200));
62+
63+
GiteeCreatePullRequestPublisher p = new GiteeCreatePullRequestPublisher();
64+
p.setRepo(REPO_PATH);
65+
p.setOwner(OWNER_PATH);
66+
p.setBase("base");
67+
p.setHead("head");
68+
p.setTitle("title");
69+
70+
p.perform(mockSimpleBuild(GITEE_CONNECTION_V5, Result.SUCCESS), null, listener);
71+
mockServerClient.verify(createPullRequestStatus);
72+
}
73+
74+
@Test
75+
void failed() throws InterruptedException, IOException {
76+
GiteeCreatePullRequestPublisher p = new GiteeCreatePullRequestPublisher();
77+
p.setRepo(REPO_PATH);
78+
p.setOwner(OWNER_PATH);
79+
p.setBase("base");
80+
p.setHead("head");
81+
p.setTitle("title");
82+
83+
p.perform(mockSimpleBuild(GITEE_CONNECTION_V5, Result.FAILURE), null, listener);
84+
mockServerClient.verifyZeroInteractions();
85+
}
86+
87+
private HttpRequest prepareCreatePullRequest(String apiLevel) {
88+
return request()
89+
.withPath(String.format("/gitee/api/%s/repos/%s/%s/pulls", apiLevel, OWNER_PATH, REPO_PATH))
90+
.withMethod("POST")
91+
.withHeader("PRIVATE-TOKEN", "secret");
92+
}
93+
94+
}

src/test/java/com/gitee/jenkins/publisher/TestUtility.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ final class TestUtility {
4848
static final String GITEE_CONNECTION_V5 = "GiteeV5";
4949
static final String BUILD_URL = "/build/123";
5050
static final String REPO_PATH = "testPath";
51+
static final String OWNER_PATH = "testUser";
5152
static final String PULL_COMMIT_SHA = "eKJ3wuqJT98Kc8TCcBK7oggLR1E9Bty7eqSHfSLT";
5253
static final int BUILD_NUMBER = 1;
5354
static final int PROJECT_ID = 3;

0 commit comments

Comments
 (0)