Skip to content

Commit 81646fc

Browse files
committed
add a retrieve by e uuid api
1 parent 7a6d4cc commit 81646fc

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

src/main/java/com/redhat/labs/lodestar/resource/EngagementResource.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,17 @@ public Response createEngagement(Engagement engagement, @Context UriInfo uriInfo
6060
return Response.created(builder.build()).build();
6161

6262
}
63+
64+
@GET
65+
@Path("uuid/{uuid}")
66+
public Response getEngagementByUuid(@PathParam("uuid") String uuid) {
67+
Optional<Engagement> engagement = Optional.ofNullable(engagementService.getEnagementByUuid(uuid));
68+
69+
if(engagement.isPresent()) {
70+
return Response.ok(engagement).build();
71+
}
72+
return Response.noContent().status(404).entity(String.format("{ \"message\": \"Unable to find engagement for uuid %s in git-api\"}", uuid)).build();
73+
}
6374

6475
@GET
6576
@Counted(name = "get-all-engagement", description = "Count of get all engagements")
@@ -191,7 +202,7 @@ public Response getProjectByUuid(@PathParam("uuid") String uuid, @QueryParam("mi
191202
Optional<Project> p = engagementService.getProjectByUuid(uuid);
192203

193204
if(p.isEmpty()) {
194-
return Response.status(404).build();
205+
return Response.status(404).entity("{ \"message\": \"Unable to get project by uuid\" }").build();
195206
}
196207

197208
if(mini) {

src/main/java/com/redhat/labs/lodestar/service/EngagementService.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,16 @@ private List<Engagement> getEngagementsFromProject(List<Project> projects, Optio
272272
.collect(Collectors.toList());
273273

274274
}
275+
276+
public Engagement getEnagementByUuid(String uuid) {
277+
Engagement engagement = null;
278+
Optional<Project> project = getProjectByUuid(uuid);
279+
if(project.isPresent()) {
280+
engagement = getEngagement(project.get(), false, false).orElse(null);
281+
}
282+
283+
return engagement;
284+
}
275285

276286
public Engagement getEngagement(String namespaceOrId, boolean includeStatus) {
277287
Engagement engagement = null;

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,26 @@ void testGetAllEngagementsSuccess() {
108108
+ " }\n" + "]"));
109109

110110
}
111+
112+
@Test
113+
void testGetEngagementByUuid() {
114+
MockUtils.setFindProjectByEngagementId(gitLabService, 2, "abcd", Project.builder().id(1).build());
115+
MockUtils.setGetFileForEngagementJsonMock(gitLabService, 2, true);
116+
117+
String engagementUuid = "k";
118+
119+
// Not found
120+
given().pathParam("engagementUuid", engagementUuid).when().contentType(ContentType.JSON)
121+
.get("/api/v1/engagements/uuid/{engagementUuid}").then().statusCode(404).body("message", is("Unable to find engagement for uuid k in git-api"));
122+
123+
engagementUuid = "abcd";
124+
// Found
125+
given().pathParam("engagementUuid", engagementUuid).when().contentType(ContentType.JSON)
126+
.get("/api/v1/engagements/uuid/{engagementUuid}").then().statusCode(404);
127+
}
111128

112129
@Test
113-
void tesetGetEngagementByNamespace() {
130+
void testGetEngagementByNamespace() {
114131

115132
// get projects by id
116133
Integer projectId = MockUtils.setGetProjectByPathMock(gitLabService, "top/dog/jello/tutti-frutti/iac", true,

0 commit comments

Comments
 (0)