Skip to content

Commit 596c92e

Browse files
authored
Merge pull request #115 from dwasinge/sonar-issues
Added Tests for Code Coverage
2 parents 650799e + 32c09a5 commit 596c92e

File tree

5 files changed

+152
-30
lines changed

5 files changed

+152
-30
lines changed

src/test/java/com/redhat/labs/lodestar/resource/EngagementResourceTest.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.junit.jupiter.api.Test;
1515
import org.mockito.Mockito;
1616

17+
import com.google.common.collect.Lists;
1718
import com.redhat.labs.lodestar.models.gitlab.Group;
1819
import com.redhat.labs.lodestar.models.gitlab.Project;
1920
import com.redhat.labs.lodestar.rest.client.GitLabService;
@@ -46,7 +47,7 @@ void testGetAllEngagementsSuccess() {
4647
// get engagements by group
4748
List<Project> projects = new ArrayList<>();
4849
projects.add(Project.builder().id(20).name("Project " + (20)).build());
49-
MockUtils.setGetProjectsByGroupMock(gitLabService, 20, projects, true);
50+
MockUtils.setGetProjectsByGroupMock(gitLabService, 20, projects, false);
5051

5152
// get engagement file
5253
MockUtils.setGetFileForEngagementJsonMock(gitLabService, 20, true);
@@ -254,6 +255,12 @@ void testCreateProjectHookSuccess() {
254255

255256
@Test
256257
void testCreateProjectHookFailAlreadyExists() {
258+
259+
// Get Project
260+
Project p = Project.builder().id(66).build();
261+
MockUtils.setGetProjectByPathMock(gitLabService, "top/dog/jello/lemon/iac", true, Optional.of(p));
262+
MockUtils.setGetProjectHookMock(gitLabService, 66);
263+
257264
given().when().contentType(ContentType.JSON)
258265
.body("{\"push_events\": true, \"url\": \"http://webhook.edu/hook\"}")
259266
.post("/api/v1/engagements/customer/jello/lemon/hooks").then().statusCode(400);
@@ -266,6 +273,37 @@ void testCreateProjectHookFailNoProject() {
266273
.post("/api/v1/engagements/customer/nope/tutti-frutti/hooks").then().statusCode(400);
267274
}
268275

276+
@Test
277+
void testDeleteHooksNoProjects() {
278+
279+
MockUtils.setGetProjectsByGroupMock(gitLabService, 2, Lists.newArrayList(), false);
280+
281+
given().when().contentType(ContentType.JSON)
282+
.delete("/api/v1/engagements/hooks").then().statusCode(200);
283+
284+
}
285+
286+
@Test
287+
void testDeleteHooksHasProjectNoHooks() {
288+
289+
MockUtils.setGetProjectsByGroupMock(gitLabService, 2, Lists.newArrayList(), true);
290+
MockUtils.setGetProjectHookMock(gitLabService, 4444);
291+
292+
given().when().contentType(ContentType.JSON)
293+
.delete("/api/v1/engagements/hooks").then().statusCode(200);
294+
295+
}
296+
297+
@Test
298+
void testDeleteHooksHasProjectAndHooks() {
299+
300+
MockUtils.setGetProjectsByGroupMock(gitLabService, 2, Lists.newArrayList(), true);
301+
302+
given().when().contentType(ContentType.JSON)
303+
.delete("/api/v1/engagements/hooks").then().statusCode(200);
304+
305+
}
306+
269307
@Test
270308
void testGetStatusSuccess() {
271309

src/test/java/com/redhat/labs/lodestar/service/EngagementServiceTest.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import java.util.Arrays;
1212
import java.util.List;
13+
import java.util.Optional;
1314

1415
import javax.inject.Inject;
1516
import javax.ws.rs.WebApplicationException;
@@ -174,6 +175,16 @@ void setup() {
174175

175176
}
176177

178+
@Test void testGetHooksProjectNotFound() {
179+
180+
given(gitLabService.getProjectById(Mockito.anyString())).willReturn(null);
181+
182+
List<Hook> hooks = engagementService.getHooks("nope", "nada");
183+
assertNotNull(hooks);
184+
assertEquals(0, hooks.size());
185+
186+
}
187+
177188
@Test void tesetNoStatus() {
178189

179190
given(gitLabService.getFile(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).willReturn(null);
@@ -182,6 +193,4 @@ void setup() {
182193
assertNull(status);
183194
}
184195

185-
186-
187196
}

src/test/java/com/redhat/labs/lodestar/service/ProjectStructureServiceTest.java

Lines changed: 76 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import static org.mockito.BDDMockito.given;
66

77
import java.util.Arrays;
8+
import java.util.Optional;
89

910
import javax.inject.Inject;
1011
import javax.ws.rs.core.Response;
@@ -13,6 +14,7 @@
1314
import org.junit.jupiter.api.Test;
1415
import org.mockito.Mockito;
1516

17+
import com.google.common.collect.Lists;
1618
import com.redhat.labs.lodestar.models.Engagement;
1719
import com.redhat.labs.lodestar.models.gitlab.Group;
1820
import com.redhat.labs.lodestar.models.gitlab.Namespace;
@@ -35,28 +37,6 @@ class ProjectStructureServiceTest {
3537

3638
// New Customers and Projects
3739

38-
// @Test
39-
// void testThis() {
40-
//
41-
// String customerName = "customer1";
42-
// String projectName = "project1";
43-
//
44-
// Group cGroup = Group.builder().name(customerName).path(GitLabPathUtils.generateValidPath(customerName))
45-
// .parentId(null).build();
46-
//
47-
// Group pGroup = Group.builder().name(projectName).path(GitLabPathUtils.generateValidPath(projectName))
48-
// .parentId(null).build();
49-
//
50-
//// when(groupService.createGitLabGroup(ArgumentMatchers.argThat((g) -> g.getName().equals(customerName)))).thenReturn(Optional.of(cGroup));
51-
//// when(groupService.createGitLabGroup(ArgumentMatchers.argThat((g) -> g.getName().equals(customerName)))).thenReturn(Optional.of(pGroup));
52-
// when(groupService.createGitLabGroup(Mockito.any(Group.class)))
53-
// .thenAnswer((i) -> Optional.of(i.getArgument(0, Group.class)));
54-
//
55-
// Optional<Group> group = psService.testThis(customerName);
56-
// System.out.print(group.orElse(null));
57-
//
58-
// }
59-
6040
@Test
6141
void testCreateProjectStructureForNewCustomerAndNewProject() {
6242

@@ -91,6 +71,80 @@ void testCreateProjectStructureForNewCustomerAndNewProject() {
9171

9272
}
9373

74+
@Test
75+
void testCreateProjectStructureForCustomerNameChange() {
76+
77+
// given
78+
String customerName = "customer1";
79+
String projectName = "project1";
80+
81+
Group cGroup = Group.builder().name(customerName).path(GitLabPathUtils.generateValidPath(customerName)).id(2222)
82+
.parentId(2).build();
83+
Group pGroup = Group.builder().name(projectName).path(GitLabPathUtils.generateValidPath(projectName))
84+
.parentId(2222).id(3333).build();
85+
Project project = Project.builder().id(4444).name("iac").visibility("private")
86+
.namespace(Namespace.builder().id(3333).parentId(2222).build()).build();
87+
Group newCustomerGroup = Group.builder().name("newCustomer1")
88+
.path(GitLabPathUtils.generateValidPath("newCustomer1")).id(2222).parentId(2).build();
89+
90+
given(gitLabService.getProjectById(Mockito.anyString())).willReturn(project);
91+
given(gitLabService.getGroupByIdOrPath(Mockito.anyString())).willReturn(pGroup, cGroup);
92+
given(gitLabService.getSubGroups(Mockito.anyInt(), Mockito.eq(100), Mockito.eq(1)))
93+
.willReturn(Response.ok(Lists.newArrayList()).header("X-Total-Pages", 1).build());
94+
given(gitLabService.updateGroup(Mockito.anyInt(), Mockito.any())).willReturn(newCustomerGroup);
95+
96+
Engagement engagement = Engagement.builder().customerName("newCustomer1").projectName(projectName).build();
97+
98+
// when
99+
Project actual = psService.createOrUpdateProjectStructure(engagement, "http://some-path/engagements");
100+
101+
// then
102+
assertNotNull(project);
103+
assertEquals("iac", actual.getName());
104+
assertEquals("private", actual.getVisibility());
105+
assertEquals(3333, actual.getNamespace().getId());
106+
assertEquals(2222, actual.getNamespace().getParentId());
107+
108+
}
109+
110+
@Test
111+
void testCreateProjectStructureForCustomerNameChangeCustomerHasMultipleProjects() {
112+
113+
// given
114+
String customerName = "customer1";
115+
String projectName = "project1";
116+
117+
Group cGroup = Group.builder().name(customerName).path(GitLabPathUtils.generateValidPath(customerName)).id(2222)
118+
.parentId(2).build();
119+
Group pGroup = Group.builder().name(projectName).path(GitLabPathUtils.generateValidPath(projectName))
120+
.parentId(2222).id(3333).build();
121+
Group anotherGroup = Group.builder().name(projectName).path(GitLabPathUtils.generateValidPath("anotherGroup"))
122+
.parentId(2222).id(5555).build();
123+
Project project = Project.builder().id(4444).name("iac").visibility("private")
124+
.namespace(Namespace.builder().id(3333).parentId(2222).build()).build();
125+
Group newCustomerGroup = Group.builder().name("newCustomer1")
126+
.path(GitLabPathUtils.generateValidPath("newCustomer1")).id(6666).parentId(2).build();
127+
128+
given(gitLabService.getProjectById(Mockito.anyString())).willReturn(project);
129+
given(gitLabService.getGroupByIdOrPath(Mockito.anyString())).willReturn(pGroup, cGroup);
130+
given(gitLabService.getSubGroups(Mockito.anyInt(), Mockito.eq(100), Mockito.eq(1)))
131+
.willReturn(Response.ok(Lists.newArrayList(pGroup, anotherGroup)).header("X-Total-Pages", 1).build());
132+
given(gitLabService.updateGroup(Mockito.anyInt(), Mockito.any())).willReturn(newCustomerGroup);
133+
given(gitLabService.createGroup(Mockito.any(Group.class))).willReturn(newCustomerGroup);
134+
given(gitLabService.transferProject(Mockito.anyInt(), Mockito.any())).willReturn(Optional.of(project));
135+
136+
Engagement engagement = Engagement.builder().customerName("newCustomer1").projectName(projectName).build();
137+
138+
// when
139+
Project actual = psService.createOrUpdateProjectStructure(engagement, "http://some-path/engagements");
140+
141+
// then
142+
assertNotNull(project);
143+
assertEquals("iac", actual.getName());
144+
assertEquals("private", actual.getVisibility());
145+
146+
}
147+
94148
}
95149

96150
//New Customers and Projects - 2/2

src/test/java/com/redhat/labs/lodestar/utils/MockUtils.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77

88
import javax.ws.rs.WebApplicationException;
99
import javax.ws.rs.core.Response;
10+
import javax.ws.rs.core.Response.ResponseBuilder;
1011
import javax.ws.rs.core.Response.Status;
1112

1213
import org.mockito.BDDMockito;
1314
import org.mockito.Mockito;
1415

16+
import com.google.common.collect.Lists;
1517
import com.redhat.labs.lodestar.config.JsonMarshaller;
1618
import com.redhat.labs.lodestar.models.gitlab.Commit;
1719
import com.redhat.labs.lodestar.models.gitlab.CommitMultiple;
@@ -61,12 +63,13 @@ public static Namespace mockNamespace(Integer id, Integer parentId) {
6163
// get projects by group
6264
public static void setGetProjectsByGroupMock(GitLabService gitLabService, Integer projectId, List<Project> projects,
6365
boolean hasProject) {
64-
Response r = Response.ok(projects).header("X-Total-Pages", 1).build();
66+
ResponseBuilder r = Response.ok(projects).header("X-Total-Pages", 1);
6567
if (hasProject) {
66-
BDDMockito.given(gitLabService.getProjectsbyGroup(2, true, 100, 1)).willReturn(r);
68+
r.entity(Lists.newArrayList(mockIacProject()));
69+
BDDMockito.given(gitLabService.getProjectsbyGroup(2, true, 100, 1)).willReturn(r.build());
6770
} else {
6871
BDDMockito.given(gitLabService.getProjectsbyGroup(Mockito.anyInt(), Mockito.anyBoolean(), Mockito.eq(100),
69-
Mockito.eq(1))).willReturn(r);
72+
Mockito.eq(1))).willReturn(r.build());
7073
}
7174
}
7275

@@ -203,7 +206,7 @@ public static void setCreateProjectHookMock(GitLabService gitLabService, Integer
203206
BDDMockito.given(gitLabService.createProjectHook(Mockito.eq(projectId), Mockito.any(Hook.class)))
204207
.willReturn(Response.status(Status.CREATED).build());
205208
}
206-
209+
207210
public static void setDeleteGroupById(GitLabService gitLabService) {
208211
BDDMockito.doThrow(new WebApplicationException(404)).when(gitLabService).deleteGroupById(Mockito.anyInt());
209212
}

src/test/resources/engagement-update.json

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,23 @@
1818
"project_name": "project1",
1919
"start_date": "20200202",
2020
"technical_lead_email": "[email protected]",
21-
"technical_lead_name": "Wendel Clark"
21+
"technical_lead_name": "Wendel Clark",
22+
"engagement_users": [
23+
{
24+
"uuid": "9876",
25+
"first_name": "John",
26+
"last_name": "Smith",
27+
"email": "[email protected]",
28+
"role": "developer",
29+
"reset": false
30+
},
31+
{
32+
"uuid": "1234",
33+
"first_name": "Jane",
34+
"last_name": "Doe",
35+
"email": "[email protected]",
36+
"role": "developer",
37+
"reset": true
38+
}
39+
]
2240
}

0 commit comments

Comments
 (0)