Skip to content

Commit 5194ee4

Browse files
authored
Merge pull request #1503 from DependencyTrack/bom-upload-project-uuid
2 parents d298321 + 0959749 commit 5194ee4

File tree

5 files changed

+50
-19
lines changed

5 files changed

+50
-19
lines changed

apiserver/src/main/java/org/dependencytrack/resources/v1/BomResource.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -574,8 +574,8 @@ private ProcessingResult process(QueryManager qm, Project project, String encode
574574
final BomUploadEvent bomUploadEvent = new BomUploadEvent(qm.detach(Project.class, project.getId()), bomFileMetadata);
575575
qm.createWorkflowSteps(bomUploadEvent.getChainIdentifier());
576576

577-
BomUploadResponse bomUploadResponse = new BomUploadResponse();
578-
bomUploadResponse.setToken(bomUploadEvent.getChainIdentifier());
577+
final var bomUploadResponse = new BomUploadResponse(
578+
bomUploadEvent.getChainIdentifier(), project.getUuid());
579579
final var response = Response.ok(bomUploadResponse).build();
580580

581581
return new ProcessingResult(response, bomUploadEvent);
@@ -610,8 +610,8 @@ private ProcessingResult process(QueryManager qm, Project project, List<FormData
610610

611611
qm.createWorkflowSteps(bomUploadEvent.getChainIdentifier());
612612

613-
BomUploadResponse bomUploadResponse = new BomUploadResponse();
614-
bomUploadResponse.setToken(bomUploadEvent.getChainIdentifier());
613+
final var bomUploadResponse = new BomUploadResponse(
614+
bomUploadEvent.getChainIdentifier(), project.getUuid());
615615
final var response = Response.ok(bomUploadResponse).build();
616616

617617
return new ProcessingResult(response, bomUploadEvent);

apiserver/src/main/java/org/dependencytrack/resources/v1/VexResource.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@
6464
import java.io.IOException;
6565
import java.io.InputStream;
6666
import java.util.Base64;
67-
import java.util.Collections;
6867
import java.util.List;
6968

7069
/**
@@ -280,7 +279,10 @@ private Response process(QueryManager qm, Project project, String encodedVexData
280279
BomResource.validate(decoded, project);
281280
final VexUploadEvent vexUploadEvent = new VexUploadEvent(project.getUuid(), decoded);
282281
Event.dispatch(vexUploadEvent);
283-
return Response.ok(Collections.singletonMap("token", vexUploadEvent.getChainIdentifier())).build();
282+
283+
final var bomUploadResponse = new BomUploadResponse(
284+
vexUploadEvent.getChainIdentifier(), project.getUuid());
285+
return Response.ok(bomUploadResponse).build();
284286
} else {
285287
return Response.status(Response.Status.NOT_FOUND).entity("The project could not be found.").build();
286288
}
@@ -299,7 +301,10 @@ private Response process(QueryManager qm, Project project, List<FormDataBodyPart
299301
BomResource.validate(content, project);
300302
final VexUploadEvent vexUploadEvent = new VexUploadEvent(project.getUuid(), content);
301303
Event.dispatch(vexUploadEvent);
302-
return Response.ok(Collections.singletonMap("token", vexUploadEvent.getChainIdentifier())).build();
304+
305+
final var bomUploadResponse = new BomUploadResponse(
306+
vexUploadEvent.getChainIdentifier(), project.getUuid());
307+
return Response.ok(bomUploadResponse).build();
303308
} catch (IOException e) {
304309
return Response.status(Response.Status.BAD_REQUEST).build();
305310
}

apiserver/src/main/java/org/dependencytrack/resources/v1/vo/BomUploadResponse.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,22 @@ public class BomUploadResponse implements Serializable {
2828
private static final long serialVersionUID = -7592436786586686865L;
2929

3030
@Schema(requiredMode = Schema.RequiredMode.REQUIRED, description = "Token used to check task progress")
31-
private UUID token;
31+
private final UUID token;
3232

33-
public void setToken(UUID token) {
33+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED, description = "UUID of the project the BOM was uploaded for")
34+
private final UUID projectUuid;
35+
36+
public BomUploadResponse(final UUID token, final UUID projectUuid) {
3437
this.token = token;
38+
this.projectUuid = projectUuid;
3539
}
3640

3741
public UUID getToken() {
3842
return this.token;
3943
}
44+
45+
public UUID getProjectUuid() {
46+
return projectUuid;
47+
}
48+
4049
}

apiserver/src/test/java/org/dependencytrack/resources/v1/BomResourceTest.java

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,9 +1056,14 @@ public void uploadBomTest() throws Exception {
10561056
.put(Entity.entity(request, MediaType.APPLICATION_JSON));
10571057
Assert.assertEquals(200, response.getStatus(), 0);
10581058
JsonObject json = parseJsonObject(response);
1059-
Assert.assertNotNull(json);
1060-
Assert.assertNotNull(json.getString("token"));
1061-
Assert.assertTrue(UuidUtil.isValidUUID(json.getString("token")));
1059+
assertThatJson(json.toString())
1060+
.withMatcher("projectUuid", equalTo(project.getUuid().toString()))
1061+
.isEqualTo(/* language=JSON */ """
1062+
{
1063+
"token": "${json-unit.any-string}",
1064+
"projectUuid": "${json-unit.matches:projectUuid}"
1065+
}
1066+
""");
10621067
UUID uuid = UUID.fromString(json.getString("token"));
10631068
assertThat(qm.getAllWorkflowStatesForAToken(uuid)).satisfiesExactlyInAnyOrder(
10641069
workflowState -> {
@@ -1527,9 +1532,10 @@ public void uploadBomAutoCreateWithTagsMultipartTest() throws Exception {
15271532
.header(X_API_KEY, apiKey)
15281533
.post(Entity.entity(multiPart, multiPart.getMediaType()));
15291534
assertThat(response.getStatus()).isEqualTo(200);
1530-
assertThatJson(getPlainTextBody(response)).isEqualTo("""
1535+
assertThatJson(getPlainTextBody(response)).isEqualTo(/* language=JSON */ """
15311536
{
1532-
"token": "${json-unit.any-string}"
1537+
"token": "${json-unit.any-string}",
1538+
"projectUuid": "${json-unit.any-string}"
15331539
}
15341540
""");
15351541

@@ -1560,11 +1566,14 @@ public void uploadBomProtobufFormatTest() {
15601566
.header(X_API_KEY, apiKey)
15611567
.post(Entity.entity(multiPart, multiPart.getMediaType()));
15621568
assertThat(response.getStatus()).isEqualTo(200);
1563-
assertThatJson(getPlainTextBody(response)).isEqualTo("""
1564-
{
1565-
"token": "${json-unit.any-string}"
1566-
}
1567-
""");
1569+
assertThatJson(getPlainTextBody(response))
1570+
.withMatcher("projectUuid", equalTo(project.getUuid().toString()))
1571+
.isEqualTo(/* language=JSON */ """
1572+
{
1573+
"token": "${json-unit.any-string}",
1574+
"projectUuid": "${json-unit.matches:projectUuid}"
1575+
}
1576+
""");
15681577

15691578
final var projectResponse = qm.getProject("Acme Example", "1.0");
15701579
assertThat(projectResponse).isNotNull();

apiserver/src/test/java/org/dependencytrack/resources/v1/VexResourceTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,14 @@ public void uploadVexAclTest() {
421421

422422
response = responseSupplier.get();
423423
assertThat(response.getStatus()).isEqualTo(200);
424+
assertThatJson(getPlainTextBody(response))
425+
.withMatcher("projectUuid", equalTo(project.getUuid().toString()))
426+
.isEqualTo(/* language=JSON */ """
427+
{
428+
"token": "${json-unit.any-string}",
429+
"projectUuid": "${json-unit.matches:projectUuid}"
430+
}
431+
""");
424432
}
425433

426434
@Test

0 commit comments

Comments
 (0)