diff options
author | Eric Hartmann <hartmann.eric@gmail.com> | 2018-07-13 10:59:07 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2018-07-17 20:21:27 +0200 |
commit | f29b1917181296d10dc9cba31f9d333c8117c33d (patch) | |
tree | b013f3426a5ff1dc4679d7f52a15167c48e8f2b3 | |
parent | 0763c1ecb3a3eaca803f0a04b28a424c65ecbcad (diff) | |
download | sonarqube-f29b1917181296d10dc9cba31f9d333c8117c33d.tar.gz sonarqube-f29b1917181296d10dc9cba31f9d333c8117c33d.zip |
SONAR-11021 Add default QProfile when creating organization
even if the registry do not contains the QualityProfile. BuiltInQProfileRepository must not be used because
the plugin may have been uninstalled and when reinstalled this may break the contract.
3 files changed, 7 insertions, 15 deletions
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/qualityprofile/DefaultQProfileDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/qualityprofile/DefaultQProfileDaoTest.java index 04e18cf48b9..89fd9e0e95f 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/qualityprofile/DefaultQProfileDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/qualityprofile/DefaultQProfileDaoTest.java @@ -124,8 +124,10 @@ public class DefaultQProfileDaoTest { QProfileDto profileInOrg2 = dbTester.qualityProfiles().insert(org2, p -> p.setLanguage("java")); dbTester.qualityProfiles().setAsDefault(profileInOrg1); - //assertThat(underTest.selectUuidsOfOrganizationsWithoutDefaultProfile(dbSession, "java")).containsExactly(org2.getUuid()); - assertThat(underTest.selectUuidsOfOrganizationsWithoutDefaultProfile(dbSession, "js")).containsExactlyInAnyOrder(org1.getUuid(), org2.getUuid()); + assertThat(underTest.selectUuidsOfOrganizationsWithoutDefaultProfile(dbSession, "java")) + .containsExactly(org2.getUuid()); + assertThat(underTest.selectUuidsOfOrganizationsWithoutDefaultProfile(dbSession, "js")) + .containsExactlyInAnyOrder(org1.getUuid(), org2.getUuid()); } private void assertThatIsDefault(OrganizationDto org, QProfileDto profile) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/organization/OrganizationUpdaterImpl.java b/server/sonar-server/src/main/java/org/sonar/server/organization/OrganizationUpdaterImpl.java index f2ffd2e9e1a..537a496b7ab 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/organization/OrganizationUpdaterImpl.java +++ b/server/sonar-server/src/main/java/org/sonar/server/organization/OrganizationUpdaterImpl.java @@ -297,13 +297,14 @@ public class OrganizationUpdaterImpl implements OrganizationUpdater { QProfileName name = new QProfileName(rulesProfile.getLanguage(), rulesProfile.getName()); BuiltInQProfile builtIn = builtInsPerName.get(name); - if (builtIn != null && builtIn.isDefault()) { + if (builtIn == null || builtIn.isDefault()) { + // If builtIn == null, the plugin has been removed // rows of table default_qprofiles must be inserted after org_qprofiles // in order to benefit from batch SQL inserts defaults.add(new DefaultQProfileDto() .setQProfileUuid(dto.getUuid()) .setOrganizationUuid(organization.getUuid()) - .setLanguage(builtIn.getLanguage())); + .setLanguage(rulesProfile.getLanguage())); } dbClient.qualityProfileDao().insert(batchDbSession, dto); diff --git a/server/sonar-server/src/test/java/org/sonar/server/organization/OrganizationUpdaterImplTest.java b/server/sonar-server/src/test/java/org/sonar/server/organization/OrganizationUpdaterImplTest.java index f021915ff49..14035a152be 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/organization/OrganizationUpdaterImplTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/organization/OrganizationUpdaterImplTest.java @@ -306,17 +306,6 @@ public class OrganizationUpdaterImplTest { } @Test - public void create_fails_with_ISE_if_BuiltInQProfileRepository_has_not_been_initialized() throws OrganizationUpdater.KeyConflictException { - UserDto user = db.users().insertUser(); - db.qualityGates().insertBuiltInQualityGate(); - - expectedException.expect(IllegalStateException.class); - expectedException.expectMessage("initialize must be called first"); - - underTest.create(dbSession, user, FULL_POPULATED_NEW_ORGANIZATION); - } - - @Test public void create_fails_with_KeyConflictException_if_org_with_key_in_NewOrganization_arg_already_exists_in_db() throws OrganizationUpdater.KeyConflictException { db.organizations().insertForKey(FULL_POPULATED_NEW_ORGANIZATION.getKey()); UserDto user = db.users().insertUser(); |