@Test public void delete_descendants() { initRules(); // create parent and child profiles db.qualityProfileDao() .insert( dbSession, QProfileTesting.newXooP1(), QProfileTesting.newXooP2(), QProfileTesting.newXooP3()); tester.get(RuleActivator.class).setParent(dbSession, XOO_P2_KEY, XOO_P1_KEY); tester.get(RuleActivator.class).setParent(dbSession, XOO_P3_KEY, XOO_P1_KEY); tester .get(RuleActivator.class) .activate(dbSession, new RuleActivation(RuleTesting.XOO_X1), XOO_P1_KEY); dbSession.commit(); dbSession.clearCache(); assertThat(db.qualityProfileDao().selectAll(dbSession)).hasSize(3); assertThat(db.activeRuleDao().selectAll(dbSession)).hasSize(3); factory.delete(XOO_P1_KEY); dbSession.clearCache(); assertThat(db.qualityProfileDao().selectAll(dbSession)).isEmpty(); assertThat(db.activeRuleDao().selectAll(dbSession)).isEmpty(); assertThat(db.activeRuleDao().selectAllParams(dbSession)).isEmpty(); assertThat(index.get(ActiveRuleIndex.class).findByProfile(XOO_P1_KEY)).isEmpty(); assertThat(index.get(ActiveRuleIndex.class).findByProfile(XOO_P2_KEY)).isEmpty(); assertThat(index.get(ActiveRuleIndex.class).findByProfile(XOO_P3_KEY)).isEmpty(); }
@Test public void change_project_association_with_key_and_uuid() throws Exception { ComponentDto project = ComponentTesting.newProjectDto("ABCD").setId(1L); db.componentDao().insert(session, project); QualityProfileDto profile1 = QProfileTesting.newXooP1(); QualityProfileDto profile2 = QProfileTesting.newXooP2(); db.qualityProfileDao().insert(session, profile1, profile2); db.qualityProfileDao() .insertProjectProfileAssociation(project.uuid(), profile1.getKey(), session); session.commit(); wsTester .newPostRequest(QProfilesWs.API_ENDPOINT, "add_project") .setParam("profileKey", profile2.getKee()) .setParam("projectUuid", project.uuid()) .execute() .assertNoContent(); assertThat( tester .get(QProfileFactory.class) .getByProjectAndLanguage(session, project.getKey(), "xoo") .getKee()) .isEqualTo(profile2.getKee()); }
@Test public void reset() throws Exception { QualityProfileDto profile = QProfileTesting.newXooP1(); QualityProfileDto subProfile = QProfileTesting.newXooP2().setParentKee(QProfileTesting.XOO_P1_KEY); db.qualityProfileDao().insert(session, profile, subProfile); RuleDto rule = createRule(profile.getLanguage(), "rule"); ActiveRuleDto active1 = ActiveRuleDto.createFor(profile, rule).setSeverity(rule.getSeverityString()); ActiveRuleDto active2 = ActiveRuleDto.createFor(subProfile, rule).setSeverity("MINOR"); db.activeRuleDao().insert(session, active1); db.activeRuleDao().insert(session, active2); session.commit(); ruIndexer.index(); activeRuIndexer.index(); // 0. assert rule child rule is minor assertThat(db.activeRuleDao().selectOrFailByKey(session, active2.getKey()).getSeverityString()) .isEqualTo("MINOR"); // 1. reset child rule WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, RuleActivationActions.ACTIVATE_ACTION); request.setParam("profile_key", subProfile.getKey()); request.setParam("rule_key", rule.getKey().toString()); request.setParam("reset", "true"); request.execute(); session.clearCache(); // 2. assert rule child rule is NOT minor assertThat(db.activeRuleDao().selectOrFailByKey(session, active2.getKey()).getSeverityString()) .isNotEqualTo("MINOR"); }
@Test public void search_by_profile() throws InterruptedException { QualityProfileDto qualityProfileDto1 = QProfileTesting.newXooP1(); QualityProfileDto qualityProfileDto2 = QProfileTesting.newXooP2(); db.qualityProfileDao().insert(dbSession, qualityProfileDto1, qualityProfileDto2); RuleDto rule1 = RuleTesting.newXooX1(); RuleDto rule2 = RuleTesting.newXooX2(); RuleDto rule3 = RuleTesting.newXooX3(); dao.insert(dbSession, rule1, rule2, rule3); db.activeRuleDao() .insert( dbSession, ActiveRuleDto.createFor(qualityProfileDto1, rule1).setSeverity("BLOCKER"), ActiveRuleDto.createFor(qualityProfileDto2, rule1).setSeverity("BLOCKER"), ActiveRuleDto.createFor(qualityProfileDto1, rule2).setSeverity("BLOCKER")); dbSession.commit(); dbSession.clearCache(); // 1. get all active rules. Result<Rule> result = index.search(new RuleQuery().setActivation(true), new QueryContext()); assertThat(result.getHits()).hasSize(2); // 2. get all inactive rules. result = index.search(new RuleQuery().setActivation(false), new QueryContext()); assertThat(result.getHits()).hasSize(1); assertThat(result.getHits().get(0).name()).isEqualTo(rule3.getName()); // 3. get all rules not active on profile index.search( new RuleQuery().setActivation(false).setQProfileKey(qualityProfileDto2.getKey()), new QueryContext()); // TODO assertThat(result.getHits()).hasSize(1); // 4. get all active rules on profile result = index.search( new RuleQuery().setActivation(true).setQProfileKey(qualityProfileDto2.getKey()), new QueryContext()); assertThat(result.getHits()).hasSize(1); assertThat(result.getHits().get(0).name()).isEqualTo(rule1.getName()); }
@Before public void before() { tester.clearDbAndIndexes(); db = tester.get(DbClient.class); dbSession = db.openSession(false); service = tester.get(QProfileService.class); loader = tester.get(QProfileLoader.class); activator = tester.get(RuleActivator.class); // create pre-defined rules RuleDto xooRule1 = RuleTesting.newXooX1().setSeverity("MINOR"); db.ruleDao().insert(dbSession, xooRule1); // create pre-defined profiles P1 and P2 db.qualityProfileDao() .insert(dbSession, QProfileTesting.newXooP1(), QProfileTesting.newXooP2()); dbSession.commit(); dbSession.clearCache(); }
@Test public void do_not_delete_if_default_descendant() { db.qualityProfileDao() .insert( dbSession, QProfileTesting.newXooP1(), QProfileTesting.newXooP2(), QProfileTesting.newXooP3()); tester.get(RuleActivator.class).setParent(dbSession, XOO_P2_KEY, XOO_P1_KEY); tester.get(RuleActivator.class).setParent(dbSession, XOO_P3_KEY, XOO_P1_KEY); factory.setDefault(dbSession, XOO_P3_KEY); dbSession.commit(); dbSession.clearCache(); try { factory.delete(XOO_P1_KEY); fail(); } catch (BadRequestException e) { assertThat(e).hasMessage("The profile marked as default can not be deleted: XOO_P3"); assertThat(db.qualityProfileDao().selectAll(dbSession)).hasSize(3); } }
@Test public void search_by_profile_and_inheritance() throws InterruptedException { QualityProfileDto qualityProfileDto1 = QProfileTesting.newXooP1(); QualityProfileDto qualityProfileDto2 = QProfileTesting.newXooP2().setParentKee(QProfileTesting.XOO_P1_KEY); db.qualityProfileDao().insert(dbSession, qualityProfileDto1, qualityProfileDto2); RuleDto rule1 = RuleTesting.newDto(RuleKey.of("xoo", "S001")); RuleDto rule2 = RuleTesting.newDto(RuleKey.of("xoo", "S002")); RuleDto rule3 = RuleTesting.newDto(RuleKey.of("xoo", "S003")); RuleDto rule4 = RuleTesting.newDto(RuleKey.of("xoo", "S004")); dao.insert(dbSession, rule1, rule2, rule3, rule4); db.activeRuleDao() .insert( dbSession, ActiveRuleDto.createFor(qualityProfileDto1, rule1).setSeverity("BLOCKER"), ActiveRuleDto.createFor(qualityProfileDto1, rule2).setSeverity("BLOCKER"), ActiveRuleDto.createFor(qualityProfileDto1, rule3).setSeverity("BLOCKER"), ActiveRuleDto.createFor(qualityProfileDto2, rule1) .setSeverity("MINOR") .setInheritance(ActiveRule.Inheritance.INHERITED.name()), ActiveRuleDto.createFor(qualityProfileDto2, rule2) .setSeverity("BLOCKER") .setInheritance(ActiveRule.Inheritance.OVERRIDES.name()), ActiveRuleDto.createFor(qualityProfileDto2, rule3) .setSeverity("BLOCKER") .setInheritance(ActiveRule.Inheritance.INHERITED.name())); dbSession.commit(); // 0. get all rules Result<Rule> result = index.search(new RuleQuery(), new QueryContext()); assertThat(result.getHits()).hasSize(4); // 1. get all active rules result = index.search(new RuleQuery().setActivation(true), new QueryContext()); assertThat(result.getHits()).hasSize(3); // 2. get all inactive rules. result = index.search(new RuleQuery().setActivation(false), new QueryContext()); assertThat(result.getHits()).hasSize(1); assertThat(result.getHits().get(0).name()).isEqualTo(rule4.getName()); // 3. get Inherited Rules on profile1 result = index.search( new RuleQuery() .setActivation(true) .setQProfileKey(qualityProfileDto1.getKey()) .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.INHERITED.name())), new QueryContext()); assertThat(result.getHits()).hasSize(0); // 4. get Inherited Rules on profile2 result = index.search( new RuleQuery() .setActivation(true) .setQProfileKey(qualityProfileDto2.getKey()) .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.INHERITED.name())), new QueryContext()); assertThat(result.getHits()).hasSize(2); // 5. get Overridden Rules on profile1 result = index.search( new RuleQuery() .setActivation(true) .setQProfileKey(qualityProfileDto1.getKey()) .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.OVERRIDES.name())), new QueryContext()); assertThat(result.getHits()).hasSize(0); // 6. get Overridden Rules on profile2 result = index.search( new RuleQuery() .setActivation(true) .setQProfileKey(qualityProfileDto2.getKey()) .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.OVERRIDES.name())), new QueryContext()); assertThat(result.getHits()).hasSize(1); // 7. get Inherited AND Overridden Rules on profile1 result = index.search( new RuleQuery() .setActivation(true) .setQProfileKey(qualityProfileDto1.getKey()) .setInheritance( ImmutableSet.of( ActiveRule.Inheritance.INHERITED.name(), ActiveRule.Inheritance.OVERRIDES.name())), new QueryContext()); assertThat(result.getHits()).hasSize(0); // 8. get Inherited AND Overridden Rules on profile2 result = index.search( new RuleQuery() .setActivation(true) .setQProfileKey(qualityProfileDto2.getKey()) .setInheritance( ImmutableSet.of( ActiveRule.Inheritance.INHERITED.name(), ActiveRule.Inheritance.OVERRIDES.name())), new QueryContext()); assertThat(result.getHits()).hasSize(3); }