Skip to content

Commit a3b23a9

Browse files
authored
github: add github task unit tests (#172)
1 parent ccf7e43 commit a3b23a9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+5633
-29
lines changed

tasks/git/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@
9797
<artifactId>mockito-core</artifactId>
9898
<scope>test</scope>
9999
</dependency>
100+
<dependency>
101+
<groupId>com.github.tomakehurst</groupId>
102+
<artifactId>wiremock-jre8</artifactId>
103+
<scope>test</scope>
104+
</dependency>
100105
<dependency>
101106
<groupId>ch.qos.logback</groupId>
102107
<artifactId>logback-classic</artifactId>

tasks/git/src/main/java/com/walmartlabs/concord/plugins/git/GitHubTask.java

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
import java.io.IOException;
3434
import java.io.InputStream;
35+
import java.net.URI;
3536
import java.util.*;
3637
import java.util.stream.Collectors;
3738
import java.util.stream.Stream;
@@ -196,7 +197,7 @@ private static Map<String, Object> createPR(Map<String, Object> in, String gitHu
196197

197198
log.info("Creating PR in {}/{} from {} to {}", gitHubOrgName, gitHubRepoName, gitHubPRHead, gitHubPRBase);
198199

199-
GitHubClient client = GitHubClient.createClient(gitHubUri);
200+
GitHubClient client = createClient(gitHubUri);
200201
try {
201202
//Connect to GitHub
202203
client.setOAuth2Token(gitHubAccessToken);
@@ -228,7 +229,7 @@ private static Map<String, Object> getPRCommitList(Map<String, Object> in, Strin
228229
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
229230
int gitHubPRID = assertInt(in, GITHUB_PRID);
230231

231-
GitHubClient client = GitHubClient.createClient(gitHubUri);
232+
GitHubClient client = createClient(gitHubUri);
232233
client.setOAuth2Token(gitHubAccessToken);
233234

234235
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
@@ -251,7 +252,7 @@ private static Map<String, Object> commentPR(Map<String, Object> in, String gitH
251252
String gitHubPRComment = assertString(in, GITHUB_PRCOMMENT);
252253
int gitHubPRID = assertInt(in, GITHUB_PRID);
253254

254-
GitHubClient client = GitHubClient.createClient(gitHubUri);
255+
GitHubClient client = createClient(gitHubUri);
255256
client.setOAuth2Token(gitHubAccessToken);
256257
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
257258

@@ -278,7 +279,7 @@ private static Map<String, Object> mergePR(Map<String, Object> in, String gitHub
278279
int gitHubPRID = assertInt(in, GITHUB_PRID);
279280
String commitMessage = getString(in, GITHUB_MERGECOMMITMSG, "GitHub PR Merge");
280281
String mergeMethod = getString(in, GITHUB_MERGE_METHOD);
281-
GitHubClient client = GitHubClient.createClient(gitHubUri);
282+
GitHubClient client = createClient(gitHubUri);
282283
client.setOAuth2Token(gitHubAccessToken);
283284
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
284285

@@ -307,7 +308,7 @@ private static Map<String, Object> closePR(Map<String, Object> in, String gitHub
307308
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
308309
int gitHubPRID = assertInt(in, GITHUB_PRID);
309310

310-
GitHubClient client = GitHubClient.createClient(gitHubUri);
311+
GitHubClient client = createClient(gitHubUri);
311312
client.setOAuth2Token(gitHubAccessToken);
312313
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
313314

@@ -335,7 +336,7 @@ private static Map<String, Object> merge(Map<String, Object> in, String gitHubUr
335336
String base = assertString(in, GITHUB_MERGEBASE);
336337
String commitMessage = assertString(in, GITHUB_MERGECOMMITMSG);
337338

338-
GitHubClient client = GitHubClient.createClient(gitHubUri);
339+
GitHubClient client = createClient(gitHubUri);
339340
//Connect to GitHub
340341
client.setOAuth2Token(gitHubAccessToken);
341342
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
@@ -366,7 +367,7 @@ private static Map<String, Object> getCommit(Map<String, Object> in, String gitH
366367
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
367368
String gitHubCommitSha = assertString(in, GITHUB_COMMIT_SHA);
368369

369-
GitHubClient client = GitHubClient.createClient(gitHubUri);
370+
GitHubClient client = createClient(gitHubUri);
370371
client.setOAuth2Token(gitHubAccessToken);
371372
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
372373

@@ -402,7 +403,7 @@ private static Map<String, Object> createTag(Map<String, Object> in, String gitH
402403
String gitHubBranchSHA = assertString(in, GITHUB_COMMIT_SHA);
403404

404405
//Initiate the client
405-
GitHubClient client = GitHubClient.createClient(gitHubUri);
406+
GitHubClient client = createClient(gitHubUri);
406407
//Connect to GitHub
407408
client.setOAuth2Token(gitHubAccessToken);
408409
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
@@ -456,7 +457,7 @@ private static Map<String, Object> deleteTag(Map<String, Object> in, String gitH
456457
String gitHubTagName = assertString(in, GITHUB_TAGNAME);
457458

458459
//Initiate the client
459-
GitHubClient client = GitHubClient.createClient(gitHubUri);
460+
GitHubClient client = createClient(gitHubUri);
460461
//Connect to GitHub
461462
client.setOAuth2Token(gitHubAccessToken);
462463
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
@@ -485,7 +486,7 @@ private static Map<String, Object> deleteBranch(Map<String, Object> in, String g
485486
String gitHubBranchName = assertString(in, GITHUB_BRANCH);
486487

487488
//Initiate the client
488-
GitHubClient client = GitHubClient.createClient(gitHubUri);
489+
GitHubClient client = createClient(gitHubUri);
489490
//Connect to GitHub
490491
client.setOAuth2Token(gitHubAccessToken);
491492
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
@@ -518,7 +519,7 @@ private static Map<String, Object> addStatus(Map<String, Object> in, String gitH
518519
log.info("Creating status check ({}) in {}/{} repo with sha '{}'",
519520
state, gitHubOrgName, gitHubRepoName, commitSha);
520521

521-
GitHubClient client = GitHubClient.createClient(gitHubUri);
522+
GitHubClient client = createClient(gitHubUri);
522523
client.setOAuth2Token(gitHubAccessToken);
523524
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
524525

@@ -555,7 +556,7 @@ private static Map<String, Object> getStatuses(Map<String, Object> in, String gi
555556
String commitSha = assertString(in, GITHUB_COMMIT_SHA);
556557

557558
ObjectMapper objectMapper = new ObjectMapper();
558-
GitHubClient client = GitHubClient.createClient(gitHubUri);
559+
GitHubClient client = createClient(gitHubUri);
559560
client.setOAuth2Token(gitHubAccessToken);
560561
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
561562

@@ -576,7 +577,7 @@ private static Map<String, Object> forkRepo(Map<String, Object> in, String gitHu
576577
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
577578
String targetOrg = getString(in, GITHUB_FORKTARGETORG);
578579

579-
GitHubClient client = GitHubClient.createClient(gitHubUri);
580+
GitHubClient client = createClient(gitHubUri);
580581

581582
try {
582583
//Connect to GitHub
@@ -597,7 +598,7 @@ private static Map<String, Object> forkRepo(Map<String, Object> in, String gitHu
597598

598599
return Collections.emptyMap();
599600
} catch (Exception e) {
600-
throw new RuntimeException("Error occured during fork: " + e.getMessage());
601+
throw new RuntimeException("Error occurred during fork: " + e.getMessage());
601602
}
602603
}
603604

@@ -606,7 +607,7 @@ private static Map<String, Object> getBranchList(Map<String, Object> in, String
606607
String gitHubOrgName = assertString(in, GITHUB_ORGNAME);
607608
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
608609

609-
GitHubClient client = GitHubClient.createClient(gitHubUri);
610+
GitHubClient client = createClient(gitHubUri);
610611

611612
try {
612613
//Connect to GitHub
@@ -627,7 +628,7 @@ private static Map<String, Object> getBranchList(Map<String, Object> in, String
627628

628629
return result;
629630
} catch (Exception e) {
630-
throw new RuntimeException("Error occured while getting branch list: " + e.getMessage());
631+
throw new RuntimeException("Error occurred while getting branch list: " + e.getMessage());
631632
}
632633
}
633634

@@ -636,7 +637,7 @@ private static Map<String, Object> getTagList(Map<String, Object> in, String git
636637
String gitHubOrgName = assertString(in, GITHUB_ORGNAME);
637638
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
638639

639-
GitHubClient client = GitHubClient.createClient(gitHubUri);
640+
GitHubClient client = createClient(gitHubUri);
640641

641642
try {
642643
//Connect to GitHub
@@ -657,7 +658,7 @@ private static Map<String, Object> getTagList(Map<String, Object> in, String git
657658

658659
return result;
659660
} catch (Exception e) {
660-
throw new RuntimeException("Error occured while getting tag list: " + e.getMessage());
661+
throw new RuntimeException("Error occurred while getting tag list: " + e.getMessage());
661662
}
662663
}
663664

@@ -667,7 +668,7 @@ private static Map<String, Object> getPR(Map<String, Object> in, String gitHubUr
667668
int gitHubPRNumber = assertInt(in, GITHUB_PRNUMBER);
668669
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
669670

670-
GitHubClient client = GitHubClient.createClient(gitHubUri);
671+
GitHubClient client = createClient(gitHubUri);
671672

672673
try {
673674
//Connect to GitHub
@@ -698,7 +699,7 @@ private static Map<String, Object> getPRList(Map<String, Object> in, String gitH
698699
"'. Allowed values are only 'all', 'open', 'closed'.");
699700
}
700701

701-
GitHubClient client = GitHubClient.createClient(gitHubUri);
702+
GitHubClient client = createClient(gitHubUri);
702703

703704
try {
704705
//Connect to GitHub
@@ -727,7 +728,7 @@ private Map<String, Object> getPRFiles(Map<String, Object> in, String gitHubUri)
727728
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
728729
int gitHubPRNumber = assertInt(in, GITHUB_PRNUMBER);
729730

730-
GitHubClient client = GitHubClient.createClient(gitHubUri);
731+
GitHubClient client = createClient(gitHubUri);
731732

732733
try {
733734
client.setOAuth2Token(gitHubAccessToken);
@@ -762,12 +763,17 @@ private Map<String, Object> getPRFiles(Map<String, Object> in, String gitHubUri)
762763
}
763764
}
764765

766+
private static GitHubClient createClient(String gitHubUri) {
767+
URI uri = URI.create(gitHubUri);
768+
return new GitHubClient(uri.getHost(), uri.getPort(), uri.getScheme());
769+
}
770+
765771
private static Map<String, Object> createRepo(Map<String, Object> in, String gitHubUri) {
766772
String gitHubAccessToken = assertString(in, GITHUB_ACCESSTOKEN);
767773
String gitHubOrgName = assertString(in, GITHUB_ORGNAME);
768774
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
769775

770-
GitHubClient client = GitHubClient.createClient(gitHubUri);
776+
GitHubClient client = createClient(gitHubUri);
771777

772778
log.info("Creating repository '{}' in '{}' organization", gitHubRepoName, gitHubOrgName);
773779

@@ -796,7 +802,7 @@ private static Map<String, Object> createRepo(Map<String, Object> in, String git
796802
result.put("scmUrl", repo.getUrl());
797803
return result;
798804
} catch (Exception e) {
799-
throw new RuntimeException("Error occured while creating repository: ", e);
805+
throw new RuntimeException("Error occurred while creating repository: ", e);
800806
}
801807
}
802808

@@ -805,7 +811,7 @@ private static Map<String, Object> deleteRepo(Map<String, Object> in, String git
805811
String gitHubOrgName = assertString(in, GITHUB_ORGNAME);
806812
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
807813

808-
GitHubClient client = GitHubClient.createClient(gitHubUri);
814+
GitHubClient client = createClient(gitHubUri);
809815

810816
log.info("Deleting repository '{}' from '{}' organization", gitHubRepoName, gitHubOrgName);
811817

@@ -829,7 +835,7 @@ private static Map<String, Object> deleteRepo(Map<String, Object> in, String git
829835

830836
return Collections.emptyMap();
831837
} catch (Exception e) {
832-
throw new RuntimeException("Error occured while deleting repository: ", e);
838+
throw new RuntimeException("Error occurred while deleting repository: ", e);
833839
}
834840
}
835841

@@ -839,7 +845,7 @@ private static Map<String, Object> getLatestSHA(Map<String, Object> in, String g
839845
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
840846
String gitHubBranchName = getString(in, GITHUB_BRANCH, "master");
841847

842-
GitHubClient client = GitHubClient.createClient(gitHubUri);
848+
GitHubClient client = createClient(gitHubUri);
843849

844850
try {
845851
//Connect to GitHub
@@ -872,7 +878,7 @@ private static Map<String, Object> getContent(Map<String, Object> in, String git
872878
String gitHubRef = getString(in, GITHUB_REF);
873879
String gitHubPath = assertString(in, GITHUB_PATH);
874880

875-
GitHubClient client = GitHubClient.createClient(gitHubUri);
881+
GitHubClient client = createClient(gitHubUri);
876882
client.setOAuth2Token(gitHubAccessToken);
877883
IRepositoryIdProvider repo = RepositoryId.create(gitHubOrgName, gitHubRepoName);
878884

@@ -910,7 +916,7 @@ private static Map<String, Object> createHook(Map<String, Object> in, String git
910916
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
911917
String hookUrl = assertString(in, GITHUB_HOOK_URL).trim();
912918

913-
GitHubClient client = GitHubClient.createClient(gitHubUri);
919+
GitHubClient client = createClient(gitHubUri);
914920
client.setOAuth2Token(gitHubAccessToken);
915921

916922
RepositoryService service = new RepositoryService(client);
@@ -954,7 +960,7 @@ private static Map<String, Object> createIssue(Map<String, Object> in, String gi
954960
String gitHubOrgName = assertString(in, GITHUB_ORGNAME);
955961
String gitHubRepoName = assertString(in, GITHUB_REPONAME);
956962

957-
GitHubClient client = GitHubClient.createClient(gitHubUri);
963+
GitHubClient client = createClient(gitHubUri);
958964
client.setOAuth2Token(gitHubAccessToken);
959965

960966
IssueService issueService = new IssueService(client);
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package com.walmartlabs.concord.plugins.git.v2;
2+
3+
import com.github.tomakehurst.wiremock.common.ConsoleNotifier;
4+
import com.github.tomakehurst.wiremock.junit5.WireMockExtension;
5+
import com.walmartlabs.concord.plugins.git.GitHubTask;
6+
import org.junit.jupiter.api.Test;
7+
import org.junit.jupiter.api.extension.RegisterExtension;
8+
9+
import java.util.List;
10+
import java.util.Map;
11+
12+
import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor;
13+
import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
14+
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
15+
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
16+
import static org.junit.jupiter.api.Assertions.assertEquals;
17+
import static org.junit.jupiter.api.Assertions.assertFalse;
18+
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
19+
import static org.junit.jupiter.api.Assertions.assertTrue;
20+
21+
class CommitTest {
22+
23+
@RegisterExtension
24+
protected static WireMockExtension httpRule = WireMockExtension.newInstance()
25+
.options(wireMockConfig()
26+
.dynamicPort()
27+
.usingFilesUnderClasspath("wiremock/commit")
28+
.notifier(new ConsoleNotifier(false))) // set to true for verbose logging
29+
.build();
30+
31+
@Test
32+
void testGet() {
33+
Map<String, Object> input = Map.of(
34+
"action", "getCommit",
35+
"accessToken", "mockToken",
36+
"org", "octocat",
37+
"repo", "mock-repo",
38+
"commitSHA", "6dcb09b5b57875f334f61aebed695e2e4193db5e",
39+
"apiUrl", httpRule.baseUrl()
40+
);
41+
42+
var result = new GitHubTask().execute(input, Map.of());
43+
44+
httpRule.verify(1, getRequestedFor(urlEqualTo("/api/v3/repos/octocat/mock-repo/commits/6dcb09b5b57875f334f61aebed695e2e4193db5e")));
45+
httpRule.verify(1, getRequestedFor(urlEqualTo("/api/v3/repos/octocat/mock-repo")));
46+
47+
var r = assertInstanceOf(Map.class, result.get("result"));
48+
var data = assertInstanceOf(Map.class, r.get("data"));
49+
var defaultBranch = assertInstanceOf(String.class, data.get("defaultBranch"));
50+
51+
assertEquals(true, r.get("ok"));
52+
assertEquals("master", defaultBranch);
53+
}
54+
55+
@Test
56+
void testAddStatus() {
57+
Map<String, Object> input = Map.of(
58+
"action", "addStatus",
59+
"accessToken", "mockToken",
60+
"org", "octocat",
61+
"repo", "mock-repo",
62+
"commitSHA", "6dcb09b5b57875f334f61aebed695e2e4193db5e",
63+
"context", "myContext",
64+
"state", "pending",
65+
"targetUrl", "https://concord.example.com/#/process/${txId}",
66+
"apiUrl", httpRule.baseUrl()
67+
);
68+
69+
var result = new GitHubTask().execute(input, Map.of());
70+
71+
httpRule.verify(1, postRequestedFor(urlEqualTo("/api/v3/repos/octocat/mock-repo/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e")));
72+
73+
assertTrue(result.isEmpty());
74+
}
75+
76+
@Test
77+
void testGetStatuses() {
78+
Map<String, Object> input = Map.of(
79+
"action", "getStatuses",
80+
"accessToken", "mockToken",
81+
"org", "octocat",
82+
"repo", "mock-repo",
83+
"commitSHA", "6dcb09b5b57875f334f61aebed695e2e4193db5e",
84+
"apiUrl", httpRule.baseUrl()
85+
);
86+
87+
var result = new GitHubTask().execute(input, Map.of());
88+
89+
httpRule.verify(1, getRequestedFor(urlEqualTo("/api/v3/repos/octocat/mock-repo/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e?per_page=100&page=1")));
90+
91+
var commitStatuses = assertInstanceOf(List.class, result.get("commitStatuses"));
92+
93+
assertFalse(commitStatuses.isEmpty());
94+
var status = assertInstanceOf(Map.class, commitStatuses.get(0));
95+
assertEquals("success", status.get("state"));
96+
}
97+
98+
}

0 commit comments

Comments
 (0)