diff --git a/src/test/java/org/dependencytrack/resources/v1/TagResourceTest.java b/src/test/java/org/dependencytrack/resources/v1/TagResourceTest.java index 6982f2d68b..eec8c08753 100644 --- a/src/test/java/org/dependencytrack/resources/v1/TagResourceTest.java +++ b/src/test/java/org/dependencytrack/resources/v1/TagResourceTest.java @@ -813,6 +813,36 @@ public void tagProjectsWhenAlreadyTaggedTest() { assertThat(project.getTags()).satisfiesExactly(projectTag -> assertThat(projectTag.getName()).isEqualTo("foo")); } + @Test + public void tagProjectsExtraTagTest() { + initializeWithPermissions(Permissions.PORTFOLIO_MANAGEMENT); + + final var projectA = new Project(); + projectA.setName("acme-app-a"); + qm.persist(projectA); + + final var projectB = new Project(); + projectB.setName("acme-app-b"); + qm.persist(projectB); + + final Tag tagFoo = qm.createTag("foo"); + qm.bind(projectA, List.of(tagFoo)); + + final Tag tagBar = qm.createTag("bar"); + qm.bind(projectB, List.of(tagBar)); + + final Response response = jersey.target(V1_TAG + "/bar/project") + .request() + .header(X_API_KEY, apiKey) + .post(Entity.json(List.of(projectA.getUuid()))); + assertThat(response.getStatus()).isEqualTo(204); + + qm.getPersistenceManager().evictAll(); + List tagsA = projectA.getTags(); + assertThat(tagsA).satisfiesExactlyInAnyOrder( projectTag -> assertThat(projectTag.getName()).isEqualTo("foo"), + projectTag -> assertThat(projectTag.getName()).isEqualTo("bar")); + } + @Test public void untagProjectsTest() { initializeWithPermissions(Permissions.PORTFOLIO_MANAGEMENT);