aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Hartmann <hartmann.eric@gmail.com>2018-07-13 10:59:07 +0200
committerSonarTech <sonartech@sonarsource.com>2018-07-17 20:21:27 +0200
commitf29b1917181296d10dc9cba31f9d333c8117c33d (patch)
treeb013f3426a5ff1dc4679d7f52a15167c48e8f2b3
parent0763c1ecb3a3eaca803f0a04b28a424c65ecbcad (diff)
downloadsonarqube-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.
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/qualityprofile/DefaultQProfileDaoTest.java6
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/organization/OrganizationUpdaterImpl.java5
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/organization/OrganizationUpdaterImplTest.java11
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();