aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2018-08-30 16:58:58 +0200
committerSonarTech <sonartech@sonarsource.com>2018-08-30 20:22:23 +0200
commit61b01c89dfbe4bae2afc5e92c14cb9781b0ff011 (patch)
treeb9a524d42d264fd21723b260c9932f980c17ad96 /server
parent1d2eb3b5ac8a23c5c4aa1b1ede5ce3f24840ce8a (diff)
downloadsonarqube-61b01c89dfbe4bae2afc5e92c14cb9781b0ff011.tar.gz
sonarqube-61b01c89dfbe4bae2afc5e92c14cb9781b0ff011.zip
Delete webhooks and webhook deliveries only once (#667)
- Deletion were done at 3 places when deleting an organization : -- In the api/organization/delete WS -- In component cleaner -- In PurgeDao - Moreover, the deletion of webhook deliveries in the last 2 classes were not done by project, but by selecting all webhook deliveries of the project and deleting them one by one
Diffstat (limited to 'server')
-rw-r--r--server/sonar-db-core/src/main/java/org/sonar/db/version/SqTables.java1
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java7
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeDao.java1
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java2
-rw-r--r--server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml4
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java466
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryDaoTest.java62
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryDbTester.java32
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryTesting.java (renamed from server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDbTesting.java)17
-rw-r--r--server/sonar-server-common/src/test/java/org/sonar/server/webhook/WebhookDeliveryStorageTest.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/component/ComponentCleanerService.java9
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/organization/ws/DeleteAction.java3
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/component/ComponentCleanerServiceTest.java63
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/organization/ws/DeleteActionTest.java26
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/webhook/ws/DeleteActionTest.java2
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/webhook/ws/ListActionTest.java2
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveriesActionTest.java2
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveryActionTest.java2
18 files changed, 383 insertions, 324 deletions
diff --git a/server/sonar-db-core/src/main/java/org/sonar/db/version/SqTables.java b/server/sonar-db-core/src/main/java/org/sonar/db/version/SqTables.java
index 18b68506d10..dfb19a480f4 100644
--- a/server/sonar-db-core/src/main/java/org/sonar/db/version/SqTables.java
+++ b/server/sonar-db-core/src/main/java/org/sonar/db/version/SqTables.java
@@ -107,6 +107,7 @@ public final class SqTables {
"users",
"user_roles",
"user_tokens",
+ "webhooks",
"webhook_deliveries")));
private SqTables() {
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java
index 80634fd8fa3..fd869e96a7d 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java
@@ -284,6 +284,13 @@ class PurgeCommands {
profiler.stop();
}
+ void deleteWebhooks(String rootUuid) {
+ profiler.start("deleteWebhooks (webhooks)");
+ purgeMapper.deleteWebhooksByProjectUuid(rootUuid);
+ session.commit();
+ profiler.stop();
+ }
+
void deleteWebhookDeliveries(String rootUuid) {
profiler.start("deleteWebhookDeliveries (webhook_deliveries)");
purgeMapper.deleteWebhookDeliveriesByProjectUuid(rootUuid);
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeDao.java
index c62dcbd14f2..2a16fc806f9 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeDao.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeDao.java
@@ -201,6 +201,7 @@ public class PurgeDao implements Dao {
commands.deleteFileSources(rootUuid);
commands.deleteCeActivity(rootUuid);
commands.deleteCeQueue(rootUuid);
+ commands.deleteWebhooks(rootUuid);
commands.deleteWebhookDeliveries(rootUuid);
commands.deleteProjectMappings(rootUuid);
commands.deleteProjectAlmBindings(rootUuid);
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java
index de1b8f47bfd..3a6dbd86f41 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java
@@ -106,6 +106,8 @@ public interface PurgeMapper {
void deleteCeQueueByProjectUuid(@Param("projectUuid") String projectUuid);
+ void deleteWebhooksByProjectUuid(@Param("projectUuid") String projectUuid);
+
void deleteWebhookDeliveriesByProjectUuid(@Param("projectUuid") String projectUuid);
void deleteProjectMappingsByProjectUuid(@Param("projectUuid") String projectUuid);
diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml
index 5e8535cd978..5051ad485c5 100644
--- a/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml
+++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml
@@ -356,6 +356,10 @@
delete from ce_queue where component_uuid=#{projectUuid,jdbcType=VARCHAR}
</delete>
+ <delete id="deleteWebhooksByProjectUuid">
+ delete from webhooks where project_uuid=#{projectUuid,jdbcType=VARCHAR}
+ </delete>
+
<delete id="deleteWebhookDeliveriesByProjectUuid">
delete from webhook_deliveries where component_uuid=#{projectUuid,jdbcType=VARCHAR}
</delete>
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java
index afa7636baf6..a6247601c0b 100644
--- a/server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java
+++ b/server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java
@@ -56,9 +56,12 @@ import org.sonar.db.issue.IssueDto;
import org.sonar.db.measure.MeasureDto;
import org.sonar.db.measure.custom.CustomMeasureDto;
import org.sonar.db.metric.MetricDto;
+import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.property.PropertyDto;
import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.db.source.FileSourceDto;
+import org.sonar.db.webhook.WebhookDeliveryLiteDto;
+import org.sonar.db.webhook.WebhookDto;
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
@@ -66,7 +69,6 @@ import static java.util.Collections.singletonList;
import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
import static org.sonar.db.ce.CeTaskTypes.REPORT;
@@ -74,8 +76,8 @@ import static org.sonar.db.component.ComponentTesting.newDirectory;
import static org.sonar.db.component.ComponentTesting.newFileDto;
import static org.sonar.db.component.ComponentTesting.newModuleDto;
import static org.sonar.db.component.ComponentTesting.newProjectCopy;
-import static org.sonar.db.webhook.WebhookDbTesting.newDto;
-import static org.sonar.db.webhook.WebhookDbTesting.selectAllDeliveryUuids;
+import static org.sonar.db.webhook.WebhookDeliveryTesting.newDto;
+import static org.sonar.db.webhook.WebhookDeliveryTesting.selectAllDeliveryUuids;
public class PurgeDaoTest {
@@ -85,49 +87,49 @@ public class PurgeDaoTest {
private System2 system2 = mock(System2.class);
@Rule
- public DbTester dbTester = DbTester.create(system2);
+ public DbTester db = DbTester.create(system2);
@Rule
public ExpectedException expectedException = ExpectedException.none();
- private DbClient dbClient = dbTester.getDbClient();
- private DbSession dbSession = dbTester.getSession();
- private PurgeDao underTest = dbTester.getDbClient().purgeDao();
+ private DbClient dbClient = db.getDbClient();
+ private DbSession dbSession = db.getSession();
+ private PurgeDao underTest = db.getDbClient().purgeDao();
@Test
public void purge_failed_ce_tasks() {
- dbTester.prepareDbUnit(getClass(), "shouldDeleteAbortedBuilds.xml");
+ db.prepareDbUnit(getClass(), "shouldDeleteAbortedBuilds.xml");
underTest.purge(dbSession, newConfigurationWith30Days(), PurgeListener.EMPTY, new PurgeProfiler());
dbSession.commit();
- dbTester.assertDbUnit(getClass(), "shouldDeleteAbortedBuilds-result.xml", "snapshots");
+ db.assertDbUnit(getClass(), "shouldDeleteAbortedBuilds-result.xml", "snapshots");
}
@Test
public void purge_history_of_project() {
- dbTester.prepareDbUnit(getClass(), "shouldPurgeProject.xml");
+ db.prepareDbUnit(getClass(), "shouldPurgeProject.xml");
underTest.purge(dbSession, newConfigurationWith30Days(), PurgeListener.EMPTY, new PurgeProfiler());
dbSession.commit();
- dbTester.assertDbUnit(getClass(), "shouldPurgeProject-result.xml", "projects", "snapshots");
+ db.assertDbUnit(getClass(), "shouldPurgeProject-result.xml", "projects", "snapshots");
}
@Test
public void purge_inactive_short_living_branches() {
when(system2.now()).thenReturn(new Date().getTime());
- RuleDefinitionDto rule = dbTester.rules().insert();
- ComponentDto project = dbTester.components().insertMainBranch();
- ComponentDto longBranch = dbTester.components().insertProjectBranch(project);
- ComponentDto recentShortBranch = dbTester.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.SHORT));
+ RuleDefinitionDto rule = db.rules().insert();
+ ComponentDto project = db.components().insertMainBranch();
+ ComponentDto longBranch = db.components().insertProjectBranch(project);
+ ComponentDto recentShortBranch = db.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.SHORT));
// short branch with other components and issues, updated 31 days ago
when(system2.now()).thenReturn(DateUtils.addDays(new Date(), -31).getTime());
- ComponentDto shortBranch = dbTester.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.SHORT));
- ComponentDto module = dbTester.components().insertComponent(newModuleDto(shortBranch));
- ComponentDto subModule = dbTester.components().insertComponent(newModuleDto(module));
- ComponentDto file = dbTester.components().insertComponent(newFileDto(subModule));
- dbTester.issues().insert(rule, shortBranch, file);
- dbTester.issues().insert(rule, shortBranch, subModule);
- dbTester.issues().insert(rule, shortBranch, module);
+ ComponentDto shortBranch = db.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.SHORT));
+ ComponentDto module = db.components().insertComponent(newModuleDto(shortBranch));
+ ComponentDto subModule = db.components().insertComponent(newModuleDto(module));
+ ComponentDto file = db.components().insertComponent(newFileDto(subModule));
+ db.issues().insert(rule, shortBranch, file);
+ db.issues().insert(rule, shortBranch, subModule);
+ db.issues().insert(rule, shortBranch, module);
// back to present
when(system2.now()).thenReturn(new Date().getTime());
@@ -140,20 +142,20 @@ public class PurgeDaoTest {
@Test
public void purge_inactive_pull_request() {
when(system2.now()).thenReturn(new Date().getTime());
- RuleDefinitionDto rule = dbTester.rules().insert();
- ComponentDto project = dbTester.components().insertMainBranch();
- ComponentDto longBranch = dbTester.components().insertProjectBranch(project);
- ComponentDto recentPullRequest = dbTester.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.PULL_REQUEST));
+ RuleDefinitionDto rule = db.rules().insert();
+ ComponentDto project = db.components().insertMainBranch();
+ ComponentDto longBranch = db.components().insertProjectBranch(project);
+ ComponentDto recentPullRequest = db.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.PULL_REQUEST));
// pull request with other components and issues, updated 31 days ago
when(system2.now()).thenReturn(DateUtils.addDays(new Date(), -31).getTime());
- ComponentDto pullRequest = dbTester.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.PULL_REQUEST));
- ComponentDto module = dbTester.components().insertComponent(newModuleDto(pullRequest));
- ComponentDto subModule = dbTester.components().insertComponent(newModuleDto(module));
- ComponentDto file = dbTester.components().insertComponent(newFileDto(subModule));
- dbTester.issues().insert(rule, pullRequest, file);
- dbTester.issues().insert(rule, pullRequest, subModule);
- dbTester.issues().insert(rule, pullRequest, module);
+ ComponentDto pullRequest = db.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.PULL_REQUEST));
+ ComponentDto module = db.components().insertComponent(newModuleDto(pullRequest));
+ ComponentDto subModule = db.components().insertComponent(newModuleDto(module));
+ ComponentDto file = db.components().insertComponent(newFileDto(subModule));
+ db.issues().insert(rule, pullRequest, file);
+ db.issues().insert(rule, pullRequest, subModule);
+ db.issues().insert(rule, pullRequest, module);
// back to present
when(system2.now()).thenReturn(new Date().getTime());
@@ -165,47 +167,47 @@ public class PurgeDaoTest {
@Test
public void shouldDeleteHistoricalDataOfDirectoriesAndFiles() {
- dbTester.prepareDbUnit(getClass(), "shouldDeleteHistoricalDataOfDirectoriesAndFiles.xml");
+ db.prepareDbUnit(getClass(), "shouldDeleteHistoricalDataOfDirectoriesAndFiles.xml");
PurgeConfiguration conf = new PurgeConfiguration(new IdUuidPair(THE_PROJECT_ID, "PROJECT_UUID"), asList(Scopes.DIRECTORY, Scopes.FILE),
30, Optional.of(30), System2.INSTANCE, Collections.emptyList());
underTest.purge(dbSession, conf, PurgeListener.EMPTY, new PurgeProfiler());
dbSession.commit();
- dbTester.assertDbUnit(getClass(), "shouldDeleteHistoricalDataOfDirectoriesAndFiles-result.xml", "projects", "snapshots", "project_measures");
+ db.assertDbUnit(getClass(), "shouldDeleteHistoricalDataOfDirectoriesAndFiles-result.xml", "projects", "snapshots", "project_measures");
}
@Test
public void close_issues_clean_index_and_file_sources_of_disabled_components_specified_by_uuid_in_configuration() {
// components and issues, updated 31 days ago
when(system2.now()).thenReturn(DateUtils.addDays(new Date(), -31).getTime());
- RuleDefinitionDto rule = dbTester.rules().insert();
- ComponentDto project = dbTester.components().insertMainBranch(p -> p.setEnabled(false));
- dbTester.components().insertSnapshot(project);
- dbTester.components().insertSnapshot(project);
- dbTester.components().insertSnapshot(project, s -> s.setLast(false));
-
- ComponentDto module = dbTester.components().insertComponent(newModuleDto(project).setEnabled(false));
- ComponentDto dir = dbTester.components().insertComponent(newDirectory(module, "sub").setEnabled(false));
- ComponentDto srcFile = dbTester.components().insertComponent(newFileDto(module, dir).setEnabled(false));
- ComponentDto testFile = dbTester.components().insertComponent(newFileDto(module, dir).setEnabled(false));
- ComponentDto nonSelectedFile = dbTester.components().insertComponent(newFileDto(module, dir).setEnabled(false));
- IssueDto openOnFile = dbTester.issues().insert(rule, project, srcFile, issue -> issue.setStatus("OPEN"));
- IssueDto confirmOnFile = dbTester.issues().insert(rule, project, srcFile, issue -> issue.setStatus("CONFIRM"));
- IssueDto openOnDir = dbTester.issues().insert(rule, project, dir, issue -> issue.setStatus("OPEN"));
- IssueDto confirmOnDir = dbTester.issues().insert(rule, project, dir, issue -> issue.setStatus("CONFIRM"));
- IssueDto openOnNonSelected = dbTester.issues().insert(rule, project, nonSelectedFile, issue -> issue.setStatus("OPEN"));
- IssueDto confirmOnNonSelected = dbTester.issues().insert(rule, project, nonSelectedFile, issue -> issue.setStatus("CONFIRM"));
-
- assertThat(dbTester.countSql("select count(*) from snapshots where purge_status = 1")).isEqualTo(0);
-
- assertThat(dbTester.countSql("select count(*) from issues where status = 'CLOSED'")).isEqualTo(0);
- assertThat(dbTester.countSql("select count(*) from issues where resolution = 'REMOVED'")).isEqualTo(0);
-
- dbTester.fileSources().insertFileSource(srcFile);
- dbTester.fileSources().insertFileSource(testFile, f -> f.setDataType("TEST"));
- FileSourceDto nonSelectedFileSource = dbTester.fileSources().insertFileSource(nonSelectedFile);
- assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(3);
+ RuleDefinitionDto rule = db.rules().insert();
+ ComponentDto project = db.components().insertMainBranch(p -> p.setEnabled(false));
+ db.components().insertSnapshot(project);
+ db.components().insertSnapshot(project);
+ db.components().insertSnapshot(project, s -> s.setLast(false));
+
+ ComponentDto module = db.components().insertComponent(newModuleDto(project).setEnabled(false));
+ ComponentDto dir = db.components().insertComponent(newDirectory(module, "sub").setEnabled(false));
+ ComponentDto srcFile = db.components().insertComponent(newFileDto(module, dir).setEnabled(false));
+ ComponentDto testFile = db.components().insertComponent(newFileDto(module, dir).setEnabled(false));
+ ComponentDto nonSelectedFile = db.components().insertComponent(newFileDto(module, dir).setEnabled(false));
+ IssueDto openOnFile = db.issues().insert(rule, project, srcFile, issue -> issue.setStatus("OPEN"));
+ IssueDto confirmOnFile = db.issues().insert(rule, project, srcFile, issue -> issue.setStatus("CONFIRM"));
+ IssueDto openOnDir = db.issues().insert(rule, project, dir, issue -> issue.setStatus("OPEN"));
+ IssueDto confirmOnDir = db.issues().insert(rule, project, dir, issue -> issue.setStatus("CONFIRM"));
+ IssueDto openOnNonSelected = db.issues().insert(rule, project, nonSelectedFile, issue -> issue.setStatus("OPEN"));
+ IssueDto confirmOnNonSelected = db.issues().insert(rule, project, nonSelectedFile, issue -> issue.setStatus("CONFIRM"));
+
+ assertThat(db.countSql("select count(*) from snapshots where purge_status = 1")).isEqualTo(0);
+
+ assertThat(db.countSql("select count(*) from issues where status = 'CLOSED'")).isEqualTo(0);
+ assertThat(db.countSql("select count(*) from issues where resolution = 'REMOVED'")).isEqualTo(0);
+
+ db.fileSources().insertFileSource(srcFile);
+ db.fileSources().insertFileSource(testFile, f -> f.setDataType("TEST"));
+ FileSourceDto nonSelectedFileSource = db.fileSources().insertFileSource(nonSelectedFile);
+ assertThat(db.countRowsOfTable("file_sources")).isEqualTo(3);
// back to present
when(system2.now()).thenReturn(new Date().getTime());
@@ -213,37 +215,37 @@ public class PurgeDaoTest {
dbSession.commit();
// set purge_status=1 for non-last snapshot
- assertThat(dbTester.countSql("select count(*) from snapshots where purge_status = 1")).isEqualTo(1);
+ assertThat(db.countSql("select count(*) from snapshots where purge_status = 1")).isEqualTo(1);
// close open issues of selected
- assertThat(dbTester.countSql("select count(*) from issues where status = 'CLOSED'")).isEqualTo(4);
+ assertThat(db.countSql("select count(*) from issues where status = 'CLOSED'")).isEqualTo(4);
for (IssueDto issue : Arrays.asList(openOnFile, confirmOnFile, openOnDir, confirmOnDir)) {
- assertThat(dbTester.getDbClient().issueDao().selectByKey(dbSession, issue.getKey()).get())
+ assertThat(db.getDbClient().issueDao().selectByKey(dbSession, issue.getKey()).get())
.extracting("status", "resolution")
.containsExactlyInAnyOrder("CLOSED", "REMOVED");
}
for (IssueDto issue : Arrays.asList(openOnNonSelected, confirmOnNonSelected)) {
- assertThat(dbTester.getDbClient().issueDao().selectByKey(dbSession, issue.getKey()).get())
+ assertThat(db.getDbClient().issueDao().selectByKey(dbSession, issue.getKey()).get())
.extracting("status", "resolution")
.containsExactlyInAnyOrder(issue.getStatus(), null);
}
// delete file sources of selected
- assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
- assertThat(dbTester.getDbClient().fileSourceDao().selectSourceByFileUuid(dbSession, nonSelectedFileSource.getFileUuid())).isNotNull();
+ assertThat(db.countRowsOfTable("file_sources")).isEqualTo(1);
+ assertThat(db.getDbClient().fileSourceDao().selectSourceByFileUuid(dbSession, nonSelectedFileSource.getFileUuid())).isNotNull();
}
@Test
public void shouldDeleteAnalyses() {
- dbTester.prepareDbUnit(getClass(), "shouldDeleteAnalyses.xml");
+ db.prepareDbUnit(getClass(), "shouldDeleteAnalyses.xml");
underTest.deleteAnalyses(dbSession, new PurgeProfiler(), ImmutableList.of(new IdUuidPair(3, "u3")));
- dbTester.assertDbUnit(getClass(), "shouldDeleteAnalyses-result.xml", "snapshots");
+ db.assertDbUnit(getClass(), "shouldDeleteAnalyses-result.xml", "snapshots");
}
@Test
public void selectPurgeableAnalyses() {
- dbTester.prepareDbUnit(getClass(), "shouldSelectPurgeableAnalysis.xml");
+ db.prepareDbUnit(getClass(), "shouldSelectPurgeableAnalysis.xml");
List<PurgeableAnalysisDto> analyses = underTest.selectPurgeableAnalyses(THE_PROJECT_UUID, dbSession);
assertThat(analyses).hasSize(3);
@@ -260,33 +262,53 @@ public class PurgeDaoTest {
@Test
public void delete_project_and_associated_data() {
- dbTester.prepareDbUnit(getClass(), "shouldDeleteProject.xml");
+ db.prepareDbUnit(getClass(), "shouldDeleteProject.xml");
underTest.deleteProject(dbSession, "A");
dbSession.commit();
- assertThat(dbTester.countRowsOfTable("projects")).isZero();
- assertThat(dbTester.countRowsOfTable("snapshots")).isZero();
- assertThat(dbTester.countRowsOfTable("issues")).isZero();
- assertThat(dbTester.countRowsOfTable("issue_changes")).isZero();
- assertThat(dbTester.countRowsOfTable("file_sources")).isZero();
+ assertThat(db.countRowsOfTable("projects")).isZero();
+ assertThat(db.countRowsOfTable("snapshots")).isZero();
+ assertThat(db.countRowsOfTable("issues")).isZero();
+ assertThat(db.countRowsOfTable("issue_changes")).isZero();
+ assertThat(db.countRowsOfTable("file_sources")).isZero();
+ }
+
+ @Test
+ public void delete_webhooks_from_project() {
+ OrganizationDto organization = db.organizations().insert();
+ ComponentDto project1 = db.components().insertPrivateProject(organization);
+ WebhookDto webhook = db.webhooks().insertWebhook(project1);
+ db.webhookDelivery().insert(webhook);
+ ComponentDto projectNotToBeDeleted = db.components().insertPrivateProject(organization);
+ WebhookDto webhookNotDeleted = db.webhooks().insertWebhook(projectNotToBeDeleted);
+ WebhookDeliveryLiteDto webhookDeliveryNotDeleted = db.webhookDelivery().insert(webhookNotDeleted);
+
+ underTest.deleteProject(dbSession, project1.uuid());
+
+ assertThat(db.select(db.getSession(), "select uuid as \"uuid\" from webhooks"))
+ .extracting(m -> m.get("uuid"))
+ .containsExactlyInAnyOrder(webhookNotDeleted.getUuid());
+ assertThat(db.select(db.getSession(), "select uuid as \"uuid\" from webhook_deliveries"))
+ .extracting(m -> m.get("uuid"))
+ .containsExactlyInAnyOrder(webhookDeliveryNotDeleted.getUuid());
}
@Test
public void delete_branch_and_associated_data() {
- ComponentDto project = dbTester.components().insertMainBranch();
- ComponentDto branch = dbTester.components().insertProjectBranch(project);
+ ComponentDto project = db.components().insertMainBranch();
+ ComponentDto branch = db.components().insertProjectBranch(project);
underTest.deleteBranch(dbSession, project.uuid());
dbSession.commit();
- assertThat(dbTester.countRowsOfTable("project_branches")).isEqualTo(1);
- assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(1);
+ assertThat(db.countRowsOfTable("project_branches")).isEqualTo(1);
+ assertThat(db.countRowsOfTable("projects")).isEqualTo(1);
}
@Test
public void delete_row_in_ce_activity_when_deleting_project() {
- ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
- ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
+ ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
+ ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
dbClient.componentDao().insert(dbSession, projectToBeDeleted, anotherLivingProject);
// Insert 2 rows in CE_ACTIVITY : one for the project that will be deleted, and one on another project
@@ -297,13 +319,13 @@ public class PurgeDaoTest {
underTest.deleteProject(dbSession, projectToBeDeleted.uuid());
dbSession.commit();
- assertThat(dbTester.countRowsOfTable("ce_activity")).isEqualTo(1);
+ assertThat(db.countRowsOfTable("ce_activity")).isEqualTo(1);
}
@Test
public void delete_row_in_ce_task_input_referring_to_a_row_in_ce_activity_when_deleting_project() {
- ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
- ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
+ ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
+ ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
dbClient.componentDao().insert(dbSession, projectToBeDeleted, anotherLivingProject);
// Insert 2 rows in CE_ACTIVITY : one for the project that will be deleted, and one on another project
@@ -317,18 +339,18 @@ public class PurgeDaoTest {
underTest.deleteProject(dbSession, projectToBeDeleted.uuid());
dbSession.commit();
- assertThat(dbTester.select("select uuid as \"UUID\" from ce_activity"))
+ assertThat(db.select("select uuid as \"UUID\" from ce_activity"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid());
- assertThat(dbTester.select("select task_uuid as \"UUID\" from ce_task_input"))
+ assertThat(db.select("select task_uuid as \"UUID\" from ce_task_input"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid(), "non existing task");
}
@Test
public void delete_row_in_ce_scanner_context_referring_to_a_row_in_ce_activity_when_deleting_project() {
- ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
- ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
+ ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
+ ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
dbClient.componentDao().insert(dbSession, projectToBeDeleted, anotherLivingProject);
// Insert 2 rows in CE_ACTIVITY : one for the project that will be deleted, and one on another project
@@ -342,18 +364,18 @@ public class PurgeDaoTest {
underTest.deleteProject(dbSession, projectToBeDeleted.uuid());
dbSession.commit();
- assertThat(dbTester.select("select uuid as \"UUID\" from ce_activity"))
+ assertThat(db.select("select uuid as \"UUID\" from ce_activity"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid());
- assertThat(dbTester.select("select task_uuid as \"UUID\" from ce_scanner_context"))
+ assertThat(db.select("select task_uuid as \"UUID\" from ce_scanner_context"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid(), "non existing task");
}
@Test
public void delete_row_in_ce_task_characteristics_referring_to_a_row_in_ce_activity_when_deleting_project() {
- ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
- ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
+ ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
+ ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
dbClient.componentDao().insert(dbSession, projectToBeDeleted, anotherLivingProject);
// Insert 2 rows in CE_ACTIVITY : one for the project that will be deleted, and one on another project
@@ -367,18 +389,18 @@ public class PurgeDaoTest {
underTest.deleteProject(dbSession, projectToBeDeleted.uuid());
dbSession.commit();
- assertThat(dbTester.select("select uuid as \"UUID\" from ce_activity"))
+ assertThat(db.select("select uuid as \"UUID\" from ce_activity"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid());
- assertThat(dbTester.select("select task_uuid as \"UUID\" from ce_task_characteristics"))
+ assertThat(db.select("select task_uuid as \"UUID\" from ce_task_characteristics"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid(), "non existing task");
}
@Test
public void delete_tasks_in_ce_queue_when_deleting_project() {
- ComponentDto projectToBeDeleted = dbTester.components().insertPrivateProject();
- ComponentDto anotherLivingProject = dbTester.components().insertPrivateProject();
+ ComponentDto projectToBeDeleted = db.components().insertPrivateProject();
+ ComponentDto anotherLivingProject = db.components().insertPrivateProject();
// Insert 3 rows in CE_QUEUE: two for the project that will be deleted (in order to check that status
// is not involved in deletion), and one on another project
@@ -390,14 +412,14 @@ public class PurgeDaoTest {
underTest.deleteProject(dbSession, projectToBeDeleted.uuid());
dbSession.commit();
- assertThat(dbTester.countRowsOfTable("ce_queue")).isEqualTo(1);
- assertThat(dbTester.countSql("select count(*) from ce_queue where component_uuid='" + projectToBeDeleted.uuid() + "'")).isEqualTo(0);
+ assertThat(db.countRowsOfTable("ce_queue")).isEqualTo(1);
+ assertThat(db.countSql("select count(*) from ce_queue where component_uuid='" + projectToBeDeleted.uuid() + "'")).isEqualTo(0);
}
@Test
public void delete_row_in_ce_task_input_referring_to_a_row_in_ce_queue_when_deleting_project() {
- ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
- ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
+ ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
+ ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
dbClient.componentDao().insert(dbSession, projectToBeDeleted, anotherLivingProject);
// Insert 2 rows in CE_ACTIVITY : one for the project that will be deleted, and one on another project
@@ -411,18 +433,18 @@ public class PurgeDaoTest {
underTest.deleteProject(dbSession, projectToBeDeleted.uuid());
dbSession.commit();
- assertThat(dbTester.select("select uuid as \"UUID\" from ce_queue"))
+ assertThat(db.select("select uuid as \"UUID\" from ce_queue"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid());
- assertThat(dbTester.select("select task_uuid as \"UUID\" from ce_task_input"))
+ assertThat(db.select("select task_uuid as \"UUID\" from ce_task_input"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid(), "non existing task");
}
@Test
public void delete_row_in_ce_scanner_context_referring_to_a_row_in_ce_queue_when_deleting_project() {
- ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
- ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
+ ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
+ ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
dbClient.componentDao().insert(dbSession, projectToBeDeleted, anotherLivingProject);
// Insert 2 rows in CE_ACTIVITY : one for the project that will be deleted, and one on another project
@@ -436,18 +458,18 @@ public class PurgeDaoTest {
underTest.deleteProject(dbSession, projectToBeDeleted.uuid());
dbSession.commit();
- assertThat(dbTester.select("select uuid as \"UUID\" from ce_queue"))
+ assertThat(db.select("select uuid as \"UUID\" from ce_queue"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid());
- assertThat(dbTester.select("select task_uuid as \"UUID\" from ce_scanner_context"))
+ assertThat(db.select("select task_uuid as \"UUID\" from ce_scanner_context"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid(), "non existing task");
}
@Test
public void delete_row_in_ce_task_characteristics_referring_to_a_row_in_ce_queue_when_deleting_project() {
- ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
- ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(dbTester.getDefaultOrganization());
+ ComponentDto projectToBeDeleted = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
+ ComponentDto anotherLivingProject = ComponentTesting.newPrivateProjectDto(db.getDefaultOrganization());
dbClient.componentDao().insert(dbSession, projectToBeDeleted, anotherLivingProject);
// Insert 2 rows in CE_ACTIVITY : one for the project that will be deleted, and one on another project
@@ -461,61 +483,61 @@ public class PurgeDaoTest {
underTest.deleteProject(dbSession, projectToBeDeleted.uuid());
dbSession.commit();
- assertThat(dbTester.select("select uuid as \"UUID\" from ce_queue"))
+ assertThat(db.select("select uuid as \"UUID\" from ce_queue"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid());
- assertThat(dbTester.select("select task_uuid as \"UUID\" from ce_task_characteristics"))
+ assertThat(db.select("select task_uuid as \"UUID\" from ce_task_characteristics"))
.extracting(row -> (String) row.get("UUID"))
.containsOnly(toNotDelete.getUuid(), "non existing task");
}
private ComponentDto insertProjectWithBranchAndRelatedData() {
- RuleDefinitionDto rule = dbTester.rules().insert();
- ComponentDto project = dbTester.components().insertMainBranch();
- ComponentDto branch = dbTester.components().insertProjectBranch(project);
- ComponentDto module = dbTester.components().insertComponent(newModuleDto(branch));
- ComponentDto subModule = dbTester.components().insertComponent(newModuleDto(module));
- ComponentDto file = dbTester.components().insertComponent(newFileDto(subModule));
- dbTester.issues().insert(rule, branch, file);
- dbTester.issues().insert(rule, branch, subModule);
- dbTester.issues().insert(rule, branch, module);
+ RuleDefinitionDto rule = db.rules().insert();
+ ComponentDto project = db.components().insertMainBranch();
+ ComponentDto branch = db.components().insertProjectBranch(project);
+ ComponentDto module = db.components().insertComponent(newModuleDto(branch));
+ ComponentDto subModule = db.components().insertComponent(newModuleDto(module));
+ ComponentDto file = db.components().insertComponent(newFileDto(subModule));
+ db.issues().insert(rule, branch, file);
+ db.issues().insert(rule, branch, subModule);
+ db.issues().insert(rule, branch, module);
return project;
}
@Test
public void delete_branch_content_when_deleting_project() {
ComponentDto anotherLivingProject = insertProjectWithBranchAndRelatedData();
- int projectEntryCount = dbTester.countRowsOfTable("projects");
- int issueCount = dbTester.countRowsOfTable("issues");
- int branchCount = dbTester.countRowsOfTable("project_branches");
+ int projectEntryCount = db.countRowsOfTable("projects");
+ int issueCount = db.countRowsOfTable("issues");
+ int branchCount = db.countRowsOfTable("project_branches");
ComponentDto projectToDelete = insertProjectWithBranchAndRelatedData();
- assertThat(dbTester.countRowsOfTable("projects")).isGreaterThan(projectEntryCount);
- assertThat(dbTester.countRowsOfTable("issues")).isGreaterThan(issueCount);
- assertThat(dbTester.countRowsOfTable("project_branches")).isGreaterThan(branchCount);
+ assertThat(db.countRowsOfTable("projects")).isGreaterThan(projectEntryCount);
+ assertThat(db.countRowsOfTable("issues")).isGreaterThan(issueCount);
+ assertThat(db.countRowsOfTable("project_branches")).isGreaterThan(branchCount);
underTest.deleteProject(dbSession, projectToDelete.uuid());
dbSession.commit();
- assertThat(dbTester.countRowsOfTable("projects")).isEqualTo(projectEntryCount);
- assertThat(dbTester.countRowsOfTable("issues")).isEqualTo(issueCount);
- assertThat(dbTester.countRowsOfTable("project_branches")).isEqualTo(branchCount);
+ assertThat(db.countRowsOfTable("projects")).isEqualTo(projectEntryCount);
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(issueCount);
+ assertThat(db.countRowsOfTable("project_branches")).isEqualTo(branchCount);
}
@Test
public void delete_view_and_child() {
- dbTester.prepareDbUnit(getClass(), "view_sub_view_and_tech_project.xml");
+ db.prepareDbUnit(getClass(), "view_sub_view_and_tech_project.xml");
underTest.deleteProject(dbSession, "A");
dbSession.commit();
- assertThat(dbTester.countSql("select count(1) from projects where uuid='A'")).isZero();
- assertThat(dbTester.countRowsOfTable("projects")).isZero();
+ assertThat(db.countSql("select count(1) from projects where uuid='A'")).isZero();
+ assertThat(db.countRowsOfTable("projects")).isZero();
}
@Test
public void deleteProject_fails_with_IAE_if_specified_component_is_module() {
- ComponentDto privateProject = dbTester.components().insertPrivateProject();
- ComponentDto module = dbTester.components().insertComponent(ComponentTesting.newModuleDto(privateProject));
+ ComponentDto privateProject = db.components().insertPrivateProject();
+ ComponentDto module = db.components().insertComponent(ComponentTesting.newModuleDto(privateProject));
expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("Couldn't find root component with uuid " + module.uuid());
@@ -525,8 +547,8 @@ public class PurgeDaoTest {
@Test
public void deleteProject_fails_with_IAE_if_specified_component_is_directory() {
- ComponentDto privateProject = dbTester.components().insertPrivateProject();
- ComponentDto directory = dbTester.components().insertComponent(newDirectory(privateProject, "A/B"));
+ ComponentDto privateProject = db.components().insertPrivateProject();
+ ComponentDto directory = db.components().insertComponent(newDirectory(privateProject, "A/B"));
expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("Couldn't find root component with uuid " + directory.uuid());
@@ -536,8 +558,8 @@ public class PurgeDaoTest {
@Test
public void deleteProject_fails_with_IAE_if_specified_component_is_file() {
- ComponentDto privateProject = dbTester.components().insertPrivateProject();
- ComponentDto file = dbTester.components().insertComponent(newFileDto(privateProject));
+ ComponentDto privateProject = db.components().insertPrivateProject();
+ ComponentDto file = db.components().insertComponent(newFileDto(privateProject));
expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("Couldn't find root component with uuid " + file.uuid());
@@ -547,8 +569,8 @@ public class PurgeDaoTest {
@Test
public void deleteProject_fails_with_IAE_if_specified_component_is_subview() {
- ComponentDto view = dbTester.components().insertView();
- ComponentDto subview = dbTester.components().insertComponent(ComponentTesting.newSubView(view));
+ ComponentDto view = db.components().insertView();
+ ComponentDto subview = db.components().insertComponent(ComponentTesting.newSubView(view));
expectedException.expect(IllegalArgumentException.class);
expectedException.expectMessage("Couldn't find root component with uuid " + subview.uuid());
@@ -558,60 +580,60 @@ public class PurgeDaoTest {
@Test
public void delete_view_sub_view_and_tech_project() {
- dbTester.prepareDbUnit(getClass(), "view_sub_view_and_tech_project.xml");
+ db.prepareDbUnit(getClass(), "view_sub_view_and_tech_project.xml");
// view
underTest.deleteProject(dbSession, "A");
dbSession.commit();
- assertThat(dbTester.countSql("select count(1) from projects where uuid='A'")).isZero();
+ assertThat(db.countSql("select count(1) from projects where uuid='A'")).isZero();
}
@Test
public void should_delete_old_closed_issues() {
- RuleDefinitionDto rule = dbTester.rules().insert();
- ComponentDto project = dbTester.components().insertMainBranch();
+ RuleDefinitionDto rule = db.rules().insert();
+ ComponentDto project = db.components().insertMainBranch();
- ComponentDto module = dbTester.components().insertComponent(newModuleDto(project));
- ComponentDto file = dbTester.components().insertComponent(newFileDto(module));
+ ComponentDto module = db.components().insertComponent(newModuleDto(project));
+ ComponentDto file = db.components().insertComponent(newFileDto(module));
- IssueDto oldClosed = dbTester.issues().insert(rule, project, file, issue -> {
+ IssueDto oldClosed = db.issues().insert(rule, project, file, issue -> {
issue.setStatus("CLOSED");
issue.setIssueCloseDate(DateUtils.addDays(new Date(), -31));
});
- IssueDto notOldEnoughClosed = dbTester.issues().insert(rule, project, file, issue -> {
+ IssueDto notOldEnoughClosed = db.issues().insert(rule, project, file, issue -> {
issue.setStatus("CLOSED");
issue.setIssueCloseDate(new Date());
});
- IssueDto notClosed = dbTester.issues().insert(rule, project, file);
+ IssueDto notClosed = db.issues().insert(rule, project, file);
when(system2.now()).thenReturn(new Date().getTime());
underTest.purge(dbSession, newConfigurationWith30Days(system2, project.uuid()), PurgeListener.EMPTY, new PurgeProfiler());
dbSession.commit();
// old closed got deleted
- assertThat(dbTester.getDbClient().issueDao().selectByKey(dbSession, oldClosed.getKey())).isEmpty();
+ assertThat(db.getDbClient().issueDao().selectByKey(dbSession, oldClosed.getKey())).isEmpty();
// others remain
- assertThat(dbTester.countRowsOfTable("issues")).isEqualTo(2);
- assertThat(dbTester.getDbClient().issueDao().selectByKey(dbSession, notOldEnoughClosed.getKey())).isNotEmpty();
- assertThat(dbTester.getDbClient().issueDao().selectByKey(dbSession, notClosed.getKey())).isNotEmpty();
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(2);
+ assertThat(db.getDbClient().issueDao().selectByKey(dbSession, notOldEnoughClosed.getKey())).isNotEmpty();
+ assertThat(db.getDbClient().issueDao().selectByKey(dbSession, notClosed.getKey())).isNotEmpty();
}
@Test
public void deleteProject_deletes_webhook_deliveries() {
- ComponentDto project = dbTester.components().insertPublicProject();
+ ComponentDto project = db.components().insertPublicProject();
dbClient.webhookDeliveryDao().insert(dbSession, newDto().setComponentUuid(project.uuid()).setUuid("D1").setDurationMs(1000).setWebhookUuid("webhook-uuid"));
dbClient.webhookDeliveryDao().insert(dbSession, newDto().setComponentUuid("P2").setUuid("D2").setDurationMs(1000).setWebhookUuid("webhook-uuid"));
underTest.deleteProject(dbSession, project.uuid());
- assertThat(selectAllDeliveryUuids(dbTester, dbSession)).containsOnly("D2");
+ assertThat(selectAllDeliveryUuids(db, dbSession)).containsOnly("D2");
}
@Test
public void deleteProject_deletes_project_mappings() {
- ComponentDto project = dbTester.components().insertPublicProject();
+ ComponentDto project = db.components().insertPublicProject();
dbClient.projectMappingsDao().put(dbSession, "a.key.type", "a.key", project.uuid());
dbClient.projectMappingsDao().put(dbSession, "a.key.type", "another.key", "D2");
@@ -627,8 +649,8 @@ public class PurgeDaoTest {
String repoId = "123";
String otherRepoId = repoId + "-foo";
- ComponentDto project = dbTester.components().insertPublicProject();
- ComponentDto otherProject = dbTester.components().insertPublicProject();
+ ComponentDto project = db.components().insertPublicProject();
+ ComponentDto otherProject = db.components().insertPublicProject();
dbClient.projectAlmBindingsDao().insertOrUpdate(dbSession, alm, repoId, project.uuid(), null, "foo");
dbClient.projectAlmBindingsDao().insertOrUpdate(dbSession, alm, otherRepoId, otherProject.uuid(), null, "bar");
@@ -649,7 +671,7 @@ public class PurgeDaoTest {
@Test
public void deleteNonRootComponents_has_no_effect_when_parameter_contains_only_projects_and_or_views() {
- ComponentDbTester componentDbTester = dbTester.components();
+ ComponentDbTester componentDbTester = db.components();
verifyNoEffect(componentDbTester.insertPrivateProject());
verifyNoEffect(componentDbTester.insertPublicProject());
@@ -659,17 +681,17 @@ public class PurgeDaoTest {
@Test
public void delete_live_measures_when_deleting_project() {
- MetricDto metric = dbTester.measures().insertMetric();
+ MetricDto metric = db.measures().insertMetric();
- ComponentDto project1 = dbTester.components().insertPublicProject();
- ComponentDto module1 = dbTester.components().insertComponent(ComponentTesting.newModuleDto(project1));
- dbTester.measures().insertLiveMeasure(project1, metric);
- dbTester.measures().insertLiveMeasure(module1, metric);
+ ComponentDto project1 = db.components().insertPublicProject();
+ ComponentDto module1 = db.components().insertComponent(ComponentTesting.newModuleDto(project1));
+ db.measures().insertLiveMeasure(project1, metric);
+ db.measures().insertLiveMeasure(module1, metric);
- ComponentDto project2 = dbTester.components().insertPublicProject();
- ComponentDto module2 = dbTester.components().insertComponent(ComponentTesting.newModuleDto(project2));
- dbTester.measures().insertLiveMeasure(project2, metric);
- dbTester.measures().insertLiveMeasure(module2, metric);
+ ComponentDto project2 = db.components().insertPublicProject();
+ ComponentDto module2 = db.components().insertComponent(ComponentTesting.newModuleDto(project2));
+ db.measures().insertLiveMeasure(project2, metric);
+ db.measures().insertLiveMeasure(module2, metric);
underTest.deleteProject(dbSession, project1.uuid());
@@ -689,20 +711,20 @@ public class PurgeDaoTest {
@Test
public void deleteNonRootComponents_deletes_only_non_root_components_of_a_project_from_table_PROJECTS() {
- ComponentDto project = new Random().nextBoolean() ? dbTester.components().insertPublicProject() : dbTester.components().insertPrivateProject();
- ComponentDto module1 = dbTester.components().insertComponent(ComponentTesting.newModuleDto(project));
- ComponentDto module2 = dbTester.components().insertComponent(ComponentTesting.newModuleDto(module1));
- ComponentDto dir1 = dbTester.components().insertComponent(newDirectory(module1, "A/B"));
+ ComponentDto project = new Random().nextBoolean() ? db.components().insertPublicProject() : db.components().insertPrivateProject();
+ ComponentDto module1 = db.components().insertComponent(ComponentTesting.newModuleDto(project));
+ ComponentDto module2 = db.components().insertComponent(ComponentTesting.newModuleDto(module1));
+ ComponentDto dir1 = db.components().insertComponent(newDirectory(module1, "A/B"));
List<ComponentDto> components = asList(
project,
module1,
module2,
dir1,
- dbTester.components().insertComponent(newDirectory(module2, "A/C")),
- dbTester.components().insertComponent(newFileDto(dir1)),
- dbTester.components().insertComponent(newFileDto(module2)),
- dbTester.components().insertComponent(newFileDto(project)));
+ db.components().insertComponent(newDirectory(module2, "A/C")),
+ db.components().insertComponent(newFileDto(dir1)),
+ db.components().insertComponent(newFileDto(module2)),
+ db.components().insertComponent(newFileDto(project)));
Collections.shuffle(components);
underTest.deleteNonRootComponentsInView(dbSession, components);
@@ -714,21 +736,21 @@ public class PurgeDaoTest {
@Test
public void deleteNonRootComponents_deletes_only_non_root_components_of_a_view_from_table_PROJECTS() {
ComponentDto[] projects = {
- dbTester.components().insertPrivateProject(),
- dbTester.components().insertPrivateProject(),
- dbTester.components().insertPrivateProject()
+ db.components().insertPrivateProject(),
+ db.components().insertPrivateProject(),
+ db.components().insertPrivateProject()
};
- ComponentDto view = dbTester.components().insertView();
- ComponentDto subview1 = dbTester.components().insertComponent(ComponentTesting.newSubView(view));
- ComponentDto subview2 = dbTester.components().insertComponent(ComponentTesting.newSubView(subview1));
+ ComponentDto view = db.components().insertView();
+ ComponentDto subview1 = db.components().insertComponent(ComponentTesting.newSubView(view));
+ ComponentDto subview2 = db.components().insertComponent(ComponentTesting.newSubView(subview1));
List<ComponentDto> components = asList(
view,
subview1,
subview2,
- dbTester.components().insertComponent(newProjectCopy("a", projects[0], view)),
- dbTester.components().insertComponent(newProjectCopy("b", projects[1], subview1)),
- dbTester.components().insertComponent(newProjectCopy("c", projects[2], subview2)));
+ db.components().insertComponent(newProjectCopy("a", projects[0], view)),
+ db.components().insertComponent(newProjectCopy("b", projects[1], subview1)),
+ db.components().insertComponent(newProjectCopy("c", projects[2], subview2)));
Collections.shuffle(components);
underTest.deleteNonRootComponentsInView(dbSession, components);
@@ -738,19 +760,19 @@ public class PurgeDaoTest {
}
private Stream<String> getUuidsInTableProjects() {
- return dbTester.select("select uuid as \"UUID\" from projects").stream().map(row -> (String) row.get("UUID"));
+ return db.select("select uuid as \"UUID\" from projects").stream().map(row -> (String) row.get("UUID"));
}
@Test
public void deleteNonRootComponents_deletes_only_specified_non_root_components_of_a_project_from_table_PROJECTS() {
- ComponentDto project = new Random().nextBoolean() ? dbTester.components().insertPublicProject() : dbTester.components().insertPrivateProject();
- ComponentDto module1 = dbTester.components().insertComponent(ComponentTesting.newModuleDto(project));
- ComponentDto module2 = dbTester.components().insertComponent(ComponentTesting.newModuleDto(module1));
- ComponentDto dir1 = dbTester.components().insertComponent(newDirectory(module1, "A/B"));
- ComponentDto dir2 = dbTester.components().insertComponent(newDirectory(module2, "A/C"));
- ComponentDto file1 = dbTester.components().insertComponent(newFileDto(dir1));
- ComponentDto file2 = dbTester.components().insertComponent(newFileDto(module2));
- ComponentDto file3 = dbTester.components().insertComponent(newFileDto(project));
+ ComponentDto project = new Random().nextBoolean() ? db.components().insertPublicProject() : db.components().insertPrivateProject();
+ ComponentDto module1 = db.components().insertComponent(ComponentTesting.newModuleDto(project));
+ ComponentDto module2 = db.components().insertComponent(ComponentTesting.newModuleDto(module1));
+ ComponentDto dir1 = db.components().insertComponent(newDirectory(module1, "A/B"));
+ ComponentDto dir2 = db.components().insertComponent(newDirectory(module2, "A/C"));
+ ComponentDto file1 = db.components().insertComponent(newFileDto(dir1));
+ ComponentDto file2 = db.components().insertComponent(newFileDto(module2));
+ ComponentDto file3 = db.components().insertComponent(newFileDto(project));
underTest.deleteNonRootComponentsInView(dbSession, singletonList(file3));
assertThat(getUuidsInTableProjects())
@@ -764,17 +786,17 @@ public class PurgeDaoTest {
@Test
public void deleteNonRootComponents_deletes_only_specified_non_root_components_of_a_view_from_table_PROJECTS() {
ComponentDto[] projects = {
- dbTester.components().insertPrivateProject(),
- dbTester.components().insertPrivateProject(),
- dbTester.components().insertPrivateProject()
+ db.components().insertPrivateProject(),
+ db.components().insertPrivateProject(),
+ db.components().insertPrivateProject()
};
- ComponentDto view = dbTester.components().insertView();
- ComponentDto subview1 = dbTester.components().insertComponent(ComponentTesting.newSubView(view));
- ComponentDto subview2 = dbTester.components().insertComponent(ComponentTesting.newSubView(subview1));
- ComponentDto pc1 = dbTester.components().insertComponent(newProjectCopy("a", projects[0], view));
- ComponentDto pc2 = dbTester.components().insertComponent(newProjectCopy("b", projects[1], subview1));
- ComponentDto pc3 = dbTester.components().insertComponent(newProjectCopy("c", projects[2], subview2));
+ ComponentDto view = db.components().insertView();
+ ComponentDto subview1 = db.components().insertComponent(ComponentTesting.newSubView(view));
+ ComponentDto subview2 = db.components().insertComponent(ComponentTesting.newSubView(subview1));
+ ComponentDto pc1 = db.components().insertComponent(newProjectCopy("a", projects[0], view));
+ ComponentDto pc2 = db.components().insertComponent(newProjectCopy("b", projects[1], subview1));
+ ComponentDto pc3 = db.components().insertComponent(newProjectCopy("c", projects[2], subview2));
underTest.deleteNonRootComponentsInView(dbSession, singletonList(pc3));
assertThat(getUuidsInTableProjects())
@@ -788,9 +810,9 @@ public class PurgeDaoTest {
@Test
public void deleteNonRootComponents_deletes_measures_of_any_non_root_component_of_a_view() {
- ComponentDto view = dbTester.components().insertView();
- ComponentDto subview = dbTester.components().insertComponent(ComponentTesting.newSubView(view));
- ComponentDto pc = dbTester.components().insertComponent(newProjectCopy("a", dbTester.components().insertPrivateProject(), view));
+ ComponentDto view = db.components().insertView();
+ ComponentDto subview = db.components().insertComponent(ComponentTesting.newSubView(view));
+ ComponentDto pc = db.components().insertComponent(newProjectCopy("a", db.components().insertPrivateProject(), view));
insertMeasureFor(view, subview, pc);
assertThat(getComponentUuidsOfMeasures()).containsOnly(view.uuid(), subview.uuid(), pc.uuid());
@@ -805,11 +827,11 @@ public class PurgeDaoTest {
@Test
public void deleteNonRootComponents_deletes_properties_of_subviews_of_a_view() {
- ComponentDto view = dbTester.components().insertView();
- ComponentDto subview1 = dbTester.components().insertComponent(ComponentTesting.newSubView(view));
- ComponentDto subview2 = dbTester.components().insertComponent(ComponentTesting.newSubView(subview1));
- ComponentDto subview3 = dbTester.components().insertComponent(ComponentTesting.newSubView(view));
- ComponentDto pc = dbTester.components().insertComponent(newProjectCopy("a", dbTester.components().insertPrivateProject(), view));
+ ComponentDto view = db.components().insertView();
+ ComponentDto subview1 = db.components().insertComponent(ComponentTesting.newSubView(view));
+ ComponentDto subview2 = db.components().insertComponent(ComponentTesting.newSubView(subview1));
+ ComponentDto subview3 = db.components().insertComponent(ComponentTesting.newSubView(view));
+ ComponentDto pc = db.components().insertComponent(newProjectCopy("a", db.components().insertPrivateProject(), view));
insertPropertyFor(view, subview1, subview2, subview3, pc);
assertThat(getResourceIdOfProperties()).containsOnly(view.getId(), subview1.getId(), subview2.getId(), subview3.getId(), pc.getId());
@@ -824,11 +846,11 @@ public class PurgeDaoTest {
@Test
public void deleteNonRootComponentsInView_deletes_manual_measures_of_subviews_of_a_view() {
- ComponentDto view = dbTester.components().insertView();
- ComponentDto subview1 = dbTester.components().insertComponent(ComponentTesting.newSubView(view));
- ComponentDto subview2 = dbTester.components().insertComponent(ComponentTesting.newSubView(subview1));
- ComponentDto subview3 = dbTester.components().insertComponent(ComponentTesting.newSubView(view));
- ComponentDto pc = dbTester.components().insertComponent(newProjectCopy("a", dbTester.components().insertPrivateProject(), view));
+ ComponentDto view = db.components().insertView();
+ ComponentDto subview1 = db.components().insertComponent(ComponentTesting.newSubView(view));
+ ComponentDto subview2 = db.components().insertComponent(ComponentTesting.newSubView(subview1));
+ ComponentDto subview3 = db.components().insertComponent(ComponentTesting.newSubView(view));
+ ComponentDto pc = db.components().insertComponent(newProjectCopy("a", db.components().insertPrivateProject(), view));
insertManualMeasureFor(view, subview1, subview2, subview3, pc);
assertThat(getComponentUuidsOfManualMeasures()).containsOnly(view.uuid(), subview1.uuid(), subview2.uuid(), subview3.uuid(), pc.uuid());
@@ -849,29 +871,29 @@ public class PurgeDaoTest {
}
private Stream<String> getComponentUuidsOfManualMeasures() {
- return dbTester.select("select component_uuid as \"COMPONENT_UUID\" from manual_measures").stream()
+ return db.select("select component_uuid as \"COMPONENT_UUID\" from manual_measures").stream()
.map(row -> (String) row.get("COMPONENT_UUID"));
}
private Stream<Long> getResourceIdOfProperties() {
- return dbTester.select("select resource_id as \"ID\" from properties").stream()
+ return db.select("select resource_id as \"ID\" from properties").stream()
.map(row -> (Long) row.get("ID"));
}
private void insertPropertyFor(ComponentDto... components) {
- Stream.of(components).forEach(componentDto -> dbTester.properties().insertProperty(new PropertyDto()
+ Stream.of(components).forEach(componentDto -> db.properties().insertProperty(new PropertyDto()
.setKey(randomAlphabetic(3))
.setValue(randomAlphabetic(3))
.setResourceId(componentDto.getId())));
}
private Stream<String> getComponentUuidsOfMeasures() {
- return dbTester.select("select component_uuid as \"COMPONENT_UUID\" from project_measures").stream()
+ return db.select("select component_uuid as \"COMPONENT_UUID\" from project_measures").stream()
.map(row -> (String) row.get("COMPONENT_UUID"));
}
private void insertMeasureFor(ComponentDto... components) {
- Arrays.stream(components).forEach(componentDto -> dbTester.getDbClient().measureDao().insert(dbSession, new MeasureDto()
+ Arrays.stream(components).forEach(componentDto -> db.getDbClient().measureDao().insert(dbSession, new MeasureDto()
.setMetricId(new Random().nextInt())
.setComponentUuid(componentDto.uuid())
.setAnalysisUuid(randomAlphabetic(3))));
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryDaoTest.java
index c3c83a7cb3a..1223d27001d 100644
--- a/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryDaoTest.java
+++ b/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryDaoTest.java
@@ -58,7 +58,7 @@ public class WebhookDeliveryDaoTest {
@Test
public void selectOrderedByComponentUuid_returns_empty_if_no_records() {
- underTest.insert(dbSession, WebhookDbTesting.newDto("D1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1"));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("D1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1"));
List<WebhookDeliveryLiteDto> deliveries = underTest.selectOrderedByComponentUuid(dbSession, "ANOTHER_COMPONENT", 0, 10);
@@ -67,9 +67,9 @@ public class WebhookDeliveryDaoTest {
@Test
public void selectOrderedByComponentUuid_returns_records_ordered_by_date() {
- WebhookDeliveryDto dto1 = WebhookDbTesting.newDto("D1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(BEFORE);
- WebhookDeliveryDto dto2 = WebhookDbTesting.newDto("D2", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(NOW);
- WebhookDeliveryDto dto3 = WebhookDbTesting.newDto("D3", "WEBHOOK_UUID_1", "COMPONENT_2", "TASK_1").setCreatedAt(NOW);
+ WebhookDeliveryDto dto1 = WebhookDeliveryTesting.newDto("D1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(BEFORE);
+ WebhookDeliveryDto dto2 = WebhookDeliveryTesting.newDto("D2", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(NOW);
+ WebhookDeliveryDto dto3 = WebhookDeliveryTesting.newDto("D3", "WEBHOOK_UUID_1", "COMPONENT_2", "TASK_1").setCreatedAt(NOW);
underTest.insert(dbSession, dto3);
underTest.insert(dbSession, dto2);
underTest.insert(dbSession, dto1);
@@ -81,7 +81,7 @@ public class WebhookDeliveryDaoTest {
@Test
public void selectOrderedByCeTaskUuid_returns_empty_if_no_records() {
- underTest.insert(dbSession, WebhookDbTesting.newDto("D1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1"));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("D1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1"));
List<WebhookDeliveryLiteDto> deliveries = underTest.selectOrderedByCeTaskUuid(dbSession, "ANOTHER_TASK", 0, 10);
@@ -90,9 +90,9 @@ public class WebhookDeliveryDaoTest {
@Test
public void selectOrderedByCeTaskUuid_returns_records_ordered_by_date() {
- WebhookDeliveryDto dto1 = WebhookDbTesting.newDto("D1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(BEFORE);
- WebhookDeliveryDto dto2 = WebhookDbTesting.newDto("D2", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(NOW);
- WebhookDeliveryDto dto3 = WebhookDbTesting.newDto("D3", "WEBHOOK_UUID_1", "COMPONENT_2", "TASK_2").setCreatedAt(NOW);
+ WebhookDeliveryDto dto1 = WebhookDeliveryTesting.newDto("D1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(BEFORE);
+ WebhookDeliveryDto dto2 = WebhookDeliveryTesting.newDto("D2", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(NOW);
+ WebhookDeliveryDto dto3 = WebhookDeliveryTesting.newDto("D3", "WEBHOOK_UUID_1", "COMPONENT_2", "TASK_2").setCreatedAt(NOW);
underTest.insert(dbSession, dto3);
underTest.insert(dbSession, dto2);
underTest.insert(dbSession, dto1);
@@ -105,7 +105,7 @@ public class WebhookDeliveryDaoTest {
@Test
public void selectByWebhookUuid_returns_empty_if_no_records() {
- underTest.insert(dbSession, WebhookDbTesting.newDto("D1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1"));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("D1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1"));
List<WebhookDeliveryLiteDto> deliveries = underTest.selectByWebhookUuid(dbSession, "a-webhook-uuid", 0, 10);
@@ -115,9 +115,9 @@ public class WebhookDeliveryDaoTest {
@Test
public void selectByWebhookUuid_returns_records_ordered_by_date() {
WebhookDto webhookDto = dbWebhooks.insert(WebhookTesting.newProjectWebhook("COMPONENT_1"));
- WebhookDeliveryDto dto1 = WebhookDbTesting.newDto("D1", webhookDto.getUuid(), "COMPONENT_1", "TASK_1").setCreatedAt(BEFORE);
- WebhookDeliveryDto dto2 = WebhookDbTesting.newDto("D2", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW);
- WebhookDeliveryDto dto3 = WebhookDbTesting.newDto("D3", "fake-webhook-uuid", "COMPONENT_2", "TASK_1").setCreatedAt(NOW);
+ WebhookDeliveryDto dto1 = WebhookDeliveryTesting.newDto("D1", webhookDto.getUuid(), "COMPONENT_1", "TASK_1").setCreatedAt(BEFORE);
+ WebhookDeliveryDto dto2 = WebhookDeliveryTesting.newDto("D2", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW);
+ WebhookDeliveryDto dto3 = WebhookDeliveryTesting.newDto("D3", "fake-webhook-uuid", "COMPONENT_2", "TASK_1").setCreatedAt(NOW);
underTest.insert(dbSession, dto3);
underTest.insert(dbSession, dto2);
underTest.insert(dbSession, dto1);
@@ -130,12 +130,12 @@ public class WebhookDeliveryDaoTest {
@Test
public void selectByWebhookUuid_returns_records_according_to_pagination() {
WebhookDto webhookDto = dbWebhooks.insert(WebhookTesting.newProjectWebhook("COMPONENT_1"));
- underTest.insert(dbSession, WebhookDbTesting.newDto("D1", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW - 5_000L));
- underTest.insert(dbSession, WebhookDbTesting.newDto("D2", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW - 4_000L));
- underTest.insert(dbSession, WebhookDbTesting.newDto("D3", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW - 3_000L));
- underTest.insert(dbSession, WebhookDbTesting.newDto("D4", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW - 2_000L));
- underTest.insert(dbSession, WebhookDbTesting.newDto("D5", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW - 1_000L));
- underTest.insert(dbSession, WebhookDbTesting.newDto("D6", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("D1", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW - 5_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("D2", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW - 4_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("D3", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW - 3_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("D4", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW - 2_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("D5", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW - 1_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("D6", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW));
List<WebhookDeliveryLiteDto> deliveries = underTest.selectByWebhookUuid(dbSession, webhookDto.getUuid(), 2, 2);
@@ -145,12 +145,12 @@ public class WebhookDeliveryDaoTest {
@Test
public void selectLatestDelivery_of_a_webhook() {
WebhookDto webhook1 = dbWebhooks.insert(newProjectWebhook("COMPONENT_1"));
- underTest.insert(dbSession, WebhookDbTesting.newDto("WH1-DELIVERY-1-UUID", webhook1.getUuid(), "COMPONENT_1", "TASK_1").setCreatedAt(BEFORE));
- underTest.insert(dbSession, WebhookDbTesting.newDto("WH1-DELIVERY-2-UUID", webhook1.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("WH1-DELIVERY-1-UUID", webhook1.getUuid(), "COMPONENT_1", "TASK_1").setCreatedAt(BEFORE));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("WH1-DELIVERY-2-UUID", webhook1.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW));
WebhookDto webhook2 = dbWebhooks.insert(newProjectWebhook("COMPONENT_1"));
- underTest.insert(dbSession, WebhookDbTesting.newDto("WH2-DELIVERY-1-UUID", webhook2.getUuid(), "COMPONENT_1", "TASK_1").setCreatedAt(BEFORE));
- underTest.insert(dbSession, WebhookDbTesting.newDto("WH2-DELIVERY-2-UUID", webhook2.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("WH2-DELIVERY-1-UUID", webhook2.getUuid(), "COMPONENT_1", "TASK_1").setCreatedAt(BEFORE));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("WH2-DELIVERY-2-UUID", webhook2.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(NOW));
Map<String, WebhookDeliveryLiteDto> map = underTest.selectLatestDeliveries(dbSession, of(webhook1, webhook2));
@@ -163,7 +163,7 @@ public class WebhookDeliveryDaoTest {
@Test
public void insert_row_with_only_mandatory_columns() {
- WebhookDeliveryDto dto = WebhookDbTesting.newDto("DELIVERY_1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1")
+ WebhookDeliveryDto dto = WebhookDeliveryTesting.newDto("DELIVERY_1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1")
.setDurationMs(1000)
.setHttpStatus(null)
.setErrorStacktrace(null);
@@ -182,7 +182,7 @@ public class WebhookDeliveryDaoTest {
@Test
public void insert_row_with_all_columns() {
- WebhookDeliveryDto dto = WebhookDbTesting.newDto("DELIVERY_1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1");
+ WebhookDeliveryDto dto = WebhookDeliveryTesting.newDto("DELIVERY_1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1");
underTest.insert(dbSession, dto);
@@ -199,9 +199,9 @@ public class WebhookDeliveryDaoTest {
WebhookDto webhookDto = dbWebhooks.insert(WebhookTesting.newProjectWebhook("COMPONENT_1"));
- underTest.insert(dbSession, WebhookDbTesting.newDto("DELIVERY_1", webhookDto.getUuid(), "COMPONENT_1", "TASK_1").setCreatedAt(1_000_000L));
- underTest.insert(dbSession, WebhookDbTesting.newDto("DELIVERY_2", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(2_000_000L));
- underTest.insert(dbSession, WebhookDbTesting.newDto("DELIVERY_3", "WONT BE DELETED WEBHOOK_UUID_2", "COMPONENT_2", "TASK_3").setCreatedAt(1_000_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("DELIVERY_1", webhookDto.getUuid(), "COMPONENT_1", "TASK_1").setCreatedAt(1_000_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("DELIVERY_2", webhookDto.getUuid(), "COMPONENT_1", "TASK_2").setCreatedAt(2_000_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("DELIVERY_3", "WONT BE DELETED WEBHOOK_UUID_2", "COMPONENT_2", "TASK_3").setCreatedAt(1_000_000L));
underTest.deleteByWebhook(dbSession, webhookDto);
@@ -209,9 +209,9 @@ public class WebhookDeliveryDaoTest {
@Test
public void deleteComponentBeforeDate_deletes_rows_before_date() {
- underTest.insert(dbSession, WebhookDbTesting.newDto("DELIVERY_1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(1_000_000L));
- underTest.insert(dbSession, WebhookDbTesting.newDto("DELIVERY_2", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_2").setCreatedAt(2_000_000L));
- underTest.insert(dbSession, WebhookDbTesting.newDto("DELIVERY_3", "WEBHOOK_UUID_1", "COMPONENT_2", "TASK_3").setCreatedAt(1_000_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("DELIVERY_1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(1_000_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("DELIVERY_2", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_2").setCreatedAt(2_000_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("DELIVERY_3", "WEBHOOK_UUID_1", "COMPONENT_2", "TASK_3").setCreatedAt(1_000_000L));
// should delete the old delivery on COMPONENT_1 and keep the one of COMPONENT_2
underTest.deleteComponentBeforeDate(dbSession, "COMPONENT_1", 1_500_000L);
@@ -229,7 +229,7 @@ public class WebhookDeliveryDaoTest {
@Test
public void deleteComponentBeforeDate_does_nothing_on_invalid_uuid() {
- underTest.insert(dbSession, WebhookDbTesting.newDto("DELIVERY_1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(1_000_000L));
+ underTest.insert(dbSession, WebhookDeliveryTesting.newDto("DELIVERY_1", "WEBHOOK_UUID_1", "COMPONENT_1", "TASK_1").setCreatedAt(1_000_000L));
underTest.deleteComponentBeforeDate(dbSession, "COMPONENT_2", 1_500_000L);
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryDbTester.java b/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryDbTester.java
index d31d270018e..7bde2a46121 100644
--- a/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryDbTester.java
+++ b/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryDbTester.java
@@ -19,9 +19,13 @@
*/
package org.sonar.db.webhook;
-import org.sonar.db.DbSession;
+import java.util.Objects;
+import java.util.function.Consumer;
import org.sonar.db.DbTester;
+import static java.util.Arrays.stream;
+import static org.sonar.db.webhook.WebhookDeliveryTesting.newDto;
+
public class WebhookDeliveryDbTester {
private final DbTester dbTester;
@@ -31,9 +35,29 @@ public class WebhookDeliveryDbTester {
}
public WebhookDeliveryLiteDto insert(WebhookDeliveryDto dto) {
- DbSession dbSession = dbTester.getSession();
- dbTester.getDbClient().webhookDeliveryDao().insert(dbSession, dto);
- dbSession.commit();
+ dbTester.getDbClient().webhookDeliveryDao().insert(dbTester.getSession(), dto);
+ dbTester.getSession().commit();
+ return dto;
+ }
+
+ @SafeVarargs
+ public final WebhookDeliveryLiteDto insert(Consumer<WebhookDeliveryDto>... dtoPopulators) {
+ WebhookDeliveryDto dto = newDto();
+ stream(dtoPopulators).forEach(dtoPopulator -> dtoPopulator.accept(dto));
+ dbTester.getDbClient().webhookDeliveryDao().insert(dbTester.getSession(), dto);
+ dbTester.getSession().commit();
+ return dto;
+ }
+
+ @SafeVarargs
+ public final WebhookDeliveryLiteDto insert(WebhookDto webhook, Consumer<WebhookDeliveryDto>... dtoPopulators) {
+ WebhookDeliveryDto dto = newDto();
+ stream(dtoPopulators).forEach(dtoPopulator -> dtoPopulator.accept(dto));
+ String projectUuid = webhook.getProjectUuid();
+ dto.setComponentUuid(Objects.requireNonNull(projectUuid, "Project uuid of webhook cannot be null"));
+ dto.setWebhookUuid(webhook.getUuid());
+ dbTester.getDbClient().webhookDeliveryDao().insert(dbTester.getSession(), dto);
+ dbTester.getSession().commit();
return dto;
}
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDbTesting.java b/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryTesting.java
index c883a8729e4..fbe67d58503 100644
--- a/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDbTesting.java
+++ b/server/sonar-db-dao/src/test/java/org/sonar/db/webhook/WebhookDeliveryTesting.java
@@ -21,6 +21,7 @@ package org.sonar.db.webhook;
import java.util.List;
import java.util.stream.Collectors;
+import org.sonar.core.util.Uuids;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
@@ -29,9 +30,9 @@ import static org.apache.commons.lang.math.RandomUtils.nextBoolean;
import static org.apache.commons.lang.math.RandomUtils.nextInt;
import static org.apache.commons.lang.math.RandomUtils.nextLong;
-public class WebhookDbTesting {
+public class WebhookDeliveryTesting {
- private WebhookDbTesting() {
+ private WebhookDeliveryTesting() {
// only statics
}
@@ -41,15 +42,15 @@ public class WebhookDbTesting {
*/
public static WebhookDeliveryDto newDto(String uuid, String webhookUuid, String componentUuid, String ceTaskUuid) {
return newDto()
- .setUuid(uuid)
- .setWebhookUuid(webhookUuid)
- .setComponentUuid(componentUuid)
- .setCeTaskUuid(ceTaskUuid);
+ .setUuid(uuid)
+ .setWebhookUuid(webhookUuid)
+ .setComponentUuid(componentUuid)
+ .setCeTaskUuid(ceTaskUuid);
}
public static WebhookDeliveryDto newDto() {
return new WebhookDeliveryDto()
- .setUuid(randomAlphanumeric(40))
+ .setUuid(Uuids.createFast())
.setWebhookUuid(randomAlphanumeric(40))
.setComponentUuid(randomAlphanumeric(40))
.setCeTaskUuid(randomAlphanumeric(40))
@@ -66,7 +67,7 @@ public class WebhookDbTesting {
public static List<String> selectAllDeliveryUuids(DbTester dbTester, DbSession dbSession) {
return dbTester.select(dbSession, "select uuid as \"uuid\" from webhook_deliveries")
.stream()
- .map(columns -> (String)columns.get("uuid"))
+ .map(columns -> (String) columns.get("uuid"))
.collect(Collectors.toList());
}
}
diff --git a/server/sonar-server-common/src/test/java/org/sonar/server/webhook/WebhookDeliveryStorageTest.java b/server/sonar-server-common/src/test/java/org/sonar/server/webhook/WebhookDeliveryStorageTest.java
index 7273b947c86..f90edd08d8f 100644
--- a/server/sonar-server-common/src/test/java/org/sonar/server/webhook/WebhookDeliveryStorageTest.java
+++ b/server/sonar-server-common/src/test/java/org/sonar/server/webhook/WebhookDeliveryStorageTest.java
@@ -28,13 +28,13 @@ import org.sonar.core.util.UuidFactory;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
-import org.sonar.db.webhook.WebhookDbTesting;
import org.sonar.db.webhook.WebhookDeliveryDto;
+import org.sonar.db.webhook.WebhookDeliveryTesting;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.sonar.db.webhook.WebhookDbTesting.selectAllDeliveryUuids;
+import static org.sonar.db.webhook.WebhookDeliveryTesting.selectAllDeliveryUuids;
public class WebhookDeliveryStorageTest {
@@ -111,7 +111,7 @@ public class WebhookDeliveryStorageTest {
}
private static WebhookDeliveryDto newDto(String uuid, String componentUuid, long at) {
- return WebhookDbTesting.newDto()
+ return WebhookDeliveryTesting.newDto()
.setUuid(uuid)
.setComponentUuid(componentUuid)
.setCreatedAt(at);
diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/ComponentCleanerService.java b/server/sonar-server/src/main/java/org/sonar/server/component/ComponentCleanerService.java
index a6662676dec..6766c3f99e1 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/component/ComponentCleanerService.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/component/ComponentCleanerService.java
@@ -27,11 +27,11 @@ import org.sonar.api.server.ServerSide;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.component.ComponentDto;
-import org.sonar.server.es.ProjectIndexer;
import org.sonar.server.es.ProjectIndexers;
import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Collections.singletonList;
+import static org.sonar.server.es.ProjectIndexer.Cause.PROJECT_DELETION;
@ServerSide
public class ComponentCleanerService {
@@ -55,17 +55,14 @@ public class ComponentCleanerService {
public void deleteBranch(DbSession dbSession, ComponentDto branch) {
// TODO: detect if other branches depend on it?
dbClient.purgeDao().deleteBranch(dbSession, branch.uuid());
- projectIndexers.commitAndIndex(dbSession, singletonList(branch), ProjectIndexer.Cause.PROJECT_DELETION);
+ projectIndexers.commitAndIndex(dbSession, singletonList(branch), PROJECT_DELETION);
}
public void delete(DbSession dbSession, ComponentDto project) {
checkArgument(!hasNotProjectScope(project) && !isNotDeletable(project) && project.getMainBranchProjectUuid() == null, "Only projects can be deleted");
dbClient.purgeDao().deleteProject(dbSession, project.uuid());
dbClient.userDao().cleanHomepage(dbSession, project);
- dbClient.webhookDao().selectByProject(dbSession, project)
- .forEach(wh -> dbClient.webhookDeliveryDao().deleteByWebhook(dbSession, wh));
- dbClient.webhookDao().deleteByProject(dbSession, project);
- projectIndexers.commitAndIndex(dbSession, singletonList(project), ProjectIndexer.Cause.PROJECT_DELETION);
+ projectIndexers.commitAndIndex(dbSession, singletonList(project), PROJECT_DELETION);
}
private static boolean hasNotProjectScope(ComponentDto project) {
diff --git a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/DeleteAction.java b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/DeleteAction.java
index 446642308d3..57f5f96696a 100644
--- a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/DeleteAction.java
+++ b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/DeleteAction.java
@@ -129,9 +129,6 @@ public class DeleteAction implements OrganizationsWsAction {
private void deleteProjects(DbSession dbSession, OrganizationDto organization) {
List<ComponentDto> roots = dbClient.componentDao().selectAllRootsByOrganization(dbSession, organization.getUuid());
- roots.forEach(project -> dbClient.webhookDao().selectByProject(dbSession, project)
- .forEach(wh -> dbClient.webhookDeliveryDao().deleteByWebhook(dbSession, wh)));
- roots.forEach(project -> dbClient.webhookDao().deleteByProject(dbSession, project));
try {
componentCleanerService.delete(dbSession, roots);
} finally {
diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/ComponentCleanerServiceTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/ComponentCleanerServiceTest.java
index bd2a8b0a69f..bc40e7fc62b 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/component/ComponentCleanerServiceTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/component/ComponentCleanerServiceTest.java
@@ -19,13 +19,11 @@
*/
package org.sonar.server.component;
-import java.util.Date;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.api.resources.ResourceType;
import org.sonar.api.resources.ResourceTypes;
-import org.sonar.api.rule.RuleKey;
import org.sonar.api.utils.System2;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
@@ -33,11 +31,10 @@ import org.sonar.db.DbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ComponentTesting;
import org.sonar.db.component.SnapshotDto;
-import org.sonar.db.component.SnapshotTesting;
import org.sonar.db.issue.IssueDto;
-import org.sonar.db.issue.IssueTesting;
+import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.rule.RuleDefinitionDto;
-import org.sonar.db.rule.RuleTesting;
+import org.sonar.db.webhook.WebhookDto;
import org.sonar.server.es.TestProjectIndexers;
import static java.util.Arrays.asList;
@@ -46,7 +43,6 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.sonar.db.component.ComponentTesting.newFileDto;
-import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
import static org.sonar.server.es.ProjectIndexer.Cause.PROJECT_DELETION;
public class ComponentCleanerServiceTest {
@@ -67,8 +63,8 @@ public class ComponentCleanerServiceTest {
@Test
public void delete_project_from_db_and_index() {
- DbData data1 = insertData(1);
- DbData data2 = insertData(2);
+ DbData data1 = insertData();
+ DbData data2 = insertData();
underTest.delete(dbSession, data1.project);
@@ -78,9 +74,9 @@ public class ComponentCleanerServiceTest {
@Test
public void delete_list_of_projects_from_db_and_index() {
- DbData data1 = insertData(1);
- DbData data2 = insertData(2);
- DbData data3 = insertData(3);
+ DbData data1 = insertData();
+ DbData data2 = insertData();
+ DbData data3 = insertData();
underTest.delete(dbSession, asList(data1.project, data2.project));
dbSession.commit();
@@ -92,9 +88,9 @@ public class ComponentCleanerServiceTest {
@Test
public void delete_branch() {
- DbData data1 = insertData(1);
- DbData data2 = insertData(2);
- DbData data3 = insertData(3);
+ DbData data1 = insertData();
+ DbData data2 = insertData();
+ DbData data3 = insertData();
underTest.deleteBranch(dbSession, data1.project);
dbSession.commit();
@@ -105,6 +101,26 @@ public class ComponentCleanerServiceTest {
}
@Test
+ public void delete_webhooks_from_projects() {
+ OrganizationDto organization = db.organizations().insert();
+ ComponentDto project1 = db.components().insertPrivateProject(organization);
+ WebhookDto webhook1 = db.webhooks().insertWebhook(project1);
+ db.webhookDelivery().insert(webhook1);
+ ComponentDto project2 = db.components().insertPrivateProject(organization);
+ WebhookDto webhook2 = db.webhooks().insertWebhook(project2);
+ db.webhookDelivery().insert(webhook2);
+ ComponentDto projectNotToBeDeleted = db.components().insertPrivateProject(organization);
+ WebhookDto webhook3 = db.webhooks().insertWebhook(projectNotToBeDeleted);
+ db.webhookDelivery().insert(webhook3);
+ mockResourceTypeAsValidProject();
+
+ underTest.delete(dbSession, asList(project1, project2));
+
+ assertThat(db.countRowsOfTable(db.getSession(), "webhooks")).isEqualTo(1);
+ assertThat(db.countRowsOfTable(db.getSession(), "webhook_deliveries")).isEqualTo(1);
+ }
+
+ @Test
public void fail_with_IAE_if_not_a_project() {
mockResourceTypeAsValidProject();
ComponentDto project = ComponentTesting.newPrivateProjectDto(db.organizations().insert());
@@ -151,19 +167,14 @@ public class ComponentCleanerServiceTest {
underTest.delete(dbSession, branch);
}
- private DbData insertData(int id) {
- String suffix = String.valueOf(id);
- ComponentDto project = newPrivateProjectDto(db.organizations().insert(), "project-uuid-" + suffix)
- .setDbKey("project-key-" + suffix);
- RuleDefinitionDto rule = RuleTesting.newRule(RuleKey.of("sonarqube", "rule-" + suffix));
- dbClient.ruleDao().insert(dbSession, rule);
- IssueDto issue = IssueTesting.newIssue(rule, project, project).setKee("issue-key-" + suffix).setUpdatedAt(new Date().getTime());
- dbClient.componentDao().insert(dbSession, project);
- SnapshotDto snapshot = dbClient.snapshotDao().insert(dbSession, SnapshotTesting.newAnalysis(project));
- dbClient.issueDao().insert(dbSession, issue);
- dbSession.commit();
+ private DbData insertData() {
+ OrganizationDto organization = db.organizations().insert();
+ ComponentDto project = db.components().insertPrivateProject(organization);
+ RuleDefinitionDto rule = db.rules().insert();
+ IssueDto issue = db.issues().insert(rule, project, project);
+ SnapshotDto analysis = db.components().insertSnapshot(project);
mockResourceTypeAsValidProject();
- return new DbData(project, snapshot, issue);
+ return new DbData(project, analysis, issue);
}
private void mockResourceTypeAsValidProject() {
diff --git a/server/sonar-server/src/test/java/org/sonar/server/organization/ws/DeleteActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/organization/ws/DeleteActionTest.java
index 5790c4e44f9..e78a9e140bb 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/organization/ws/DeleteActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/organization/ws/DeleteActionTest.java
@@ -24,7 +24,6 @@ import com.tngtech.java.junit.dataprovider.DataProvider;
import com.tngtech.java.junit.dataprovider.DataProviderRunner;
import com.tngtech.java.junit.dataprovider.UseDataProvider;
import java.util.Arrays;
-import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.stream.IntStream;
@@ -93,7 +92,6 @@ import static org.sonar.api.resources.Qualifiers.VIEW;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
import static org.sonar.db.user.UserTesting.newUserDto;
-import static org.sonar.db.webhook.WebhookDbTesting.newDto;
import static org.sonar.server.organization.ws.OrganizationsWsSupport.PARAM_ORGANIZATION;
@RunWith(DataProviderRunner.class)
@@ -148,24 +146,18 @@ public class DeleteActionTest {
@Test
public void organization_deletion_also_ensure_that_webhooks_of_this_organization_if_they_exist_are_cleared() {
OrganizationDto organization = db.organizations().insert();
- webhookDbTester.insertWebhook(organization);
- webhookDbTester.insertWebhook(organization);
- WebhookDto dto = webhookDbTester.insertWebhook(organization);
- webhookDeliveryDbTester.insert(newDto().setWebhookUuid(dto.getUuid()));
- webhookDeliveryDbTester.insert(newDto().setWebhookUuid(dto.getUuid()));
-
+ db.webhooks().insertWebhook(organization);
+ ComponentDto project = db.components().insertPrivateProject(organization);
+ WebhookDto projectWebhook = db.webhooks().insertWebhook(project);
+ db.webhookDelivery().insert(projectWebhook);
userSession.logIn().addPermission(ADMINISTER, organization);
wsTester.newRequest()
.setParam(PARAM_ORGANIZATION, organization.getKey())
.execute();
- List<WebhookDto> webhookDtos = dbClient.webhookDao().selectByOrganization(dbSession, organization);
- assertThat(webhookDtos).isEmpty();
-
- int deliveriesCount = deliveryDao.countDeliveriesByWebhookUuid(dbSession, dto.getUuid());
- assertThat(deliveriesCount).isEqualTo(0);
-
+ assertThat(db.countRowsOfTable(db.getSession(), "webhooks")).isZero();
+ assertThat(db.countRowsOfTable(db.getSession(), "webhook_deliveries")).isZero();
}
@Test
@@ -383,7 +375,7 @@ public class DeleteActionTest {
@DataProvider
public static Object[][] OneOrMoreIterations() {
- return new Object[][]{
+ return new Object[][] {
{1},
{1 + new Random().nextInt(10)},
};
@@ -527,7 +519,7 @@ public class DeleteActionTest {
@UseDataProvider("indexOfFailingProjectDeletion")
public void projectLifeCycleListener_are_notified_even_if_deletion_of_a_project_throws_an_Exception(int failingProjectIndex) {
OrganizationDto organization = db.organizations().insert();
- ComponentDto[] projects = new ComponentDto[]{
+ ComponentDto[] projects = new ComponentDto[] {
db.components().insertPrivateProject(organization),
db.components().insertPrivateProject(organization),
db.components().insertPrivateProject(organization)
@@ -558,7 +550,7 @@ public class DeleteActionTest {
@DataProvider
public static Object[][] indexOfFailingProjectDeletion() {
- return new Object[][]{
+ return new Object[][] {
{0},
{1},
{2}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/DeleteActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/DeleteActionTest.java
index 429f2bcb536..d2c15a8a6fb 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/DeleteActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/DeleteActionTest.java
@@ -50,7 +50,7 @@ import static org.junit.rules.ExpectedException.none;
import static org.sonar.api.web.UserRole.ADMIN;
import static org.sonar.db.DbTester.create;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
-import static org.sonar.db.webhook.WebhookDbTesting.newDto;
+import static org.sonar.db.webhook.WebhookDeliveryTesting.newDto;
import static org.sonar.server.organization.TestDefaultOrganizationProvider.from;
import static org.sonar.server.tester.UserSessionRule.standalone;
import static org.sonar.server.webhook.ws.WebhooksWsParameters.KEY_PARAM;
diff --git a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/ListActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/ListActionTest.java
index 0a6505d2f14..04dd941d7e7 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/ListActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/ListActionTest.java
@@ -50,7 +50,7 @@ import static org.junit.rules.ExpectedException.none;
import static org.sonar.api.web.UserRole.ADMIN;
import static org.sonar.db.DbTester.create;
import static org.sonar.db.permission.OrganizationPermission.ADMINISTER;
-import static org.sonar.db.webhook.WebhookDbTesting.newDto;
+import static org.sonar.db.webhook.WebhookDeliveryTesting.newDto;
import static org.sonar.db.webhook.WebhookTesting.newOrganizationWebhook;
import static org.sonar.server.organization.TestDefaultOrganizationProvider.from;
import static org.sonar.server.tester.UserSessionRule.standalone;
diff --git a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveriesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveriesActionTest.java
index 4637386f5be..fa6a72a822e 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveriesActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveriesActionTest.java
@@ -41,7 +41,7 @@ import org.sonarqube.ws.Webhooks;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.db.component.ComponentTesting.newPrivateProjectDto;
-import static org.sonar.db.webhook.WebhookDbTesting.newDto;
+import static org.sonar.db.webhook.WebhookDeliveryTesting.newDto;
import static org.sonar.test.JsonAssert.assertJson;
public class WebhookDeliveriesActionTest {
diff --git a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveryActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveryActionTest.java
index 2beed1e2723..7aeaaf7b580 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveryActionTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveryActionTest.java
@@ -42,7 +42,7 @@ import org.sonarqube.ws.MediaTypes;
import org.sonarqube.ws.Webhooks;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.sonar.db.webhook.WebhookDbTesting.newDto;
+import static org.sonar.db.webhook.WebhookDeliveryTesting.newDto;
import static org.sonar.test.JsonAssert.assertJson;
public class WebhookDeliveryActionTest {