You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by vo...@apache.org on 2020/06/20 20:29:59 UTC

[fineract] branch develop updated: FINERACT-1040 Re-enabling and fixing CampaignTests

This is an automated email from the ASF dual-hosted git repository.

vorburger pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new f3862bc  FINERACT-1040 Re-enabling and fixing CampaignTests
f3862bc is described below

commit f3862bca8baaab4ad5666af5820edddc091438f5
Author: Petri Tuomola <pe...@tuomola.org>
AuthorDate: Wed Jun 17 10:37:36 2020 +0300

    FINERACT-1040 Re-enabling and fixing CampaignTests
---
 fineract-provider/build.gradle                     |  1 +
 fineract-provider/dependencies.gradle              |  4 ++
 .../common/organisation/CampaignsHelper.java       | 17 ++------
 .../common/organisation/CampaignsTest.java         | 47 +++++++++++++++++-----
 .../integrationtests/common/report/ReportData.java | 14 ++++---
 .../classdupes/ClasspathHellDuplicatesChecker.java | 18 ++-------
 6 files changed, 58 insertions(+), 43 deletions(-)

diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle
index 2f0e674..45df9b9 100644
--- a/fineract-provider/build.gradle
+++ b/fineract-provider/build.gradle
@@ -114,6 +114,7 @@ dependencyManagement {
         dependency 'org.awaitility:awaitility:4.0.3'
         dependency 'com.github.spotbugs:spotbugs-annotations:4.0.4'
         dependency 'javax.cache:cache-api:1.1.1'
+        dependency 'org.mock-server:mockserver-junit-jupiter:5.10'
 
         // If this is upgraded, you need to change path in WebFrontEndConfiguration
         dependency 'org.webjars.npm:swagger-ui-dist:3.27.0'
diff --git a/fineract-provider/dependencies.gradle b/fineract-provider/dependencies.gradle
index 80264da..9f42553 100644
--- a/fineract-provider/dependencies.gradle
+++ b/fineract-provider/dependencies.gradle
@@ -124,6 +124,10 @@ dependencies {
             'io.github.classgraph:classgraph',
             'org.awaitility:awaitility'
     )
+    testImplementation('org.mock-server:mockserver-junit-jupiter') {
+        exclude group: 'com.sun.mail', module: 'mailapi'
+        exclude group: 'javax.servlet', module: 'javax.servlet-api'
+    }
     testImplementation ('io.rest-assured:rest-assured') {
         exclude group: 'commons-logging'
         exclude group: 'org.apache.sling'
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/organisation/CampaignsHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/organisation/CampaignsHelper.java
index 580f60e..056c6a5 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/organisation/CampaignsHelper.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/organisation/CampaignsHelper.java
@@ -22,12 +22,9 @@ import static io.restassured.RestAssured.given;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
 import io.restassured.path.json.JsonPath;
 import io.restassured.specification.RequestSpecification;
 import io.restassured.specification.ResponseSpecification;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import org.apache.fineract.integrationtests.common.Utils;
@@ -166,28 +163,22 @@ public class CampaignsHelper {
         return json;
     }
 
-    public ArrayList<ReportData> getReports() {
+    public List<ReportData> getReports() {
         return getReports(BUSINESS_RULE_OPTIONS);
     }
 
-    private ArrayList<ReportData> getReports(String jsonAttributeToGetBack) {
+    private List<ReportData> getReports(String jsonAttributeToGetBack) {
         LOG.info("--------------------------------- GET REPORTS OPTIONS -------------------------------");
         Assert.notNull(jsonAttributeToGetBack, "jsonAttributeToGetBack may not be null");
         final String templateUrl = SMS_CAMPAIGNS_URL + "/template?" + Utils.TENANT_IDENTIFIER;
         final String json = given().spec(requestSpec).expect().spec(responseSpec).log().ifError().when().get(templateUrl).andReturn()
                 .asString();
         Assert.notNull(json, "json");
-        ArrayList<ReportData> reportsList = new ArrayList<>();
-        String reportsString = new Gson().toJson(JsonPath.from(json).get(jsonAttributeToGetBack));
-        Assert.notNull(reportsString, "reportsString");
-        final Gson gson = new Gson();
-        final Type typeOfHashMap = new TypeToken<List<ReportData>>() {}.getType();
-        reportsList = gson.fromJson(reportsString, typeOfHashMap);
-        return reportsList;
+        return JsonPath.from(json).getList(jsonAttributeToGetBack, ReportData.class);
     }
 
     private Long getSelectedReportId(final String reportName) {
-        ArrayList<ReportData> reports = getReports();
+        List<ReportData> reports = getReports();
 
         if (reports != null && !reports.isEmpty()) {
             for (ReportData reportData : reports) {
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/organisation/CampaignsTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/organisation/CampaignsTest.java
index bf83042..135c537 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/organisation/CampaignsTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/organisation/CampaignsTest.java
@@ -19,6 +19,8 @@
 package org.apache.fineract.integrationtests.common.organisation;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockserver.model.HttpRequest.request;
+import static org.mockserver.model.HttpResponse.response;
 
 import io.restassured.builder.RequestSpecBuilder;
 import io.restassured.builder.ResponseSpecBuilder;
@@ -30,10 +32,16 @@ import java.util.HashMap;
 import org.apache.fineract.integrationtests.common.CommonConstants;
 import org.apache.fineract.integrationtests.common.Utils;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockserver.integration.ClientAndServer;
+import org.mockserver.junit.jupiter.MockServerExtension;
+import org.mockserver.junit.jupiter.MockServerSettings;
+import org.mockserver.model.MediaType;
+
+@ExtendWith(MockServerExtension.class)
+@MockServerSettings(ports = { 9191 })
 
-@Disabled
 public class CampaignsTest {
 
     private RequestSpecification requestSpec;
@@ -53,6 +61,25 @@ public class CampaignsTest {
 
     public static final String DATE_FORMAT = "dd MMMM yyyy";
 
+    private final ClientAndServer client;
+
+    public CampaignsTest(ClientAndServer client) {
+        this.client = client;
+
+        // Set up mock server for message-gateway
+        this.client.when(request().withMethod("GET").withPath("/smsbridges"))
+                .respond(response().withContentType(MediaType.APPLICATION_JSON).withBody("[\n" + //
+                        "    {\n" + //
+                        "        \"id\": 1,\n" + //
+                        "        \"tenantId\": 1,\n" + //
+                        "        \"phoneNo\": \"+1234567890\",\n" + //
+                        "        \"providerName\": \"Dummy SMS Provider - Testing\",\n" + //
+                        "        \"providerDescription\": \"Dummy, just for testing\"\n" + //
+                        "    }\n" + //
+                        "]") //
+                );
+    }
+
     @BeforeEach
     public void setup() {
         Utils.initializeRESTAssured();
@@ -177,11 +204,11 @@ public class CampaignsTest {
         this.campaignsHelper.verifyCampaignCreatedOnServer(this.requestSpec, this.responseSpec, campaignId);
 
         // activating campaign with failure
-        ArrayList<HashMap> campaignDateValidationData = (ArrayList<HashMap>) campaignsHelperWithError.performActionsOnCampaignWithFailure(
-                campaignId, ACTIVATE_COMMAND, Utils.getLocalDateOfTenant().plusDays(1).toString(DATE_FORMAT),
-                CommonConstants.RESPONSE_ERROR);
+        ArrayList<HashMap<String, Object>> campaignDateValidationData = (ArrayList<HashMap<String, Object>>) campaignsHelperWithError
+                .performActionsOnCampaignWithFailure(campaignId, ACTIVATE_COMMAND,
+                        Utils.getLocalDateOfTenant().plusDays(1).toString(DATE_FORMAT), CommonConstants.RESPONSE_ERROR);
         assertEquals("error.msg.campaign.activationDate.in.the.future",
-                ((HashMap<String, Object>) campaignDateValidationData.get(0)).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
+                campaignDateValidationData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
 
         // activating campaign
         Integer activatedCampaignId = this.campaignsHelper.performActionsOnCampaign(this.requestSpec, this.responseSpec, campaignId,
@@ -189,10 +216,10 @@ public class CampaignsTest {
         assertEquals(activatedCampaignId, campaignId);
 
         // activating campaign with failure
-        ArrayList<HashMap> campaignErrorData = (ArrayList<HashMap>) campaignsHelperWithError.performActionsOnCampaignWithFailure(
-                activatedCampaignId, ACTIVATE_COMMAND, Utils.getLocalDateOfTenant().toString(DATE_FORMAT), CommonConstants.RESPONSE_ERROR);
-        assertEquals("error.msg.campaign.already.active",
-                ((HashMap<String, Object>) campaignErrorData.get(0)).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
+        ArrayList<HashMap<String, Object>> campaignErrorData = (ArrayList<HashMap<String, Object>>) campaignsHelperWithError
+                .performActionsOnCampaignWithFailure(activatedCampaignId, ACTIVATE_COMMAND,
+                        Utils.getLocalDateOfTenant().toString(DATE_FORMAT), CommonConstants.RESPONSE_ERROR);
+        assertEquals("error.msg.campaign.already.active", campaignErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
 
         // closing campaign again for deletion
         Integer closedCampaignId = this.campaignsHelper.performActionsOnCampaign(this.requestSpec, this.responseSpec, campaignId,
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/report/ReportData.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/report/ReportData.java
index 800a846..f35abb3 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/report/ReportData.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/report/ReportData.java
@@ -22,17 +22,19 @@ import java.util.Map;
 
 public class ReportData {
 
-    private final Long reportId;
+    private Long reportId;
 
-    private final String reportName;
+    private String reportName;
 
-    private final String reportType;
+    private String reportType;
 
-    private final String reportSubType;
+    private String reportSubType;
 
-    private final String reportDescription;
+    private String reportDescription;
 
-    private final Map<String, Object> reportParamName;
+    private Map<String, Object> reportParamName;
+
+    public ReportData() {}
 
     public ReportData(final Long reportId, final String reportName, final String reportType, final String reportSubType,
             final Map<String, Object> reportParamName, final String reportDescription) {
diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/classdupes/ClasspathHellDuplicatesChecker.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/classdupes/ClasspathHellDuplicatesChecker.java
index 88f86f2..d7e05e2 100644
--- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/classdupes/ClasspathHellDuplicatesChecker.java
+++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/classdupes/ClasspathHellDuplicatesChecker.java
@@ -89,20 +89,7 @@ public class ClasspathHellDuplicatesChecker {
     private boolean skipJAR(String jarPath) {
         // ./gradlew test finds classes from the Gradle Wrapper (which don't
         // show up in-IDE), exclude those
-        return jarPath.contains("/.gradle/wrapper/dists/") || jarPath.contains("/io.rest-assured/"); // TODO
-                                                                                                     // FINERACT-884
-                                                                                                     // remove
-                                                                                                     // when
-                                                                                                     // RestAssured
-                                                                                                     // was
-                                                                                                     // bumped
-                                                                                                     // from
-                                                                                                     // 3.3.0
-                                                                                                     // to
-                                                                                                     // 4.3.0
-                                                                                                     // in
-                                                                                                     // Spring
-                                                                                                     // BOM
+        return jarPath.contains("/.gradle/wrapper/dists/");
     }
 
     protected boolean isHarmlessDuplicate(String resourcePath) {
@@ -121,6 +108,9 @@ public class ClasspathHellDuplicatesChecker {
                 || resourcePath.startsWith("org/opendaylight/blueprint/") || resourcePath.endsWith("reference.conf") // in
                                                                                                                      // Akka's
                                                                                                                      // JARs
+                // json-schema-core and json-schema-validator depend on each
+                // other and include these files
+                || resourcePath.equals("draftv4/schema") || resourcePath.equals("draftv3/schema") //
                 || resourcePath.equals("WEB-INF/web.xml") || resourcePath.equals("META-INF/web-fragment.xml")
                 || resourcePath.equals("META-INF/eclipse.inf") || resourcePath.equals("META-INF/ECLIPSE_.SF")
                 || resourcePath.equals("META-INF/ECLIPSE_.RSA") || resourcePath.equals("META-INF/BC2048KE.DSA")