diff --git a/src/main/java/org/dependencytrack/persistence/ProjectQueryManager.java b/src/main/java/org/dependencytrack/persistence/ProjectQueryManager.java index 3f2fbd8d52..97a407a8c6 100644 --- a/src/main/java/org/dependencytrack/persistence/ProjectQueryManager.java +++ b/src/main/java/org/dependencytrack/persistence/ProjectQueryManager.java @@ -1032,13 +1032,13 @@ public void deleteProjectsByUUIDs(Collection uuids) { ); executeAndCloseWithArray(sqlQuery, queryParameter); - sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ + sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ DELETE FROM "DEPENDENCYMETRICS" WHERE "PROJECT_ID" = ANY(?); """.replaceAll(Pattern.quote("= ANY(?)"), inExpression) ); executeAndCloseWithArray(sqlQuery, queryParameter); - sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ + sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ DELETE FROM "FINDINGATTRIBUTION" WHERE "PROJECT_ID" = ANY(?); """.replaceAll(Pattern.quote("= ANY(?)"), inExpression) ); @@ -1060,13 +1060,13 @@ public void deleteProjectsByUUIDs(Collection uuids) { ); executeAndCloseWithArray(sqlQuery, queryParameter); - sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ + sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ DELETE FROM "ANALYSIS" WHERE "PROJECT_ID" = ANY(?); """.replace("= ANY(?)", inExpression) ); executeAndCloseWithArray(sqlQuery, queryParameter); - sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ + sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ DELETE FROM "COMPONENT_PROPERTY" WHERE "COMPONENT_ID" IN ( SELECT "ID" FROM "COMPONENT" WHERE "PROJECT_ID" = ANY(?) ); @@ -1119,7 +1119,7 @@ WHERE PROJECT.ID IN (SELECT value FROM STRING_SPLIT(?, ',')) executeAndCloseWithArray(sqlQuery, queryParameter); } - sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ + sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ DELETE FROM "COMPONENT" WHERE "PROJECT_ID" = ANY(?); """.replace("= ANY(?)", inExpression) ); @@ -1318,7 +1318,7 @@ WHERE PROJECT.ID IN (SELECT value FROM STRING_SPLIT(?, ',')) executeAndCloseWithArray(sqlQuery, queryParameter); } - sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ + sqlQuery = pm.newQuery(JDOQuery.SQL_QUERY_LANGUAGE, """ DELETE FROM "PROJECT" WHERE "ID" = ANY(?); """.replace("= ANY(?)", inExpression) ); @@ -1564,7 +1564,7 @@ void preprocessACLs(final Query query, final String inputFilter, final Map query, final String inputFilter, final Map assertThat(project.getAccessTeams()).extracting(Team::getName).containsOnly(team.getName())); } + + @Test + void createProjectWithAclDisabledAddsApiKeyTeamTest() { + // ACL is not enabled - updateNewProjectACL should still add the API key's team + Project project = new Project(); + project.setName("acme-app-acl-disabled"); + project.setVersion("1.0"); + Response response = jersey.target(V1_PROJECT) + .request() + .header(X_API_KEY, apiKey) + .put(Entity.entity(project, MediaType.APPLICATION_JSON)); + assertThat(response.getStatus()).isEqualTo(201); + assertThat(qm.getProject("acme-app-acl-disabled", "1.0")).satisfies(created -> + assertThat(created.getAccessTeams()).extracting(Team::getName).containsOnly(team.getName())); + } + @Test void createProjectAsLatestTest() { Project project = new Project();