aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterTest.java (renamed from server/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterMediumTest.java)273
1 files changed, 131 insertions, 142 deletions
diff --git a/server/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterTest.java
index 6db295282ef..2987f0eb0cd 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterMediumTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterTest.java
@@ -27,81 +27,75 @@ import com.google.common.collect.Sets;
import java.util.List;
import java.util.Map;
import javax.annotation.Nonnull;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.sonar.api.config.MapSettings;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rule.RuleStatus;
import org.sonar.api.rule.Severity;
import org.sonar.api.server.debt.DebtRemediationFunction;
import org.sonar.api.server.debt.internal.DefaultDebtRemediationFunction;
-import org.sonar.db.DbClient;
+import org.sonar.api.utils.System2;
import org.sonar.db.DbSession;
-import org.sonar.db.organization.OrganizationDto;
+import org.sonar.db.DbTester;
import org.sonar.db.qualityprofile.ActiveRuleDto;
import org.sonar.db.qualityprofile.ActiveRuleKey;
import org.sonar.db.qualityprofile.ActiveRuleParamDto;
import org.sonar.db.qualityprofile.QualityProfileDto;
-import org.sonar.db.rule.RuleDao;
import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.db.rule.RuleDto;
import org.sonar.db.rule.RuleParamDto;
import org.sonar.db.rule.RuleTesting;
+import org.sonar.server.es.EsTester;
import org.sonar.server.es.SearchOptions;
-import org.sonar.server.organization.DefaultOrganizationProvider;
+import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.qualityprofile.QProfileTesting;
-import org.sonar.server.qualityprofile.RuleActivation;
-import org.sonar.server.qualityprofile.RuleActivator;
import org.sonar.server.rule.index.RuleIndex;
+import org.sonar.server.rule.index.RuleIndexDefinition;
+import org.sonar.server.rule.index.RuleIndexer;
import org.sonar.server.rule.index.RuleQuery;
-import org.sonar.server.tester.ServerTester;
import org.sonar.server.tester.UserSessionRule;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
-// TODO remove ServerTester usage when ActiveRule Daov2 is removed
-public class RuleUpdaterMediumTest {
+public class RuleUpdaterTest {
static final RuleKey RULE_KEY = RuleKey.of("squid", "S001");
- @ClassRule
- public static ServerTester tester = new ServerTester().withEsIndexes();
+ private System2 system2 = mock(System2.class);
- @org.junit.Rule
- public UserSessionRule userSessionRule = UserSessionRule.forServerTester(tester);
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
- private DbClient db = tester.get(DbClient.class);
- private RuleDao ruleDao = tester.get(RuleDao.class);
- private DbSession dbSession = db.openSession(false);
- private RuleIndex ruleIndex = tester.get(RuleIndex.class);
- private OrganizationDto defaultOrganization;
+ @Rule
+ public UserSessionRule userSessionRule = UserSessionRule.standalone();
- RuleUpdater underTest = tester.get(RuleUpdater.class);
+ @Rule
+ public DbTester db = DbTester.create(system2);
- @Before
- public void before() {
- tester.clearDbAndIndexes();
- String defaultOrganizationUuid = tester.get(DefaultOrganizationProvider.class).get().getUuid();
- defaultOrganization = db.organizationDao().selectByUuid(dbSession, defaultOrganizationUuid).get();
- }
+ @Rule
+ public EsTester es = new EsTester(new RuleIndexDefinition(new MapSettings()));
- @After
- public void after() {
- dbSession.close();
- }
+ private RuleIndex ruleIndex = new RuleIndex(es.client());
+ private RuleIndexer ruleIndexer = new RuleIndexer(es.client(), db.getDbClient());
+ private DbSession dbSession = db.getSession();
+ private TestDefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
+
+ private RuleUpdater underTest = new RuleUpdater(db.getDbClient(), ruleIndexer, system2);
@Test
public void do_not_update_rule_with_removed_status() {
- ruleDao.insert(dbSession, RuleTesting.newRule(RULE_KEY).setStatus(RuleStatus.REMOVED));
+ db.rules().insert(RuleTesting.newRule(RULE_KEY).setStatus(RuleStatus.REMOVED));
dbSession.commit();
RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY)
.setTags(Sets.newHashSet("java9"))
- .setOrganization(defaultOrganization);
+ .setOrganization(db.getDefaultOrganization());
try {
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
fail();
} catch (IllegalArgumentException e) {
assertThat(e).hasMessage("Rule with REMOVED status cannot be updated: squid:S001");
@@ -110,7 +104,7 @@ public class RuleUpdaterMediumTest {
@Test
public void no_changes() {
- RuleDto ruleDto = RuleTesting.newDto(RULE_KEY, defaultOrganization)
+ RuleDto ruleDto = RuleTesting.newDto(RULE_KEY, db.getDefaultOrganization())
// the following fields are not supposed to be updated
.setNoteData("my *note*")
.setNoteUserLogin("me")
@@ -118,16 +112,16 @@ public class RuleUpdaterMediumTest {
.setRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE.name())
.setRemediationGapMultiplier("1d")
.setRemediationBaseEffort("5min");
- ruleDao.insert(dbSession, ruleDto.getDefinition());
- ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+ db.rules().insert(ruleDto.getDefinition());
+ db.rules().insertOrUpdateMetadata(ruleDto.getMetadata().setRuleId(ruleDto.getId()));
dbSession.commit();
RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY);
assertThat(update.isEmpty()).isTrue();
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
dbSession.clearCache();
- RuleDto rule = ruleDao.selectOrFailByKey(dbSession, defaultOrganization, RULE_KEY);
+ RuleDto rule = db.getDbClient().ruleDao().selectOrFailByKey(dbSession, db.getDefaultOrganization(), RULE_KEY);
assertThat(rule.getNoteData()).isEqualTo("my *note*");
assertThat(rule.getNoteUserLogin()).isEqualTo("me");
assertThat(rule.getTags()).containsOnly("tag1");
@@ -140,7 +134,7 @@ public class RuleUpdaterMediumTest {
public void set_markdown_note() {
userSessionRule.logIn("me");
- RuleDto ruleDto = RuleTesting.newDto(RULE_KEY, defaultOrganization)
+ RuleDto ruleDto = RuleTesting.newDto(RULE_KEY, db.getDefaultOrganization())
.setNoteData(null)
.setNoteUserLogin(null)
@@ -149,17 +143,17 @@ public class RuleUpdaterMediumTest {
.setRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE.name())
.setRemediationGapMultiplier("1d")
.setRemediationBaseEffort("5min");
- ruleDao.insert(dbSession, ruleDto.getDefinition());
- ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+ db.rules().insert(ruleDto.getDefinition());
+ db.rules().insertOrUpdateMetadata(ruleDto.getMetadata().setRuleId(ruleDto.getId()));
dbSession.commit();
RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY)
.setMarkdownNote("my *note*")
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
dbSession.clearCache();
- RuleDto rule = ruleDao.selectOrFailByKey(dbSession, defaultOrganization, RULE_KEY);
+ RuleDto rule = db.getDbClient().ruleDao().selectOrFailByKey(dbSession, db.getDefaultOrganization(), RULE_KEY);
assertThat(rule.getNoteData()).isEqualTo("my *note*");
assertThat(rule.getNoteUserLogin()).isEqualTo("me");
assertThat(rule.getNoteCreatedAt()).isNotNull();
@@ -173,20 +167,20 @@ public class RuleUpdaterMediumTest {
@Test
public void remove_markdown_note() {
- RuleDto ruleDto = RuleTesting.newDto(RULE_KEY, defaultOrganization)
+ RuleDto ruleDto = RuleTesting.newDto(RULE_KEY, db.getDefaultOrganization())
.setNoteData("my *note*")
.setNoteUserLogin("me");
- ruleDao.insert(dbSession, ruleDto.getDefinition());
- ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+ db.rules().insert(ruleDto.getDefinition());
+ db.rules().insertOrUpdateMetadata(ruleDto.getMetadata().setRuleId(ruleDto.getId()));
dbSession.commit();
RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY)
.setMarkdownNote(null)
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
dbSession.clearCache();
- RuleDto rule = ruleDao.selectOrFailByKey(dbSession, defaultOrganization, RULE_KEY);
+ RuleDto rule = db.getDbClient().ruleDao().selectOrFailByKey(dbSession, db.getDefaultOrganization(), RULE_KEY);
assertThat(rule.getNoteData()).isNull();
assertThat(rule.getNoteUserLogin()).isNull();
assertThat(rule.getNoteCreatedAt()).isNull();
@@ -196,7 +190,7 @@ public class RuleUpdaterMediumTest {
@Test
public void set_tags() {
// insert db
- ruleDao.insert(dbSession, RuleTesting.newDto(RULE_KEY, defaultOrganization)
+ db.rules().insert(RuleTesting.newDto(RULE_KEY, db.getDefaultOrganization())
.setTags(Sets.newHashSet("security"))
.setSystemTags(Sets.newHashSet("java8", "javadoc")).getDefinition());
dbSession.commit();
@@ -204,45 +198,45 @@ public class RuleUpdaterMediumTest {
// java8 is a system tag -> ignore
RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY)
.setTags(Sets.newHashSet("bug", "java8"))
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
- RuleDto rule = ruleDao.selectOrFailByKey(dbSession, defaultOrganization, RULE_KEY);
+ RuleDto rule = db.getDbClient().ruleDao().selectOrFailByKey(dbSession, db.getDefaultOrganization(), RULE_KEY);
assertThat(rule.getTags()).containsOnly("bug");
assertThat(rule.getSystemTags()).containsOnly("java8", "javadoc");
// verify that tags are indexed in index
- List<String> tags = ruleIndex.listTags(defaultOrganization, null, 10);
+ List<String> tags = ruleIndex.listTags(db.getDefaultOrganization(), null, 10);
assertThat(tags).containsExactly("bug", "java8", "javadoc");
}
@Test
public void remove_tags() {
- RuleDto ruleDto = RuleTesting.newDto(RULE_KEY, defaultOrganization)
+ RuleDto ruleDto = RuleTesting.newDto(RULE_KEY, db.getDefaultOrganization())
.setTags(Sets.newHashSet("security"))
.setSystemTags(Sets.newHashSet("java8", "javadoc"));
- ruleDao.insert(dbSession, ruleDto.getDefinition());
- ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata());
+ db.rules().insert(ruleDto.getDefinition());
+ db.rules().insertOrUpdateMetadata(ruleDto.getMetadata());
dbSession.commit();
RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY)
.setTags(null)
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
dbSession.clearCache();
- RuleDto rule = ruleDao.selectOrFailByKey(dbSession, defaultOrganization, RULE_KEY);
+ RuleDto rule = db.getDbClient().ruleDao().selectOrFailByKey(dbSession, db.getDefaultOrganization(), RULE_KEY);
assertThat(rule.getTags()).isEmpty();
assertThat(rule.getSystemTags()).containsOnly("java8", "javadoc");
// verify that tags are indexed in index
- List<String> tags = ruleIndex.listTags(defaultOrganization, null, 10);
+ List<String> tags = ruleIndex.listTags(db.getDefaultOrganization(), null, 10);
assertThat(tags).containsExactly("java8", "javadoc");
}
@Test
public void override_debt() {
- ruleDao.insert(dbSession, RuleTesting.newRule(RULE_KEY)
+ db.rules().insert(RuleTesting.newRule(RULE_KEY)
.setDefRemediationFunction(DebtRemediationFunction.Type.LINEAR_OFFSET.name())
.setDefRemediationGapMultiplier("1d")
.setDefRemediationBaseEffort("5min"));
@@ -251,12 +245,12 @@ public class RuleUpdaterMediumTest {
DefaultDebtRemediationFunction fn = new DefaultDebtRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE, null, "1min");
RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY)
.setDebtRemediationFunction(fn)
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
dbSession.clearCache();
// verify debt is overridden
- RuleDto rule = ruleDao.selectOrFailByKey(dbSession, defaultOrganization, RULE_KEY);
+ RuleDto rule = db.getDbClient().ruleDao().selectOrFailByKey(dbSession, db.getDefaultOrganization(), RULE_KEY);
assertThat(rule.getRemediationFunction()).isEqualTo(DebtRemediationFunction.Type.CONSTANT_ISSUE.name());
assertThat(rule.getRemediationGapMultiplier()).isNull();
assertThat(rule.getRemediationBaseEffort()).isEqualTo("1min");
@@ -268,7 +262,7 @@ public class RuleUpdaterMediumTest {
@Test
public void override_debt_only_offset() {
- ruleDao.insert(dbSession, RuleTesting.newRule(RULE_KEY)
+ db.rules().insert(RuleTesting.newRule(RULE_KEY)
.setDefRemediationFunction(DebtRemediationFunction.Type.LINEAR.name())
.setDefRemediationGapMultiplier("1d")
.setDefRemediationBaseEffort(null));
@@ -276,12 +270,12 @@ public class RuleUpdaterMediumTest {
RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY)
.setDebtRemediationFunction(new DefaultDebtRemediationFunction(DebtRemediationFunction.Type.LINEAR, "2d", null))
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
dbSession.clearCache();
// verify debt is overridden
- RuleDto rule = ruleDao.selectOrFailByKey(dbSession, defaultOrganization, RULE_KEY);
+ RuleDto rule = db.getDbClient().ruleDao().selectOrFailByKey(dbSession, db.getDefaultOrganization(), RULE_KEY);
assertThat(rule.getRemediationFunction()).isEqualTo(DebtRemediationFunction.Type.LINEAR.name());
assertThat(rule.getRemediationGapMultiplier()).isEqualTo("2d");
assertThat(rule.getRemediationBaseEffort()).isNull();
@@ -293,7 +287,7 @@ public class RuleUpdaterMediumTest {
@Test
public void override_debt_from_linear_with_offset_to_constant() {
- ruleDao.insert(dbSession, RuleTesting.newRule(RULE_KEY)
+ db.rules().insert(RuleTesting.newRule(RULE_KEY)
.setDefRemediationFunction(DebtRemediationFunction.Type.LINEAR_OFFSET.name())
.setDefRemediationGapMultiplier("1d")
.setDefRemediationBaseEffort("5min"));
@@ -301,12 +295,12 @@ public class RuleUpdaterMediumTest {
RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY)
.setDebtRemediationFunction(new DefaultDebtRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE, null, "10min"))
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
dbSession.clearCache();
// verify debt is overridden
- RuleDto rule = ruleDao.selectOrFailByKey(dbSession, defaultOrganization, RULE_KEY);
+ RuleDto rule = db.getDbClient().ruleDao().selectOrFailByKey(dbSession, db.getDefaultOrganization(), RULE_KEY);
assertThat(rule.getRemediationFunction()).isEqualTo(DebtRemediationFunction.Type.CONSTANT_ISSUE.name());
assertThat(rule.getRemediationGapMultiplier()).isNull();
assertThat(rule.getRemediationBaseEffort()).isEqualTo("10min");
@@ -318,25 +312,25 @@ public class RuleUpdaterMediumTest {
@Test
public void reset_remediation_function() {
- RuleDto ruleDto = RuleTesting.newDto(RULE_KEY, defaultOrganization)
+ RuleDto ruleDto = RuleTesting.newDto(RULE_KEY, db.getDefaultOrganization())
.setDefRemediationFunction(DebtRemediationFunction.Type.LINEAR.name())
.setDefRemediationGapMultiplier("1d")
.setDefRemediationBaseEffort("5min")
.setRemediationFunction(DebtRemediationFunction.Type.CONSTANT_ISSUE.name())
.setRemediationGapMultiplier(null)
.setRemediationBaseEffort("1min");
- ruleDao.insert(dbSession, ruleDto.getDefinition());
- ruleDao.insertOrUpdate(dbSession, ruleDto.getMetadata().setRuleId(ruleDto.getId()));
+ db.rules().insert(ruleDto.getDefinition());
+ db.rules().insertOrUpdateMetadata(ruleDto.getMetadata().setRuleId(ruleDto.getId()));
dbSession.commit();
RuleUpdate update = RuleUpdate.createForPluginRule(RULE_KEY)
.setDebtRemediationFunction(null)
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
dbSession.clearCache();
// verify debt is coming from default values
- RuleDto rule = ruleDao.selectOrFailByKey(dbSession, defaultOrganization, RULE_KEY);
+ RuleDto rule = db.getDbClient().ruleDao().selectOrFailByKey(dbSession, db.getDefaultOrganization(), RULE_KEY);
assertThat(rule.getDefRemediationFunction()).isEqualTo(DebtRemediationFunction.Type.LINEAR.name());
assertThat(rule.getDefRemediationGapMultiplier()).isEqualTo("1d");
assertThat(rule.getDefRemediationBaseEffort()).isEqualTo("5min");
@@ -350,11 +344,9 @@ public class RuleUpdaterMediumTest {
public void update_custom_rule() {
// Create template rule
RuleDto templateRule = RuleTesting.newTemplateRule(RuleKey.of("java", "S001"));
- ruleDao.insert(dbSession, templateRule.getDefinition());
- RuleParamDto templateRuleParam1 = RuleParamDto.createFor(templateRule.getDefinition()).setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue(".*");
- RuleParamDto templateRuleParam2 = RuleParamDto.createFor(templateRule.getDefinition()).setName("format").setType("STRING").setDescription("Format");
- ruleDao.insertRuleParam(dbSession, templateRule.getDefinition(), templateRuleParam1);
- ruleDao.insertRuleParam(dbSession, templateRule.getDefinition(), templateRuleParam2);
+ db.rules().insert(templateRule.getDefinition());
+ db.rules().insertRuleParam(templateRule.getDefinition(), param -> param.setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue(".*"));
+ db.rules().insertRuleParam(templateRule.getDefinition(), param -> param.setName("format").setType("STRING").setDescription("Format"));
// Create custom rule
RuleDefinitionDto customRule = RuleTesting.newCustomRule(templateRule)
@@ -363,11 +355,9 @@ public class RuleUpdaterMediumTest {
.setSeverity(Severity.MINOR)
.setStatus(RuleStatus.BETA)
.getDefinition();
- ruleDao.insert(dbSession, customRule);
- ruleDao.insertRuleParam(dbSession, customRule, templateRuleParam1.setDefaultValue("a.*"));
- ruleDao.insertRuleParam(dbSession, customRule, templateRuleParam2.setDefaultValue(null));
-
- dbSession.commit();
+ db.rules().insert(customRule);
+ db.rules().insertRuleParam(customRule, param -> param.setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue("a.*"));
+ db.rules().insertRuleParam(customRule, param -> param.setName("format").setType("STRING").setDescription("Format").setDefaultValue(null));
// Update custom rule
RuleUpdate update = RuleUpdate.createForCustomRule(customRule.getKey())
@@ -376,23 +366,21 @@ public class RuleUpdaterMediumTest {
.setSeverity("MAJOR")
.setStatus(RuleStatus.READY)
.setParameters(ImmutableMap.of("regex", "b.*"))
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
dbSession.clearCache();
// Verify custom rule is updated
- RuleDto customRuleReloaded = ruleDao.selectOrFailByKey(dbSession, defaultOrganization, customRule.getKey());
+ RuleDto customRuleReloaded = db.getDbClient().ruleDao().selectOrFailByKey(dbSession, db.getDefaultOrganization(), customRule.getKey());
assertThat(customRuleReloaded).isNotNull();
assertThat(customRuleReloaded.getName()).isEqualTo("New name");
assertThat(customRuleReloaded.getDescription()).isEqualTo("New description");
assertThat(customRuleReloaded.getSeverityString()).isEqualTo("MAJOR");
assertThat(customRuleReloaded.getStatus()).isEqualTo(RuleStatus.READY);
- List<RuleParamDto> params = ruleDao.selectRuleParamsByRuleKey(dbSession, customRuleReloaded.getKey());
- assertThat(params).hasSize(2);
- assertThat(params.get(0).getDefaultValue()).isEqualTo("b.*");
- assertThat(params.get(1).getDefaultValue()).isNull();
+ List<RuleParamDto> params = db.getDbClient().ruleDao().selectRuleParamsByRuleKey(dbSession, customRuleReloaded.getKey());
+ assertThat(params).extracting(RuleParamDto::getDefaultValue).containsOnly("b.*", null);
// Verify in index
assertThat(ruleIndex.search(new RuleQuery().setQueryText("New name"), new SearchOptions()).getIds()).containsOnly(customRule.getKey());
@@ -406,9 +394,8 @@ public class RuleUpdaterMediumTest {
public void update_custom_rule_with_empty_parameter() {
// Create template rule
RuleDto templateRule = RuleTesting.newTemplateRule(RuleKey.of("java", "S001"));
- ruleDao.insert(dbSession, templateRule.getDefinition());
- RuleParamDto templateRuleParam = RuleParamDto.createFor(templateRule.getDefinition()).setName("regex").setType("STRING").setDescription("Reg ex");
- ruleDao.insertRuleParam(dbSession, templateRule.getDefinition(), templateRuleParam);
+ db.rules().insert(templateRule.getDefinition());
+ db.rules().insertRuleParam(templateRule.getDefinition(), param -> param.setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue(null));
// Create custom rule
RuleDefinitionDto customRule = RuleTesting.newCustomRule(templateRule)
@@ -417,8 +404,8 @@ public class RuleUpdaterMediumTest {
.setSeverity(Severity.MINOR)
.setStatus(RuleStatus.BETA)
.getDefinition();
- ruleDao.insert(dbSession, customRule);
- ruleDao.insertRuleParam(dbSession, customRule, templateRuleParam);
+ db.rules().insert(customRule);
+ db.rules().insertRuleParam(customRule, param -> param.setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue(null));
dbSession.commit();
@@ -428,13 +415,13 @@ public class RuleUpdaterMediumTest {
.setMarkdownDescription("New description")
.setSeverity("MAJOR")
.setStatus(RuleStatus.READY)
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
dbSession.clearCache();
// Verify custom rule is updated
- List<RuleParamDto> params = ruleDao.selectRuleParamsByRuleKey(dbSession, customRule.getKey());
+ List<RuleParamDto> params = db.getDbClient().ruleDao().selectRuleParamsByRuleKey(dbSession, customRule.getKey());
assertThat(params.get(0).getDefaultValue()).isNull();
}
@@ -443,45 +430,47 @@ public class RuleUpdaterMediumTest {
// Create template rule with 3 parameters
RuleDto templateRule = RuleTesting.newTemplateRule(RuleKey.of("java", "S001")).setLanguage("xoo");
RuleDefinitionDto templateRuleDefinition = templateRule.getDefinition();
- ruleDao.insert(dbSession, templateRuleDefinition);
- RuleParamDto templateRuleParam1 = RuleParamDto.createFor(templateRuleDefinition).setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue(".*");
- ruleDao.insertRuleParam(dbSession, templateRuleDefinition, templateRuleParam1);
- RuleParamDto templateRuleParam2 = RuleParamDto.createFor(templateRuleDefinition).setName("format").setType("STRING").setDescription("format").setDefaultValue("csv");
- ruleDao.insertRuleParam(dbSession, templateRuleDefinition, templateRuleParam2);
- RuleParamDto templateRuleParam3 = RuleParamDto.createFor(templateRuleDefinition).setName("message").setType("STRING").setDescription("message");
- ruleDao.insertRuleParam(dbSession, templateRuleDefinition, templateRuleParam3);
+ db.rules().insert(templateRuleDefinition);
+ db.rules().insertRuleParam(templateRuleDefinition, param -> param.setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue(".*"));
+ db.rules().insertRuleParam(templateRuleDefinition, param -> param.setName("format").setType("STRING").setDescription("format").setDefaultValue("csv"));
+ db.rules().insertRuleParam(templateRuleDefinition, param -> param.setName("message").setType("STRING").setDescription("message"));
// Create custom rule
RuleDefinitionDto customRule = RuleTesting.newCustomRule(templateRule)
.setSeverity(Severity.MAJOR)
.setLanguage("xoo")
.getDefinition();
- ruleDao.insert(dbSession, customRule);
- ruleDao.insertRuleParam(dbSession, customRule, templateRuleParam1.setDefaultValue("a.*"));
- ruleDao.insertRuleParam(dbSession, customRule, templateRuleParam2.setDefaultValue("txt"));
- ruleDao.insertRuleParam(dbSession, customRule, templateRuleParam3);
+ db.rules().insert(customRule);
+ RuleParamDto ruleParam1 = db.rules().insertRuleParam(customRule, param -> param.setName("regex").setType("STRING").setDescription("Reg ex").setDefaultValue("a.*"));
+ db.rules().insertRuleParam(customRule, param -> param.setName("format").setType("STRING").setDescription("format").setDefaultValue("txt"));
+ db.rules().insertRuleParam(customRule, param -> param.setName("message").setType("STRING").setDescription("message"));
// Create a quality profile
- QualityProfileDto profileDto = QProfileTesting.newXooP1(defaultOrganization);
- db.qualityProfileDao().insert(dbSession, profileDto);
+ QualityProfileDto profileDto = QProfileTesting.newXooP1(db.getDefaultOrganization());
+ db.getDbClient().qualityProfileDao().insert(dbSession, profileDto);
dbSession.commit();
// Activate the custom rule
- RuleActivation activation = new RuleActivation(customRule.getKey()).setSeverity(Severity.BLOCKER);
- tester.get(RuleActivator.class).activate(dbSession, activation, profileDto);
+ ActiveRuleDto activeRuleDto = new ActiveRuleDto()
+ .setProfileId(profileDto.getId())
+ .setRuleId(customRule.getId())
+ .setSeverity(Severity.BLOCKER);
+ db.getDbClient().activeRuleDao().insert(dbSession, activeRuleDto);
+ db.getDbClient().activeRuleDao().insertParam(dbSession, activeRuleDto, new ActiveRuleParamDto()
+ .setActiveRuleId(activeRuleDto.getId())
+ .setRulesParameterId(ruleParam1.getId())
+ .setKey(ruleParam1.getName())
+ .setValue(ruleParam1.getDefaultValue()));
dbSession.commit();
- dbSession.clearCache();
// Update custom rule parameter 'regex', add 'message' and remove 'format'
RuleUpdate update = RuleUpdate.createForCustomRule(customRule.getKey())
.setParameters(ImmutableMap.of("regex", "b.*", "message", "a message"))
- .setOrganization(defaultOrganization);
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
-
- dbSession.clearCache();
+ .setOrganization(db.getDefaultOrganization());
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
// Verify custom rule parameters has been updated
- List<RuleParamDto> params = ruleDao.selectRuleParamsByRuleKey(dbSession, customRule.getKey());
+ List<RuleParamDto> params = db.getDbClient().ruleDao().selectRuleParamsByRuleKey(dbSession, customRule.getKey());
assertThat(params).hasSize(3);
Map<String, RuleParamDto> paramsByKey = paramsByKey(params);
@@ -493,11 +482,11 @@ public class RuleUpdaterMediumTest {
assertThat(paramsByKey.get("format").getDefaultValue()).isNull();
// Verify that severity has not changed
- ActiveRuleDto activeRuleDto = db.activeRuleDao().selectOrFailByKey(dbSession, ActiveRuleKey.of(profileDto.getKey(), customRule.getKey()));
- assertThat(activeRuleDto.getSeverityString()).isEqualTo(Severity.BLOCKER);
+ ActiveRuleDto activeRuleReloaded = db.getDbClient().activeRuleDao().selectOrFailByKey(dbSession, ActiveRuleKey.of(profileDto.getKey(), customRule.getKey()));
+ assertThat(activeRuleReloaded.getSeverityString()).isEqualTo(Severity.BLOCKER);
// Verify active rule parameters has been updated
- List<ActiveRuleParamDto> activeRuleParams = db.activeRuleDao().selectParamsByActiveRuleId(dbSession, activeRuleDto.getId());
+ List<ActiveRuleParamDto> activeRuleParams = db.getDbClient().activeRuleDao().selectParamsByActiveRuleId(dbSession, activeRuleReloaded.getId());
assertThat(activeRuleParams).hasSize(2);
Map<String, ActiveRuleParamDto> activeRuleParamsByKey = ActiveRuleParamDto.groupByKey(activeRuleParams);
@@ -510,11 +499,11 @@ public class RuleUpdaterMediumTest {
public void fail_to_update_custom_rule_when_empty_name() {
// Create template rule
RuleDefinitionDto templateRule = RuleTesting.newTemplateRule(RuleKey.of("java", "S001")).getDefinition();
- ruleDao.insert(dbSession, templateRule);
+ db.rules().insert(templateRule);
// Create custom rule
RuleDefinitionDto customRule = RuleTesting.newCustomRule(templateRule);
- ruleDao.insert(dbSession, customRule);
+ db.rules().insert(customRule);
dbSession.commit();
@@ -522,9 +511,9 @@ public class RuleUpdaterMediumTest {
RuleUpdate update = RuleUpdate.createForCustomRule(customRule.getKey())
.setName("")
.setMarkdownDescription("New desc")
- .setOrganization(defaultOrganization);
+ .setOrganization(db.getDefaultOrganization());
try {
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
fail();
} catch (Exception e) {
assertThat(e).isInstanceOf(IllegalArgumentException.class).hasMessage("The name is missing");
@@ -535,11 +524,11 @@ public class RuleUpdaterMediumTest {
public void fail_to_update_custom_rule_when_empty_description() {
// Create template rule
RuleDto templateRule = RuleTesting.newTemplateRule(RuleKey.of("java", "S001"));
- ruleDao.insert(dbSession, templateRule.getDefinition());
+ db.rules().insert(templateRule.getDefinition());
// Create custom rule
RuleDto customRule = RuleTesting.newCustomRule(templateRule);
- ruleDao.insert(dbSession, customRule.getDefinition());
+ db.rules().insert(customRule.getDefinition());
dbSession.commit();
@@ -547,9 +536,9 @@ public class RuleUpdaterMediumTest {
RuleUpdate update = RuleUpdate.createForCustomRule(customRule.getKey())
.setName("New name")
.setMarkdownDescription("")
- .setOrganization(defaultOrganization);
+ .setOrganization(db.getDefaultOrganization());
try {
- underTest.update(dbSession, update, defaultOrganization, userSessionRule);
+ underTest.update(dbSession, update, db.getDefaultOrganization(), userSessionRule);
fail();
} catch (Exception e) {
assertThat(e).isInstanceOf(IllegalArgumentException.class).hasMessage("The description is missing");
@@ -560,7 +549,7 @@ public class RuleUpdaterMediumTest {
public void fail_to_update_plugin_rule_if_name_is_set() {
// Create rule rule
RuleDefinitionDto ruleDto = RuleTesting.newRule(RuleKey.of("squid", "S01"));
- ruleDao.insert(dbSession, ruleDto);
+ db.rules().insert(ruleDto);
dbSession.commit();
@@ -578,7 +567,7 @@ public class RuleUpdaterMediumTest {
public void fail_to_update_plugin_rule_if_description_is_set() {
// Create rule rule
RuleDefinitionDto ruleDto = RuleTesting.newRule(RuleKey.of("squid", "S01"));
- ruleDao.insert(dbSession, ruleDto);
+ db.rules().insert(ruleDto);
dbSession.commit();
@@ -596,7 +585,7 @@ public class RuleUpdaterMediumTest {
public void fail_to_update_plugin_rule_if_severity_is_set() {
// Create rule rule
RuleDefinitionDto ruleDto = RuleTesting.newRule(RuleKey.of("squid", "S01"));
- ruleDao.insert(dbSession, ruleDto);
+ db.rules().insert(ruleDto);
dbSession.commit();