From bb5e1718510207c0b3b2159fca12a5867a5e4603 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Wed, 28 Oct 2015 18:04:29 +0100 Subject: [PATCH] SONAR-6355 Fix IT --- .../src/test/java/it/Category1Suite.java | 2 + .../ProjectAdministrationTest.java | 58 -------- .../QualityGateNotificationTest.java | 20 ++- .../it/qualityGate/QualityGateUiTest.java | 136 ++++++++++++++++++ ...display-alerts-correctly-history-page.html | 69 --------- ...hould-display-period-alerts-correctly.html | 54 ------- ...display-alerts-correctly-history-page.html | 89 ++++++++++++ ...hould-display-period-alerts-correctly.html | 74 ++++++++++ .../activate_notification_channels.html | 0 .../notifications/email_configuration.html | 0 10 files changed, 319 insertions(+), 183 deletions(-) create mode 100644 it/it-tests/src/test/java/it/qualityGate/QualityGateUiTest.java delete mode 100644 it/it-tests/src/test/resources/projectAdministration/ProjectAdministrationTest/display-alerts-history-page/should-display-alerts-correctly-history-page.html delete mode 100644 it/it-tests/src/test/resources/projectAdministration/ProjectAdministrationTest/display-alerts/should-display-period-alerts-correctly.html create mode 100644 it/it-tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-alerts-correctly-history-page.html create mode 100644 it/it-tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-period-alerts-correctly.html rename it/it-tests/src/test/resources/{qualitygate => qualityGate}/notifications/activate_notification_channels.html (100%) rename it/it-tests/src/test/resources/{qualitygate => qualityGate}/notifications/email_configuration.html (100%) diff --git a/it/it-tests/src/test/java/it/Category1Suite.java b/it/it-tests/src/test/java/it/Category1Suite.java index 8c4aca7b0ba..6cb1b658a8a 100644 --- a/it/it-tests/src/test/java/it/Category1Suite.java +++ b/it/it-tests/src/test/java/it/Category1Suite.java @@ -51,6 +51,7 @@ import it.projectAdministration.BulkDeletionTest; import it.projectAdministration.ProjectAdministrationTest; import it.qualityGate.QualityGateNotificationTest; import it.qualityGate.QualityGateTest; +import it.qualityGate.QualityGateUiTest; import it.settings.PropertySetsTest; import it.settings.SettingsTest; import it.settings.SettingsTestRestartingOrchestrator; @@ -76,6 +77,7 @@ import static util.ItUtils.xooPlugin; I18nTest.class, // quality gate QualityGateTest.class, + QualityGateUiTest.class, QualityGateNotificationTest.class, // permission IssuePermissionTest.class, diff --git a/it/it-tests/src/test/java/it/projectAdministration/ProjectAdministrationTest.java b/it/it-tests/src/test/java/it/projectAdministration/ProjectAdministrationTest.java index d59e2e4d154..b943c962b54 100644 --- a/it/it-tests/src/test/java/it/projectAdministration/ProjectAdministrationTest.java +++ b/it/it-tests/src/test/java/it/projectAdministration/ProjectAdministrationTest.java @@ -35,11 +35,6 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.sonar.wsclient.SonarClient; import org.sonar.wsclient.base.HttpException; -import org.sonar.wsclient.qualitygate.NewCondition; -import org.sonar.wsclient.qualitygate.QualityGate; -import org.sonar.wsclient.qualitygate.QualityGateClient; -import org.sonar.wsclient.qualitygate.QualityGateCondition; -import org.sonar.wsclient.qualitygate.UpdateCondition; import org.sonar.wsclient.services.PropertyQuery; import org.sonar.wsclient.services.ResourceQuery; import org.sonar.wsclient.user.UserParameters; @@ -162,59 +157,6 @@ public class ProjectAdministrationTest { assertThat(count("events where category='Version'")).as("Different number of events").isEqualTo(7); } - // SONAR-3326 - // TODO should be moved to qualityGate - @Test - public void display_alerts_correctly_in_history_page() { - QualityGateClient qgClient = orchestrator.getServer().adminWsClient().qualityGateClient(); - QualityGate qGate = qgClient.create("AlertsForHistory"); - qgClient.setDefault(qGate.id()); - - // with this configuration, project should have an Orange alert - QualityGateCondition lowThresholds = qgClient.createCondition(NewCondition.create(qGate.id()).metricKey("lines").operator("GT").warningThreshold("5").errorThreshold("50")); - scanSampleWithDate("2012-01-01"); - // with this configuration, project should have a Green alert - qgClient.updateCondition(UpdateCondition.create(lowThresholds.id()).metricKey("lines").operator("GT").warningThreshold("5000").errorThreshold("5000")); - scanSampleWithDate("2012-01-02"); - - Selenese selenese = Selenese.builder() - .setHtmlTestsInClasspath("display-alerts-history-page", - "/projectAdministration/ProjectAdministrationTest/display-alerts-history-page/should-display-alerts-correctly-history-page.html" - ).build(); - new SeleneseTest(selenese).runOn(orchestrator); - - qgClient.unsetDefault(); - qgClient.destroy(qGate.id()); - } - - /** - * SONAR-1352 - */ - // TODO should be moved to qualityGate - @Test - public void display_period_alert_on_project_dashboard() { - QualityGateClient qgClient = orchestrator.getServer().adminWsClient().qualityGateClient(); - QualityGate qGate = qgClient.create("AlertsForDashboard"); - qgClient.createCondition(NewCondition.create(qGate.id()).metricKey("lines").operator("LT").warningThreshold("0").errorThreshold("10") - .period(1)); - qgClient.setDefault(qGate.id()); - - // No alert - scanSampleWithDate("2012-01-01"); - - // Red alert because lines number has not changed since previous analysis - scanSample(); - - Selenese selenese = Selenese.builder() - .setHtmlTestsInClasspath("display-period-alerts", - "/projectAdministration/ProjectAdministrationTest/display-alerts/should-display-period-alerts-correctly.html" - ).build(); - new SeleneseTest(selenese).runOn(orchestrator); - - qgClient.unsetDefault(); - qgClient.destroy(qGate.id()); - } - /** * SONAR-3425 */ diff --git a/it/it-tests/src/test/java/it/qualityGate/QualityGateNotificationTest.java b/it/it-tests/src/test/java/it/qualityGate/QualityGateNotificationTest.java index 74ca965d61b..94f1b365f3d 100644 --- a/it/it-tests/src/test/java/it/qualityGate/QualityGateNotificationTest.java +++ b/it/it-tests/src/test/java/it/qualityGate/QualityGateNotificationTest.java @@ -11,7 +11,9 @@ import com.sonar.orchestrator.selenium.Selenese; import it.Category1Suite; import java.util.Iterator; import javax.mail.internet.MimeMessage; +import org.junit.AfterClass; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.sonar.wsclient.Sonar; @@ -24,11 +26,13 @@ import org.sonar.wsclient.services.Resource; import org.sonar.wsclient.services.ResourceQuery; import org.subethamail.wiser.Wiser; import org.subethamail.wiser.WiserMessage; +import util.ItUtils; import util.NetworkUtils; import util.selenium.SeleneseTest; import static org.assertj.core.api.Assertions.assertThat; import static util.ItUtils.projectDir; +import static util.ItUtils.setServerProperty; public class QualityGateNotificationTest { @@ -37,6 +41,18 @@ public class QualityGateNotificationTest { @ClassRule public static Orchestrator orchestrator = Category1Suite.ORCHESTRATOR; + @BeforeClass + public static void initPeriods() throws Exception { + setServerProperty(orchestrator, "sonar.timemachine.period1", "previous_analysis"); + setServerProperty(orchestrator, "sonar.timemachine.period2", "30"); + setServerProperty(orchestrator, "sonar.timemachine.period3", "previous_version"); + } + + @AfterClass + public static void resetPeriods() throws Exception { + ItUtils.resetPeriods(orchestrator); + } + @Before public void cleanUp() { orchestrator.resetData(); @@ -57,8 +73,8 @@ public class QualityGateNotificationTest { Selenese selenese = Selenese .builder() .setHtmlTestsInClasspath("notifications", - "/qualitygate/notifications/email_configuration.html", - "/qualitygate/notifications/activate_notification_channels.html").build(); + "/qualityGate/notifications/email_configuration.html", + "/qualityGate/notifications/activate_notification_channels.html").build(); new SeleneseTest(selenese).runOn(orchestrator); // Create quality gate with conditions on variations diff --git a/it/it-tests/src/test/java/it/qualityGate/QualityGateUiTest.java b/it/it-tests/src/test/java/it/qualityGate/QualityGateUiTest.java new file mode 100644 index 00000000000..94fc1646481 --- /dev/null +++ b/it/it-tests/src/test/java/it/qualityGate/QualityGateUiTest.java @@ -0,0 +1,136 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package it.qualityGate; + +import com.sonar.orchestrator.Orchestrator; +import com.sonar.orchestrator.build.SonarRunner; +import com.sonar.orchestrator.selenium.Selenese; +import it.Category1Suite; +import javax.annotation.Nullable; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.sonar.wsclient.qualitygate.NewCondition; +import org.sonar.wsclient.qualitygate.QualityGate; +import org.sonar.wsclient.qualitygate.QualityGateClient; +import org.sonar.wsclient.qualitygate.QualityGateCondition; +import org.sonar.wsclient.qualitygate.UpdateCondition; +import util.ItUtils; +import util.selenium.SeleneseTest; + +import static util.ItUtils.projectDir; +import static util.ItUtils.setServerProperty; + +public class QualityGateUiTest { + + @ClassRule + public static Orchestrator orchestrator = Category1Suite.ORCHESTRATOR; + + @BeforeClass + public static void initPeriods() throws Exception { + setServerProperty(orchestrator, "sonar.timemachine.period1", "previous_analysis"); + setServerProperty(orchestrator, "sonar.timemachine.period2", "30"); + setServerProperty(orchestrator, "sonar.timemachine.period3", "previous_version"); + } + + @AfterClass + public static void resetPeriods() throws Exception { + ItUtils.resetPeriods(orchestrator); + } + + @Before + public void cleanUp() { + orchestrator.resetData(); + } + + /** + * SONAR-3326 + */ + @Test + public void display_alerts_correctly_in_history_page() { + QualityGateClient qgClient = orchestrator.getServer().adminWsClient().qualityGateClient(); + QualityGate qGate = qgClient.create("AlertsForHistory"); + qgClient.setDefault(qGate.id()); + + // with this configuration, project should have an Orange alert + QualityGateCondition lowThresholds = qgClient.createCondition(NewCondition.create(qGate.id()).metricKey("lines").operator("GT").warningThreshold("5").errorThreshold("50")); + scanSampleWithDate("2012-01-01"); + // with this configuration, project should have a Green alert + qgClient.updateCondition(UpdateCondition.create(lowThresholds.id()).metricKey("lines").operator("GT").warningThreshold("5000").errorThreshold("5000")); + scanSampleWithDate("2012-01-02"); + + new SeleneseTest(Selenese.builder() + .setHtmlTestsInClasspath("display-alerts-history-page", + "/qualityGate/QualityGateUiTest/should-display-alerts-correctly-history-page.html" + ).build()).runOn(orchestrator); + + qgClient.unsetDefault(); + qgClient.destroy(qGate.id()); + } + + /** + * SONAR-1352 + */ + @Test + public void display_period_alert_on_project_dashboard() { + QualityGateClient qgClient = orchestrator.getServer().adminWsClient().qualityGateClient(); + QualityGate qGate = qgClient.create("AlertsForDashboard"); + qgClient.createCondition(NewCondition.create(qGate.id()).metricKey("lines").operator("LT").warningThreshold("0").errorThreshold("10") + .period(1)); + qgClient.setDefault(qGate.id()); + + // No alert + scanSampleWithDate("2012-01-01"); + + // Red alert because lines number has not changed since previous analysis + scanSample(); + + new SeleneseTest(Selenese.builder() + .setHtmlTestsInClasspath("display-period-alerts", + "/qualityGate/QualityGateUiTest/should-display-period-alerts-correctly.html" + ).build()).runOn(orchestrator); + + qgClient.unsetDefault(); + qgClient.destroy(qGate.id()); + } + + private void scanSample() { + scanSample(null, null); + } + + private void scanSampleWithDate(String date) { + scanSample(date, null); + } + + private void scanSample(@Nullable String date, @Nullable String profile) { + SonarRunner scan = SonarRunner.create(projectDir("shared/xoo-sample")) + .setProperties("sonar.cpd.skip", "true"); + if (date != null) { + scan.setProperty("sonar.projectDate", date); + } + if (profile != null) { + scan.setProfile(profile); + } + orchestrator.executeBuild(scan); + } + +} diff --git a/it/it-tests/src/test/resources/projectAdministration/ProjectAdministrationTest/display-alerts-history-page/should-display-alerts-correctly-history-page.html b/it/it-tests/src/test/resources/projectAdministration/ProjectAdministrationTest/display-alerts-history-page/should-display-alerts-correctly-history-page.html deleted file mode 100644 index 4d0d7ac99c6..00000000000 --- a/it/it-tests/src/test/resources/projectAdministration/ProjectAdministrationTest/display-alerts-history-page/should-display-alerts-correctly-history-page.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - should-display-alerts-correctly-history-page - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
should-display-alerts-correctly-history-page
open/sonar/sessions/login
typeloginadmin
typepasswordadmin
clickAndWaitcommit
open/sonar/dashboard/index/sample
clickcss=#context-navigation .navbar-admin-link
waitForElementPresentlink=History
clickAndWaitlink=History
assertElementPresent//img[@title='Quality Gate Status: Green (was Orange). ']
assertElementPresent//img[@title='Quality Gate Status: Orange. Lines > 5']
- - diff --git a/it/it-tests/src/test/resources/projectAdministration/ProjectAdministrationTest/display-alerts/should-display-period-alerts-correctly.html b/it/it-tests/src/test/resources/projectAdministration/ProjectAdministrationTest/display-alerts/should-display-period-alerts-correctly.html deleted file mode 100644 index 9c4db5c8779..00000000000 --- a/it/it-tests/src/test/resources/projectAdministration/ProjectAdministrationTest/display-alerts/should-display-period-alerts-correctly.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - should-display-alerts-correctly-history-page - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
should-display-alerts-correctly-history-page
open/sonar/sessions/login
typeloginadmin
typepasswordadmin
clickAndWaitcommit
open/sonar/widget?id=alerts&resource=sample
assertTextclass=alertsglob:*Lines*0 < 10*since previous analysis*
assertTextclass=alert_ERROR0
- - diff --git a/it/it-tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-alerts-correctly-history-page.html b/it/it-tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-alerts-correctly-history-page.html new file mode 100644 index 00000000000..42633d4b900 --- /dev/null +++ b/it/it-tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-alerts-correctly-history-page.html @@ -0,0 +1,89 @@ + + + + + + + + should-display-alerts-correctly-history-page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
should-display-alerts-correctly-history-page
open/sonar/sessions/login
typeloginadmin
typepasswordadmin
clickAndWaitcommit
open/sonar/dashboard/index/sample
clickcss=#context-navigation .navbar-admin-link
waitForElementPresentlink=History
clickAndWaitlink=History
assertElementPresent//img[@title='Quality Gate Status: Green (was Orange). ']
assertElementPresent//img[@title='Quality Gate Status: Orange. Lines > 5']
+ + diff --git a/it/it-tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-period-alerts-correctly.html b/it/it-tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-period-alerts-correctly.html new file mode 100644 index 00000000000..bf5cbf12acc --- /dev/null +++ b/it/it-tests/src/test/resources/qualityGate/QualityGateUiTest/should-display-period-alerts-correctly.html @@ -0,0 +1,74 @@ + + + + + + + + should-display-alerts-correctly-history-page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
should-display-alerts-correctly-history-page
open/sonar/sessions/login
typeloginadmin
typepasswordadmin
clickAndWaitcommit
open/sonar/widget?id=alerts&resource=sample
assertTextclass=alertsglob:*Lines*0 < 10*since previous analysis*
assertTextclass=alert_ERROR0
+ + diff --git a/it/it-tests/src/test/resources/qualitygate/notifications/activate_notification_channels.html b/it/it-tests/src/test/resources/qualityGate/notifications/activate_notification_channels.html similarity index 100% rename from it/it-tests/src/test/resources/qualitygate/notifications/activate_notification_channels.html rename to it/it-tests/src/test/resources/qualityGate/notifications/activate_notification_channels.html diff --git a/it/it-tests/src/test/resources/qualitygate/notifications/email_configuration.html b/it/it-tests/src/test/resources/qualityGate/notifications/email_configuration.html similarity index 100% rename from it/it-tests/src/test/resources/qualitygate/notifications/email_configuration.html rename to it/it-tests/src/test/resources/qualityGate/notifications/email_configuration.html -- 2.39.5