You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ma...@apache.org on 2016/01/28 06:46:49 UTC
[04/51] [partial] incubator-fineract git commit: initial code push
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java
new file mode 100755
index 0000000..fa46249
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java
@@ -0,0 +1,442 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.HashMap;
+
+import org.apache.fineract.infrastructure.codes.domain.CodeValue;
+import org.apache.fineract.integrationtests.common.system.CodeHelper;
+
+import com.google.gson.Gson;
+import com.jayway.restassured.specification.RequestSpecification;
+import com.jayway.restassured.specification.ResponseSpecification;
+
+public class ClientHelper {
+
+ private final RequestSpecification requestSpec;
+ private final ResponseSpecification responseSpec;
+
+ private static final String CREATE_CLIENT_URL = "/fineract-provider/api/v1/clients?" + Utils.TENANT_IDENTIFIER;
+ private static final String CLIENT_URL = "/fineract-provider/api/v1/clients";
+ private static final String CLOSE_CLIENT_COMMAND = "close";
+ private static final String REACTIVATE_CLIENT_COMMAND = "reactivate";
+ private static final String REJECT_CLIENT_COMMAND = "reject";
+ private static final String ACTIVATE_CLIENT_COMMAND = "activate";
+ private static final String WITHDRAW_CLIENT_COMMAND = "withdraw";
+
+ public static final String CREATED_DATE = "27 November 2014";
+ public static final String CREATED_DATE_PLUS_ONE = "28 November 2014";
+ public static final String CREATED_DATE_MINUS_ONE = "27 November 2014";
+ public static final String TRANSACTION_DATE = "01 March 2013";
+ public static final String LAST_TRANSACTION_DATE = "01 March 2013";
+ public static final String DATE_FORMAT = "dd MMMM yyyy";
+
+ public ClientHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ this.requestSpec = requestSpec;
+ this.responseSpec = responseSpec;
+ }
+
+ public static Integer createClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ return createClient(requestSpec, responseSpec, "04 March 2011");
+ }
+
+ public static Integer createClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String activationDate) {
+ return createClient(requestSpec, responseSpec, activationDate, "1");
+ }
+
+ public static Integer createClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String activationDate, final String officeId) {
+ System.out.println("---------------------------------CREATING A CLIENT---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, getTestClientAsJSON(activationDate, officeId),
+ "clientId");
+ }
+
+ public static Integer createClientAsPerson(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ return createClientAsPerson(requestSpec, responseSpec, "04 March 2011");
+ }
+
+ public static Integer createClientAsPerson(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String activationDate) {
+ return createClientAsPerson(requestSpec, responseSpec, activationDate, "1");
+ }
+
+ public static Integer createClientAsPerson(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String activationDate, final String officeId) {
+
+ System.out.println("---------------------------------CREATING A CLIENT NON PERSON(ORGANISATION)---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, getTestPersonClientAsJSON(activationDate, officeId),
+ "clientId");
+ }
+
+ public static Integer createClientAsEntity(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ return createClientAsEntity(requestSpec, responseSpec, "04 March 2011");
+ }
+
+ public static Integer createClientAsEntity(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String activationDate) {
+ return createClientAsEntity(requestSpec, responseSpec, activationDate, "1");
+ }
+
+ public static Integer createClientAsEntity(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String activationDate, final String officeId) {
+
+ Integer constitutionCodeId = (Integer) CodeHelper.getCodeByName(requestSpec, responseSpec, "Constitution").get("id");
+ Integer soleProprietorCodeValueId = (Integer) CodeHelper.retrieveOrCreateCodeValue(constitutionCodeId, requestSpec, responseSpec).get("id");
+
+ System.out.println("---------------------------------CREATING A CLIENT NON PERSON(ORGANISATION)---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, getTestEntityClientAsJSON(activationDate, officeId, soleProprietorCodeValueId),
+ "clientId");
+ }
+
+ public static Integer createClientForAccountPreference(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer clientType, String jsonAttributeToGetBack) {
+ final String activationDate = "04 March 2011";
+ final String officeId = "1";
+ System.out.println(
+ "---------------------------------CREATING A CLIENT BASED ON ACCOUNT PREFERENCE---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL,
+ getTestClientWithClientTypeAsJSON(activationDate, officeId, clientType.toString()), jsonAttributeToGetBack);
+ }
+
+ public static Object assignStaffToClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String clientId, final String staffId) {
+ final String CLIENT_ASSIGN_STAFF_URL = "/fineract-provider/api/v1/clients/" + clientId + "?" + Utils.TENANT_IDENTIFIER
+ + "&command=assignStaff";
+
+ System.out.println("---------------------------------CREATING A CLIENT---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, CLIENT_ASSIGN_STAFF_URL, assignStaffToClientAsJson(staffId), "changes");
+ }
+
+ public static Integer getClientsStaffId(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String clientId) {
+ return (Integer) getClient(requestSpec, responseSpec, clientId, "staffId");
+ }
+
+ public static String getTestClientAsJSON(final String dateOfJoining, final String officeId) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("officeId", officeId);
+ map.put("firstname", Utils.randomNameGenerator("Client_FirstName_", 5));
+ map.put("lastname", Utils.randomNameGenerator("Client_LastName_", 4));
+ map.put("externalId", randomIDGenerator("ID_", 7));
+ map.put("dateFormat", DATE_FORMAT);
+ map.put("locale", "en");
+ map.put("active", "true");
+ map.put("activationDate", dateOfJoining);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static String getTestPersonClientAsJSON(final String dateOfJoining, final String officeId) {
+ final HashMap<String, Object> map = new HashMap<>();
+ map.put("officeId", officeId);
+ map.put("fullname", Utils.randomNameGenerator("Client_FullName_", 5));
+ map.put("externalId", randomIDGenerator("ID_", 7));
+ map.put("dateFormat", DATE_FORMAT);
+ map.put("locale", "en");
+ map.put("active", "true");
+ map.put("activationDate", dateOfJoining);
+ map.put("legalFormId", 1);
+
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static String getTestEntityClientAsJSON(final String dateOfJoining, final String officeId, final Integer soleProprietorCodeValueId) {
+ final HashMap<String, Object> map = new HashMap<>();
+ map.put("officeId", officeId);
+ map.put("fullname", Utils.randomNameGenerator("Client_FullName_", 5));
+ map.put("externalId", randomIDGenerator("ID_", 7));
+ map.put("dateFormat", DATE_FORMAT);
+ map.put("locale", "en");
+ map.put("active", "true");
+ map.put("activationDate", dateOfJoining);
+ map.put("legalFormId", 2);
+
+ final HashMap<String, Object> clientNonPersonMap = new HashMap<>();
+ clientNonPersonMap.put("constitutionId", soleProprietorCodeValueId);
+ map.put("clientNonPersonDetails", clientNonPersonMap);
+
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static String getTestClientWithClientTypeAsJSON(final String dateOfJoining, final String officeId, final String clientType) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("officeId", officeId);
+ map.put("firstname", Utils.randomNameGenerator("Client_FirstName_", 5));
+ map.put("lastname", Utils.randomNameGenerator("Client_LastName_", 4));
+ map.put("externalId", randomIDGenerator("ID_", 7));
+ map.put("dateFormat", DATE_FORMAT);
+ map.put("locale", "en");
+ map.put("active", "true");
+ map.put("activationDate", dateOfJoining);
+ map.put("clientTypeId", clientType);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static String assignStaffToClientAsJson(final String staffId) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("staffId", staffId);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static void verifyClientCreatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer generatedClientID) {
+ System.out.println("------------------------------CHECK CLIENT DETAILS------------------------------------\n");
+ final String CLIENT_URL = "/fineract-provider/api/v1/clients/" + generatedClientID + "?" + Utils.TENANT_IDENTIFIER;
+ final Integer responseClientID = Utils.performServerGet(requestSpec, responseSpec, CLIENT_URL, "id");
+ assertEquals("ERROR IN CREATING THE CLIENT", generatedClientID, responseClientID);
+ }
+
+ public static Object getClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String clientId,
+ final String jsonReturn) {
+ final String GET_CLIENT_URL = "/fineract-provider/api/v1/clients/" + clientId + "?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("---------------------------------GET A CLIENT---------------------------------------------");
+ return Utils.performServerGet(requestSpec, responseSpec, GET_CLIENT_URL, jsonReturn);
+
+ }
+
+ /* Client status is a map.So adding SuppressWarnings */
+ @SuppressWarnings("unchecked")
+ public static HashMap<String, Object> getClientStatus(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String clientId) {
+ return (HashMap<String, Object>) getClient(requestSpec, responseSpec, clientId, "status");
+ }
+
+ private static String randomIDGenerator(final String prefix, final int lenOfRandomSuffix) {
+ return Utils.randomStringGenerator(prefix, lenOfRandomSuffix, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+ }
+
+ private String getCloseClientAsJSON() {
+ final HashMap<String, String> map = new HashMap<>();
+
+ /* Retrieve Code id for the Code "ClientClosureReason" */
+ String codeName = "ClientClosureReason";
+ HashMap<String, Object> code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName);
+ Integer clientClosureCodeId = (Integer) code.get("id");
+
+ /* Retrieve/Create Code Values for the Code "ClientClosureReason" */
+ HashMap<String, Object> codeValue = CodeHelper.retrieveOrCreateCodeValue(clientClosureCodeId, this.requestSpec, this.responseSpec);
+ Integer closureReasonId = (Integer) codeValue.get("id");
+
+ map.put("closureReasonId", closureReasonId.toString());
+ map.put("locale", CommonConstants.locale);
+ map.put("dateFormat", CommonConstants.dateFormat);
+ map.put("closureDate", CREATED_DATE_PLUS_ONE);
+
+ String clientJson = new Gson().toJson(map);
+ System.out.println(clientJson);
+ return clientJson;
+
+ }
+
+ private String getReactivateClientAsJSON() {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("locale", CommonConstants.locale);
+ map.put("dateFormat", CommonConstants.dateFormat);
+ map.put("reactivationDate", CREATED_DATE_PLUS_ONE);
+ String clientJson = new Gson().toJson(map);
+ System.out.println(clientJson);
+ return clientJson;
+
+ }
+
+ private String getRejectClientAsJSON() {
+ final HashMap<String, String> map = new HashMap<>();
+ /* Retrieve Code id for the Code "ClientRejectReason" */
+ String codeName = "ClientRejectReason";
+ HashMap<String, Object> code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName);
+ Integer clientRejectionReasonCodeId = (Integer) code.get("id");
+
+ /* Retrieve/Create Code Values for the Code "ClientRejectReason" */
+ HashMap<String, Object> codeValue = CodeHelper.retrieveOrCreateCodeValue(clientRejectionReasonCodeId, this.requestSpec,
+ this.responseSpec);
+ Integer rejectionReasonId = (Integer) codeValue.get("id");
+
+ map.put("locale", CommonConstants.locale);
+ map.put("dateFormat", CommonConstants.dateFormat);
+ map.put("rejectionDate", CREATED_DATE_PLUS_ONE);
+ map.put("rejectionReasonId", rejectionReasonId.toString());
+ String clientJson = new Gson().toJson(map);
+ System.out.println(clientJson);
+ return clientJson;
+
+ }
+
+ private String getActivateClientAsJSON() {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("locale", CommonConstants.locale);
+ map.put("dateFormat", CommonConstants.dateFormat);
+ map.put("activationDate", CREATED_DATE_PLUS_ONE);
+ String clientJson = new Gson().toJson(map);
+ System.out.println(clientJson);
+ return clientJson;
+
+ }
+
+ private String getWithdrawClientAsJSON() {
+ final HashMap<String, String> map = new HashMap<>();
+ /* Retrieve Code id for the Code "ClientWithdrawReason" */
+ String codeName = "ClientWithdrawReason";
+ HashMap<String, Object> code = CodeHelper.getCodeByName(this.requestSpec, this.responseSpec, codeName);
+ Integer clientWithdrawReasonCodeId = (Integer) code.get("id");
+
+ /* Retrieve/Create Code Values for the Code "ClientWithdrawReason" */
+ HashMap<String, Object> codeValue = CodeHelper.retrieveOrCreateCodeValue(clientWithdrawReasonCodeId, this.requestSpec,
+ this.responseSpec);
+ Integer withdrawalReasonId = (Integer) codeValue.get("id");
+
+ map.put("locale", CommonConstants.locale);
+ map.put("dateFormat", CommonConstants.dateFormat);
+ map.put("withdrawalDate", CREATED_DATE_PLUS_ONE);
+ map.put("withdrawalReasonId", withdrawalReasonId.toString());
+ String clientJson = new Gson().toJson(map);
+ System.out.println(clientJson);
+ return clientJson;
+
+ }
+
+ public static String getSpecifiedDueDateChargesClientAsJSON(final String chargeId, final String dueDate) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("locale", "en_GB");
+ map.put("dateFormat", DATE_FORMAT);
+ map.put("dueDate", dueDate);
+ map.put("chargeId", chargeId);
+ map.put("amount", "200");
+ String json = new Gson().toJson(map);
+ return json;
+ }
+
+ public static String getPayChargeJSON(final String date, String amount) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("locale", "en_GB");
+ map.put("dateFormat", DATE_FORMAT);
+ map.put("transactionDate", date);
+ map.put("amount", amount);
+ String json = new Gson().toJson(map);
+ System.out.println(json);
+ return json;
+ }
+
+ public static String getWaiveChargeJSON(final String amount, String clientChargeId) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("locale", "en_GB");
+ map.put("amount", amount);
+ map.put("clientChargeId", clientChargeId);
+ String json = new Gson().toJson(map);
+ System.out.println(json);
+ return json;
+ }
+
+ public HashMap<String, Object> closeClient(final Integer clientId) {
+ System.out.println("--------------------------------- CLOSE CLIENT -------------------------------");
+ return performClientActions(createClientOperationURL(CLOSE_CLIENT_COMMAND, clientId), getCloseClientAsJSON(), clientId);
+ }
+
+ public HashMap<String, Object> reactivateClient(final Integer clientId) {
+ System.out.println("--------------------------------- REACTIVATE CLIENT -------------------------------");
+ return performClientActions(createClientOperationURL(REACTIVATE_CLIENT_COMMAND, clientId), getReactivateClientAsJSON(), clientId);
+ }
+
+ public HashMap<String, Object> rejectClient(final Integer clientId) {
+ System.out.println("--------------------------------- REJECT CLIENT -------------------------------");
+ return performClientActions(createClientOperationURL(REJECT_CLIENT_COMMAND, clientId), getRejectClientAsJSON(), clientId);
+ }
+
+ public HashMap<String, Object> activateClient(final Integer clientId) {
+ System.out.println("--------------------------------- ACTIVATE CLIENT -------------------------------");
+ return performClientActions(createClientOperationURL(ACTIVATE_CLIENT_COMMAND, clientId), getActivateClientAsJSON(), clientId);
+ }
+
+ public HashMap<String, Object> withdrawClient(final Integer clientId) {
+ System.out.println("--------------------------------- WITHDRAWN CLIENT -------------------------------");
+ return performClientActions(createClientOperationURL(WITHDRAW_CLIENT_COMMAND, clientId), getWithdrawClientAsJSON(), clientId);
+ }
+
+ private String createClientOperationURL(final String command, final Integer clientId) {
+ return CLIENT_URL + "/" + clientId + "?command=" + command + "&" + Utils.TENANT_IDENTIFIER;
+ }
+
+ private HashMap<String, Object> performClientActions(final String postURLForClient, final String jsonToBeSent, final Integer clientId) {
+ Utils.performServerPost(this.requestSpec, this.responseSpec, postURLForClient, jsonToBeSent, CommonConstants.RESPONSE_STATUS);
+ HashMap<String, Object> response = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
+
+ return response;
+ }
+
+ public static Integer addChargesForClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer clientId, final String request) {
+ System.out.println("--------------------------------- ADD CHARGES FOR Client --------------------------------");
+ final String ADD_CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/charges?" + Utils.TENANT_IDENTIFIER;
+ final HashMap<?, ?> response = Utils.performServerPost(requestSpec, responseSpec, ADD_CHARGES_URL, request, "");
+ return (Integer) response.get("resourceId");
+ }
+
+ public static String payChargesForClients(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer clientId, final Integer clientChargeId, final String json) {
+ System.out.println("--------------------------------- PAY CHARGES FOR CLIENT --------------------------------");
+ final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/charges/" + clientChargeId + "?command=paycharge&"
+ + Utils.TENANT_IDENTIFIER;
+ final HashMap<?, ?> response = Utils.performServerPost(requestSpec, responseSpec, CHARGES_URL, json, "");
+ return response.get("transactionId") != null ? response.get("transactionId").toString() : null;
+ }
+
+ public static String waiveChargesForClients(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer clientId, final Integer clientChargeId, final String json) {
+ System.out.println("--------------------------------- WAIVE CHARGES FOR CLIENT --------------------------------");
+ final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/charges/" + clientChargeId + "?command=waive&"
+ + Utils.TENANT_IDENTIFIER;
+
+ final HashMap<?, ?> response = Utils.performServerPost(requestSpec, responseSpec, CHARGES_URL, json, "");
+ return response.get("transactionId").toString();
+ }
+
+ public static Integer revertClientChargeTransaction(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String clientId, String clientChargeId) {
+ System.out.println("---------------------------------UNDO TRANSACTION---------------------------------------------");
+ final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/transactions/" + clientChargeId + "?command=undo&"
+ + Utils.TENANT_IDENTIFIER;
+
+ final HashMap<?, ?> response = Utils.performServerPost(requestSpec, responseSpec, CHARGES_URL, "", "");
+ return (Integer) response.get("resourceId");
+
+ }
+
+ public static Object getClientCharge(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String clientId, final String clientChargeId) {
+ System.out.println("---------------------------------GET CLIENT CHARGE---------------------------------------------");
+ final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/charges/" + clientChargeId + "?"
+ + Utils.TENANT_IDENTIFIER;
+ return Utils.performServerGet(requestSpec, responseSpec, CHARGES_URL, "amountOutstanding");
+ }
+
+ public static Boolean getClientTransactions(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String clientId, final String transactionId) {
+ System.out.println("---------------------------------GET CLIENT CHARGE TRANSACTIONS---------------------------------------------");
+ final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/transactions/" + transactionId + "?"
+ + Utils.TENANT_IDENTIFIER;
+ return Utils.performServerGet(requestSpec, responseSpec, CHARGES_URL, "reversed");
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CommonConstants.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CommonConstants.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CommonConstants.java
new file mode 100755
index 0000000..8ec47af
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CommonConstants.java
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+
+public interface CommonConstants {
+
+ public final static String locale = "en";
+ public static final String dateFormat = "dd MMMM yyyy";
+ public static final String RESPONSE_RESOURCE_ID = "resourceId";
+ public static final String RESPONSE_CHANGES = "changes";
+ public static final String RESPONSE_STATUS = "status";
+ public static final String RESPONSE_ERROR = "errors";
+ public static final String RESPONSE_ERROR_MESSAGE_CODE = "userMessageGlobalisationCode";
+}
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrenciesHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrenciesHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrenciesHelper.java
new file mode 100644
index 0000000..900e6bb
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrenciesHelper.java
@@ -0,0 +1,78 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import com.jayway.restassured.specification.RequestSpecification;
+import com.jayway.restassured.specification.ResponseSpecification;
+
+@SuppressWarnings({ "unused", "rawtypes", "unchecked" })
+public class CurrenciesHelper {
+
+ private static final String CURRENCIES_URL = "/fineract-provider/api/v1/currencies";
+
+ public static ArrayList<CurrencyDomain> getAllCurrencies(final RequestSpecification requestSpec,
+ final ResponseSpecification responseSpec) {
+ final String GET_ALL_CURRENCIES_URL = CURRENCIES_URL + "?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("------------------------ RETRIEVING ALL CURRENCIES -------------------------");
+ final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_ALL_CURRENCIES_URL, "");
+ ArrayList<HashMap> selectedCurrencyOptions = (ArrayList<HashMap>) response.get("selectedCurrencyOptions");
+ ArrayList<HashMap> currencyOptions = (ArrayList<HashMap>) response.get("currencyOptions");
+ currencyOptions.addAll(selectedCurrencyOptions);
+ final String jsonData = new Gson().toJson(new ArrayList<HashMap>(selectedCurrencyOptions));
+ return new Gson().fromJson(jsonData, new TypeToken<ArrayList<CurrencyDomain>>() {}.getType());
+ }
+
+ public static ArrayList<CurrencyDomain> getSelectedCurrencies(final RequestSpecification requestSpec,
+ final ResponseSpecification responseSpec) {
+ final String GET_ALL_SELECTED_CURRENCIES_URL = CURRENCIES_URL + "?fields=selectedCurrencyOptions" + "&" + Utils.TENANT_IDENTIFIER;
+ System.out.println("------------------------ RETRIEVING ALL SELECTED CURRENCIES -------------------------");
+ final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_ALL_SELECTED_CURRENCIES_URL, "");
+ final String jsonData = new Gson().toJson(response.get("selectedCurrencyOptions"));
+ return new Gson().fromJson(jsonData, new TypeToken<ArrayList<CurrencyDomain>>() {}.getType());
+ }
+
+ public static CurrencyDomain getCurrencybyCode(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String code) {
+ ArrayList<CurrencyDomain> currenciesList = getAllCurrencies(requestSpec, responseSpec);
+ for (CurrencyDomain e : currenciesList) {
+ if (e.getCode().equals(code)) return e;
+ }
+ return null;
+ }
+
+ public static ArrayList<String> updateSelectedCurrencies(final RequestSpecification requestSpec,
+ final ResponseSpecification responseSpec, final ArrayList<String> currencies) {
+ final String CURRENCIES_UPDATE_URL = CURRENCIES_URL + "?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("---------------------------------UPDATE SELECTED CURRENCIES LIST---------------------------------------------");
+ HashMap hash = Utils.performServerPut(requestSpec, responseSpec, CURRENCIES_UPDATE_URL, currenciesToJSON(currencies), "changes");
+ return (ArrayList<String>) hash.get("currencies");
+ }
+
+ private static String currenciesToJSON(final ArrayList<String> currencies) {
+ HashMap map = new HashMap<>();
+ map.put("currencies", currencies);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java
new file mode 100644
index 0000000..00cbc64
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java
@@ -0,0 +1,140 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import com.google.gson.Gson;
+
+public class CurrencyDomain implements Comparable<CurrencyDomain> {
+
+ public static class Builder {
+
+ private String code;
+ private String name;
+ private int decimalPlaces;
+ private String displaySymbol;
+ private String nameCode;
+ private String displayLabel;
+
+ private Builder(final String code, final String name, final int decimalPlaces, final String displaySymbol, final String nameCode,
+ final String displayLabel) {
+ this.code = code;
+ this.name = name;
+ this.decimalPlaces = decimalPlaces;
+ this.displaySymbol = displaySymbol;
+ this.nameCode = nameCode;
+ this.displayLabel = displayLabel;
+ }
+
+ public CurrencyDomain build() {
+ return new CurrencyDomain(this.code, this.name, this.decimalPlaces, this.displaySymbol, this.nameCode, this.displayLabel);
+ }
+ }
+
+ private String code;
+ private String name;
+ private int decimalPlaces;
+ private String displaySymbol;
+ private String nameCode;
+ private String displayLabel;
+
+ CurrencyDomain() {
+ super();
+ }
+
+ private CurrencyDomain(final String code, final String name, final int decimalPlaces, final String displaySymbol,
+ final String nameCode, final String displayLabel) {
+ super();
+ this.code = code;
+ this.name = name;
+ this.decimalPlaces = decimalPlaces;
+ this.displaySymbol = displaySymbol;
+ this.nameCode = nameCode;
+ this.displayLabel = displayLabel;
+ }
+
+ public String getCode() {
+ return this.code;
+ }
+
+ public int getDecimalPlaces() {
+ return this.decimalPlaces;
+ }
+
+ public String getDisplaySymbol() {
+ return this.displaySymbol;
+ }
+
+ public String getNameCode() {
+ return this.nameCode;
+ }
+
+ public String getDisplayLabel() {
+ return this.displayLabel;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public String toJSON() {
+ return new Gson().toJson(this);
+ }
+
+ public static CurrencyDomain fromJSON(final String jsonData) {
+ return new Gson().fromJson(jsonData, CurrencyDomain.class);
+ }
+
+ public static Builder create(final String code, final String name, final int decimalPlaces, final String displaySymbol,
+ final String nameCode, final String displayLabel) {
+ return new Builder(code, name, decimalPlaces, displaySymbol, nameCode, displayLabel);
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 1;
+
+ if (this.name != null) hash += this.name.hashCode();
+ if (this.code != null) hash += this.code.hashCode();
+ if (this.decimalPlaces >= 0) hash += this.decimalPlaces;
+ if (this.displaySymbol != null) hash += this.displaySymbol.hashCode();
+ if (this.nameCode != null) hash += this.nameCode.hashCode();
+ if (this.displayLabel != null) hash += this.displayLabel.hashCode();
+
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == this) { return true; }
+
+ if (!(obj instanceof CurrencyDomain)) return false;
+
+ CurrencyDomain cd = (CurrencyDomain) obj;
+
+ if (this.name.equals(cd.name) && this.code.equals(cd.code) && this.decimalPlaces == cd.decimalPlaces
+ && this.displaySymbol.equals(cd.displaySymbol) && this.nameCode.equals(cd.nameCode)
+ && this.displayLabel.equals(cd.displayLabel)) return true;
+ return false;
+ }
+
+ @Override
+ public int compareTo(CurrencyDomain cd) {
+ return this.name.compareTo(cd.getName());
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ExternalServicesConfigurationHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ExternalServicesConfigurationHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ExternalServicesConfigurationHelper.java
new file mode 100644
index 0000000..35011db
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ExternalServicesConfigurationHelper.java
@@ -0,0 +1,64 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import com.google.gson.Gson;
+import com.jayway.restassured.specification.RequestSpecification;
+import com.jayway.restassured.specification.ResponseSpecification;
+
+public class ExternalServicesConfigurationHelper {
+
+ private final RequestSpecification requestSpec;
+ private final ResponseSpecification responseSpec;
+
+ public ExternalServicesConfigurationHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ this.requestSpec = requestSpec;
+ this.responseSpec = responseSpec;
+ }
+
+ public static ArrayList<HashMap> getExternalServicesConfigurationByServiceName(final RequestSpecification requestSpec,
+ final ResponseSpecification responseSpec, final String serviceName) {
+ final String GET_EXTERNAL_SERVICES_CONFIG_BY_SERVICE_NAME_URL = "/fineract-provider/api/v1/externalservice/" + serviceName + "?"
+ + Utils.TENANT_IDENTIFIER;
+ System.out.println("------------------------ RETRIEVING GLOBAL CONFIGURATION BY ID -------------------------");
+ return Utils.performServerGet(requestSpec, responseSpec, GET_EXTERNAL_SERVICES_CONFIG_BY_SERVICE_NAME_URL, "");
+ }
+
+ public static HashMap updateValueForExternaServicesConfiguration(final RequestSpecification requestSpec,
+ final ResponseSpecification responseSpec, final String serviceName, final String name, final String value) {
+ final String EXTERNAL_SERVICES_CONFIG_UPDATE_URL = "/fineract-provider/api/v1/externalservice/" + serviceName + "?"
+ + Utils.TENANT_IDENTIFIER;
+ System.out.println("---------------------------------UPDATE VALUE FOR GLOBAL CONFIG---------------------------------------------");
+ HashMap map = Utils.performServerPut(requestSpec, responseSpec, EXTERNAL_SERVICES_CONFIG_UPDATE_URL,
+ updateExternalServicesConfigUpdateValueAsJSON(name, value), "");
+
+ return (HashMap) map.get("changes");
+ }
+
+ public static String updateExternalServicesConfigUpdateValueAsJSON(final String name, final String value) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put(name, value);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
new file mode 100644
index 0000000..d1acfb8
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
@@ -0,0 +1,127 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Random;
+
+import com.google.gson.Gson;
+import com.jayway.restassured.specification.RequestSpecification;
+import com.jayway.restassured.specification.ResponseSpecification;
+
+@SuppressWarnings({ "unused", "rawtypes" })
+public class GlobalConfigurationHelper {
+
+ private final RequestSpecification requestSpec;
+ private final ResponseSpecification responseSpec;
+
+ public GlobalConfigurationHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ this.requestSpec = requestSpec;
+ this.responseSpec = responseSpec;
+ }
+
+ public static ArrayList getAllGlobalConfigurations(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ final String GET_ALL_GLOBAL_CONFIG_URL = "/fineract-provider/api/v1/configurations?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("------------------------ RETRIEVING ALL GLOBAL CONFIGURATIONS -------------------------");
+ final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_ALL_GLOBAL_CONFIG_URL, "");
+ return (ArrayList) response.get("globalConfiguration");
+ }
+
+ public static HashMap getGlobalConfigurationById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String configId) {
+ final String GET_GLOBAL_CONFIG_BY_ID_URL = "/fineract-provider/api/v1/configurations/" + configId + "?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("------------------------ RETRIEVING GLOBAL CONFIGURATION BY ID -------------------------");
+ return Utils.performServerGet(requestSpec, responseSpec, GET_GLOBAL_CONFIG_BY_ID_URL, "");
+ }
+
+ public static Integer updateValueForGlobalConfiguration(final RequestSpecification requestSpec,
+ final ResponseSpecification responseSpec, final String configId, final String value) {
+ final String GLOBAL_CONFIG_UPDATE_URL = "/fineract-provider/api/v1/configurations/" + configId + "?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("---------------------------------UPDATE VALUE FOR GLOBAL CONFIG---------------------------------------------");
+ return Utils.performServerPut(requestSpec, responseSpec, GLOBAL_CONFIG_UPDATE_URL, updateGlobalConfigUpdateValueAsJSON(value),
+ "resourceId");
+ }
+
+ public static Integer updateEnabledFlagForGlobalConfiguration(final RequestSpecification requestSpec,
+ final ResponseSpecification responseSpec, final String configId, final Boolean enabled) {
+ final String GLOBAL_CONFIG_UPDATE_URL = "/fineract-provider/api/v1/configurations/" + configId + "?" + Utils.TENANT_IDENTIFIER;
+ System.out
+ .println("---------------------------------UPDATE GLOBAL CONFIG FOR ENABLED FLAG---------------------------------------------");
+ return Utils.performServerPut(requestSpec, responseSpec, GLOBAL_CONFIG_UPDATE_URL,
+ updateGlobalConfigUpdateEnabledFlagAsJSON(enabled), "resourceId");
+ }
+
+ public static ArrayList getGlobalConfigurationIsCacheEnabled(final RequestSpecification requestSpec,
+ final ResponseSpecification responseSpec) {
+ final String GET_IS_CACHE_GLOBAL_CONFIG_URL = "/fineract-provider/api/v1/caches?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("------------------------ RETRIEVING IS CACHE ENABLED GLOBAL CONFIGURATION -------------------------");
+ final ArrayList<HashMap> response = Utils.performServerGet(requestSpec, responseSpec, GET_IS_CACHE_GLOBAL_CONFIG_URL, "");
+ return response;
+ }
+
+ public static HashMap updateIsCacheEnabledForGlobalConfiguration(final RequestSpecification requestSpec,
+ final ResponseSpecification responseSpec, final String cacheType) {
+ final String IS_CACHE_GLOBAL_CONFIG_UPDATE_URL = "/fineract-provider/api/v1/caches?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("------------------UPDATE GLOBAL CONFIG FOR IS CACHE ENABLED----------------------");
+ return Utils.performServerPut(requestSpec, responseSpec, IS_CACHE_GLOBAL_CONFIG_UPDATE_URL,
+ updateIsCacheEnabledGlobalConfigUpdateAsJSON(cacheType), "changes");
+ }
+
+ public static Object updatePasswordResetDaysForGlobalConfiguration(final RequestSpecification requestSpec,
+ final ResponseSpecification responseSpec, final Integer configId, final String value, final String enabled, final String jsonAttributeToGetBack) {
+ final String UPDATE_URL = "/fineract-provider/api/v1/configurations/" + configId + "?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("------------------UPDATE GLOBAL CONFIG FOR FORCE PASSWORD RESET DAYS----------------------");
+ return Utils.performServerPut(requestSpec, responseSpec, UPDATE_URL,
+ updatePasswordResetDaysGlobalConfigAsJSON(value, enabled), jsonAttributeToGetBack);
+ }
+
+ public static String updateGlobalConfigUpdateValueAsJSON(final String value) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("value", value);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static String updatePasswordResetDaysGlobalConfigAsJSON(final String value, final String enabled) {
+ final HashMap<String, String> map = new HashMap<>();
+ if(value != null){
+ map.put("value", value);
+ }
+ map.put("enabled", enabled);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static String updateGlobalConfigUpdateEnabledFlagAsJSON(final Boolean enabled) {
+ final HashMap<String, Boolean> map = new HashMap<String, Boolean>();
+ map.put("enabled", enabled);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static String updateIsCacheEnabledGlobalConfigUpdateAsJSON(final String cacheType) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("cacheType", cacheType);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GroupHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GroupHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GroupHelper.java
new file mode 100755
index 0000000..f8a3af0
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GroupHelper.java
@@ -0,0 +1,230 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+
+import com.google.gson.Gson;
+import com.jayway.restassured.specification.RequestSpecification;
+import com.jayway.restassured.specification.ResponseSpecification;
+
+public class GroupHelper {
+
+ private static final String CREATE_GROUP_URL = "/fineract-provider/api/v1/groups?" + Utils.TENANT_IDENTIFIER;
+
+ public static Integer createGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ @SuppressWarnings("unused") final boolean active) {
+ System.out.println("---------------------------------CREATING A GROUP---------------------------------------------");
+ return createGroup(requestSpec, responseSpec, "04 March 2011");
+ }
+
+ public static Integer createGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String activationDate) {
+ System.out.println("---------------------------------CREATING A GROUP---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, CREATE_GROUP_URL, getTestGroupAsJSON(true, activationDate), "groupId");
+ }
+
+ public static Integer createGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ System.out.println("---------------------------------CREATING A GROUP---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, CREATE_GROUP_URL, getTestGroupAsJSON(false, ""), "groupId");
+ }
+
+ public static Integer associateClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String groupId, final String clientMember) {
+ final String GROUP_ASSOCIATE_URL = "/fineract-provider/api/v1/groups/" + groupId
+ + "?command=associateClients&" + Utils.TENANT_IDENTIFIER;
+ System.out.println("---------------------------------Associate Client To A GROUP---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSOCIATE_URL, associateClientAsJSON(clientMember), "groupId");
+ }
+
+ public static Integer disAssociateClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String groupId, final String clientMember) {
+ final String GROUP_ASSOCIATE_URL = "/fineract-provider/api/v1/groups/" + groupId
+ + "?command=disassociateClients&" + Utils.TENANT_IDENTIFIER;
+ System.out.println("---------------------------------Disassociate Client To A GROUP---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSOCIATE_URL, associateClientAsJSON(clientMember), "groupId");
+ }
+
+ public static Integer activateGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String groupId) {
+ final String GROUP_ASSOCIATE_URL = "/fineract-provider/api/v1/groups/" + groupId + "?command=activate&" + Utils.TENANT_IDENTIFIER;
+ System.out.println("---------------------------------Activate A GROUP---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSOCIATE_URL, activateGroupAsJSON(""), "groupId");
+ }
+
+ public static Integer updateGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String name,
+ final String groupId) {
+ final String GROUP_ASSOCIATE_URL = "/fineract-provider/api/v1/groups/" + groupId + "?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("---------------------------------UPDATE GROUP---------------------------------------------");
+ return Utils.performServerPut(requestSpec, responseSpec, GROUP_ASSOCIATE_URL, updateGroupAsJSON(name), "groupId");
+ }
+
+ public static Integer deleteGroup(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String groupId) {
+ final String GROUP_ASSOCIATE_URL = "/fineract-provider/api/v1/groups/" + groupId + "?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("---------------------------------DELETE GROUP---------------------------------------------");
+ return Utils.performServerDelete(requestSpec, responseSpec, GROUP_ASSOCIATE_URL, "groupId");
+ }
+
+
+ public static Object assignStaff(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String groupId,final Long staffId){
+ final String GROUP_ASSIGN_STAFF_URL = "/fineract-provider/api/v1/groups/" + groupId + "?" + Utils.TENANT_IDENTIFIER + "&command=assignStaff";
+ System.out.println("---------------------------------DELETE GROUP---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSIGN_STAFF_URL,assignStaffAsJSON(staffId),"changes");
+ }
+ public static Object assignStaffInheritStaffForClientAccounts(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String groupId,final String staffId){
+ final String GROUP_ASSIGN_STAFF_URL = "/fineract-provider/api/v1/groups/" + groupId + "?" + Utils.TENANT_IDENTIFIER + "&command=assignStaff";
+ System.out.println("---------------------------------DELETE GROUP---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, GROUP_ASSIGN_STAFF_URL,assignStaffAndInheritStaffForClientAccountsAsJSON(staffId),"changes");
+ }
+
+
+ public static String getTestGroupAsJSON(final boolean active, final String activationDate) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("officeId", "1");
+ map.put("name", randomNameGenerator("Group_Name_", 5));
+ map.put("externalId", randomIDGenerator("ID_", 7));
+ map.put("dateFormat", "dd MMMM yyyy");
+ map.put("locale", "en");
+ if (active) {
+ map.put("active", "true");
+ map.put("activationDate", activationDate);
+ } else {
+ map.put("active", "false");
+ map.put("submittedOnDate", "04 March 2011");
+ System.out.println("defaulting to inactive group: 04 March 2011");
+ }
+
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static String associateClientAsJSON(final String clientMember) {
+ final HashMap<String, List<String>> map = new HashMap<String, List<String>>();
+ final List<String> list = new ArrayList<>();
+ list.add(clientMember);
+ map.put("clientMembers", list);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static String activateGroupAsJSON(final String activationDate) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("dateFormat", "dd MMMM yyyy");
+ map.put("locale", "en");
+ if (StringUtils.isNotEmpty(activationDate)) {
+ map.put("activationDate", activationDate);
+ } else {
+ map.put("activationDate", "04 March 2011");
+ System.out.println("defaulting to fixed date: 04 March 2011");
+ }
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public static String updateGroupAsJSON(final String name) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("name", name);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+ public static String assignStaffAsJSON(final Long staffId) {
+ final HashMap<String, Object> map = new HashMap<>();
+ map.put("staffId", staffId);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+ public static String assignStaffAndInheritStaffForClientAccountsAsJSON(final String staffId) {
+ final HashMap<String, String> map = new HashMap<>();
+ map.put("staffId", staffId);
+ map.put("inheritStaffForClientAccounts","true");
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+
+ public static void verifyGroupCreatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer generatedGroupID) {
+ System.out.println("------------------------------CHECK GROUP DETAILS------------------------------------\n");
+ final String GROUP_URL = "/fineract-provider/api/v1/groups/" + generatedGroupID + "?" + Utils.TENANT_IDENTIFIER;
+ final Integer responseGroupID = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "id");
+ assertEquals("ERROR IN CREATING THE GROUP", generatedGroupID, responseGroupID);
+ }
+
+ public static void verifyGroupDetails(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer generatedGroupID, final String field, final String expectedValue) {
+ System.out.println("------------------------------CHECK GROUP DETAILS------------------------------------\n");
+ final String GROUP_URL = "/fineract-provider/api/v1/groups/" + generatedGroupID + "?" + Utils.TENANT_IDENTIFIER;
+ final String responseValue = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, field);
+ assertEquals("ERROR IN CREATING THE GROUP", expectedValue, responseValue);
+ }
+
+ public static void verifyGroupActivatedOnServer(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer generatedGroupID, final boolean generatedGroupStatus) {
+ System.out.println("------------------------------CHECK GROUP STATUS------------------------------------\n");
+ final String GROUP_URL = "/fineract-provider/api/v1/groups/" + generatedGroupID + "?" + Utils.TENANT_IDENTIFIER;
+ final Boolean responseGroupStatus = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "active");
+ assertEquals("ERROR IN ACTIVATING THE GROUP", generatedGroupStatus, responseGroupStatus);
+ }
+
+ public static void verifyGroupMembers(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer generatedGroupID, final Integer groupMember) {
+ List<String> list = new ArrayList<>();
+ System.out.println("------------------------------CHECK GROUP MEMBERS------------------------------------\n");
+ final String GROUP_URL = "/fineract-provider/api/v1/groups/" + generatedGroupID
+ + "?associations=clientMembers&" + Utils.TENANT_IDENTIFIER;
+ list = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "clientMembers");
+ assertTrue("ERROR IN GROUP MEMBER", list.toString().contains("id=" + groupMember.toString()));
+ }
+
+ public static void verifyEmptyGroupMembers(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer generatedGroupID) {
+ List<String> list = new ArrayList<>();
+ System.out.println("------------------------------CHECK EMPTY GROUP MEMBER LIST------------------------------------\n");
+ final String GROUP_URL = "/fineract-provider/api/v1/groups/" + generatedGroupID
+ + "?associations=clientMembers&" + Utils.TENANT_IDENTIFIER;
+ list = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "clientMembers");
+ assertEquals("GROUP MEMBER LIST NOT EMPTY", list, null);
+ }
+
+ public static void verifyGroupDeleted(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final Integer generatedGroupID) {
+ List<String> list = new ArrayList<>();
+ System.out.println("------------------------------CHECK GROUP DELETED------------------------------------\n");
+ final String GROUP_URL = "/fineract-provider/api/v1/groups/?" + Utils.TENANT_IDENTIFIER;
+ list = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "pageItems");
+
+ assertFalse("GROUP NOT DELETED", list.toString().contains("id=" + generatedGroupID.toString()));
+ }
+
+ public static String randomNameGenerator(final String prefix, final int lenOfRandomSuffix) {
+ return Utils.randomStringGenerator(prefix, lenOfRandomSuffix);
+ }
+
+ private static String randomIDGenerator(final String prefix, final int lenOfRandomSuffix) {
+ return Utils.randomStringGenerator(prefix, lenOfRandomSuffix, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java
new file mode 100644
index 0000000..d8b90ad
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HolidayHelper.java
@@ -0,0 +1,92 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.fineract.integrationtests.common.Utils;
+
+import com.google.gson.Gson;
+import com.jayway.restassured.specification.RequestSender;
+import com.jayway.restassured.specification.RequestSpecification;
+import com.jayway.restassured.specification.ResponseSpecification;
+
+@SuppressWarnings({ "unused", "rawtypes" })
+public class HolidayHelper {
+
+ private static final String HOLIDAYS_URL = "/fineract-provider/api/v1/holidays";
+ private static final String CREATE_HOLIDAY_URL = HOLIDAYS_URL + "?" + Utils.TENANT_IDENTIFIER;
+
+ private static final String OFFICE_ID = "1";
+
+ private final RequestSpecification requestSpec;
+ private final ResponseSpecification responseSpec;
+
+ public HolidayHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ this.requestSpec = requestSpec;
+ this.responseSpec = responseSpec;
+ }
+
+ public static String getCreateHolidayDataAsJSON() {
+ final HashMap<String, Object> map = new HashMap<>();
+ List<HashMap<String, String>> offices = new ArrayList<HashMap<String, String>>();
+ HashMap<String, String> officeMap = new HashMap<>();
+ officeMap.put("officeId", OFFICE_ID);
+ offices.add(officeMap);
+
+ map.put("offices", offices);
+ map.put("locale", "en");
+ map.put("dateFormat", "dd MMMM yyyy");
+ map.put("name", Utils.randomNameGenerator("HOLIDAY_", 5));
+ map.put("fromDate", "01 April 2013");
+ map.put("toDate", "01 April 2013");
+ map.put("repaymentsRescheduledTo", "08 April 2013");
+
+ String HolidayCreateJson = new Gson().toJson(map);
+ System.out.println(HolidayCreateJson);
+ return HolidayCreateJson;
+ }
+
+ public static String getActivateHolidayDataAsJSON() {
+ final HashMap<String, String> map = new HashMap<>();
+ String activateHoliday = new Gson().toJson(map);
+ System.out.println(activateHoliday);
+ return activateHoliday;
+ }
+
+ public static Integer createHolidays(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ return Utils.performServerPost(requestSpec, responseSpec, CREATE_HOLIDAY_URL, getCreateHolidayDataAsJSON(), "resourceId");
+ }
+
+ public static Integer activateHolidays(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final String holidayID) {
+ final String ACTIVATE_HOLIDAY_URL = HOLIDAYS_URL + "/" + holidayID + "?command=activate&" + Utils.TENANT_IDENTIFIER;
+ return Utils.performServerPost(requestSpec, responseSpec, ACTIVATE_HOLIDAY_URL, getActivateHolidayDataAsJSON(), "resourceId");
+ }
+
+ public static HashMap getHolidayById(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ final String holidayID) {
+ final String GET_HOLIDAY_BY_ID_URL = HOLIDAYS_URL + "/" + holidayID + "?" + Utils.TENANT_IDENTIFIER;
+ System.out.println("------------------------ RETRIEVING HOLIDAY BY ID -------------------------");
+ final HashMap response = Utils.performServerGet(requestSpec, responseSpec, GET_HOLIDAY_BY_ID_URL, "");
+ return response;
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java
new file mode 100644
index 0000000..c2ca23f
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/HookHelper.java
@@ -0,0 +1,103 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import com.google.gson.Gson;
+import com.jayway.restassured.builder.ResponseSpecBuilder;
+import com.jayway.restassured.specification.RequestSpecification;
+import com.jayway.restassured.specification.ResponseSpecification;
+
+public class HookHelper {
+
+ private final RequestSpecification requestSpec;
+ private final ResponseSpecification responseSpec;
+
+ private static final String CREATE_HOOK_URL = "/fineract-provider/api/v1/hooks?" + Utils.TENANT_IDENTIFIER;
+
+ public HookHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ this.requestSpec = requestSpec;
+ this.responseSpec = responseSpec;
+ }
+
+ public Integer createHook(final String payloadURL) {
+ System.out.println("---------------------------------CREATING A HOOK---------------------------------------------");
+ return Utils.performServerPost(requestSpec, responseSpec, CREATE_HOOK_URL, getTestHookAsJson(payloadURL),
+ "resourceId");
+ }
+
+ public String getTestHookAsJson(final String payloadURL) {
+ final HashMap<String, Object> map = new HashMap<>();
+ map.put("name", "Web");
+ map.put("displayName", Utils.randomNameGenerator("Hook_DisplayName_", 5));
+ map.put("isActive", "true");
+ final HashMap<String, String> config = new HashMap<>();
+ config.put("Content Type", "json");
+ config.put("Payload URL", payloadURL);
+ map.put("config", config);
+ final ArrayList<HashMap<String, String>> events = new ArrayList<>();
+ final HashMap<String, String> createOfficeEvent = new HashMap<>();
+ createOfficeEvent.put("actionName", "CREATE");
+ createOfficeEvent.put("entityName", "OFFICE");
+ events.add(createOfficeEvent);
+ map.put("events", events);
+ System.out.println("map : " + map);
+ return new Gson().toJson(map);
+ }
+
+ public Integer updateHook(final String payloadURL, final Long hookId) {
+ System.out.println("---------------------------------UPDATING HOOK---------------------------------------------");
+ final String UPDATE_HOOK_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER;
+ return Utils.performServerPut(this.requestSpec, this.responseSpec, UPDATE_HOOK_URL, getTestHookAsJson(payloadURL), "resourceId");
+ }
+
+ public Integer deleteHook(final Long hookId) {
+ System.out.println("---------------------------------DELETING HOOK---------------------------------------------");
+ final String DELETE_HOOK_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER;
+ return Utils.performServerDelete(this.requestSpec, this.responseSpec, DELETE_HOOK_URL, "resourceId");
+ }
+
+ public void verifyHookCreatedOnServer(final Long hookId) {
+ System.out.println("------------------------------CHECK CREATE HOOK DETAILS------------------------------------\n");
+ final String GET_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER;
+ final Integer responseHookId = Utils.performServerGet(this.requestSpec, this.responseSpec, GET_URL, "id");
+ assertEquals(hookId.toString(), responseHookId.toString());
+ }
+
+ public void verifyUpdateHook(final String updateURL, final Long hookId) {
+ System.out.println("------------------------------CHECK UPDATE HOOK DETAILS------------------------------------\n");
+ final String GET_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER;
+ ArrayList map = Utils.performServerGet(this.requestSpec, this.responseSpec, GET_URL, "config");
+ HashMap<String, String> hash = (HashMap<String, String>) map.get(1);
+ assertEquals(updateURL, hash.get("fieldValue"));
+ }
+
+ public void verifyDeleteHook(final Long hookId) {
+ System.out.println("------------------------------CHECK DELETE HOOK DETAILS------------------------------------\n");
+ final String GET_URL = "/fineract-provider/api/v1/hooks/" + hookId + "?" + Utils.TENANT_IDENTIFIER;
+ ResponseSpecification responseSpec404 = new ResponseSpecBuilder().expectStatusCode(404).build();
+ ArrayList array = Utils.performServerGet(this.requestSpec, responseSpec404, GET_URL, "errors");
+ HashMap<String, String> map = (HashMap<String, String>)array.get(0);
+ assertEquals("error.msg.hook.identifier.not.found",map.get("userMessageGlobalisationCode"));
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ImageHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ImageHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ImageHelper.java
new file mode 100644
index 0000000..c076740
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ImageHelper.java
@@ -0,0 +1,73 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import org.apache.http.HttpHeaders;
+
+import com.jayway.restassured.specification.RequestSpecification;
+import com.jayway.restassured.specification.ResponseSpecification;
+
+public class ImageHelper {
+
+ private static final String STAFF_IMAGE_URL = "/fineract-provider/api/v1/staff/";
+ private static final String IMAGES_URI = "/images";
+
+ public static Integer createImageForStaff(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ Integer staffId) {
+ System.out.println("---------------------------------CREATING AN IMAGE FOR STAFF---------------------------------------------");
+ String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
+ return Utils.performServerPost(requestSpec, responseSpec, URL, generateImageAsText(), "resourceId");
+ }
+
+ public static Integer updateImageForStaff(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ Integer staffId) {
+ System.out.println("---------------------------------UPDATING AN IMAGE FOR STAFF---------------------------------------------");
+ String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
+ return Utils.performServerPut(requestSpec, responseSpec, URL, generateImageAsText(), "resourceId");
+ }
+
+ public static String getStaffImageAsText(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ Integer staffId) {
+ System.out.println("---------------------------------RETRIEVING STAFF IMAGE---------------------------------------------");
+ String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
+ requestSpec.header(HttpHeaders.ACCEPT, "text/plain");
+ return Utils.performGetTextResponse(requestSpec, responseSpec, URL);
+ }
+
+ public static byte[] getStaffImageAsBinary(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+ Integer staffId) {
+ System.out.println("---------------------------------RETRIEVING STAFF IMAGE---------------------------------------------");
+ String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
+ requestSpec.header(HttpHeaders.ACCEPT, "application/octet-stream");
+ return Utils.performGetBinaryResponse(requestSpec, responseSpec, URL);
+ }
+
+ public static Integer deleteStaffImage(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, Integer staffId) {
+ System.out.println("---------------------------------RETRIEVING STAFF IMAGE---------------------------------------------");
+ String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
+ return Utils.performServerDelete(requestSpec, responseSpec, URL, "resourceId");
+ }
+
+ private static String generateImageAsText() {
+ return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\n"
+ + "bWFnZVJlYWR5ccllPAAAAJ1JREFUeNpi+P//PwMIA4E9EG8E4idQDGLbw+WhiiqA+D8OXAFVAzbp\n"
+ + "DxBvB2JLIGaGYkuoGEjOhhFIHAbij0BdPgxYACMj42ogJQpifwBiXSDeC8JIbt4LxSC5DyxQjTeB\n"
+ + "+BeaYb+Q5EBOAVutCzMJHUNNPADzzDokiYdAfAmJvwLkGeTgWQfyKZICS6hYBTwc0QL8ORSjBDhA\n" + "gAEAOg13B6R/SAgAAAAASUVORK5CYII=";
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java
new file mode 100644
index 0000000..7e10e9d
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/LoanRescheduleRequestHelper.java
@@ -0,0 +1,66 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import static org.junit.Assert.assertEquals;
+
+import com.jayway.restassured.specification.RequestSpecification;
+import com.jayway.restassured.specification.ResponseSpecification;
+
+public class LoanRescheduleRequestHelper {
+ private final RequestSpecification requestSpec;
+ private final ResponseSpecification responseSpec;
+
+ private static final String LOAN_RESCHEDULE_REQUEST_URL = "/fineract-provider/api/v1/rescheduleloans";
+
+ public LoanRescheduleRequestHelper(final RequestSpecification requestSpec, final ResponseSpecification responseSpec) {
+ this.requestSpec = requestSpec;
+ this.responseSpec = responseSpec;
+ }
+
+ public Integer createLoanRescheduleRequest(final String requestJSON) {
+ final String URL = LOAN_RESCHEDULE_REQUEST_URL + "?" + Utils.TENANT_IDENTIFIER;
+ return Utils.performServerPost(this.requestSpec, this.responseSpec, URL, requestJSON, "resourceId");
+ }
+
+ public Integer rejectLoanRescheduleRequest(final Integer requestId, final String requestJSON) {
+ final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER + "&command=reject";
+
+ return Utils.performServerPost(this.requestSpec, this.responseSpec, URL, requestJSON, "resourceId");
+ }
+
+ public Integer approveLoanRescheduleRequest(final Integer requestId, final String requestJSON) {
+ final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER + "&command=approve";
+
+ return Utils.performServerPost(this.requestSpec, this.responseSpec, URL, requestJSON, "resourceId");
+ }
+
+ public Object getLoanRescheduleRequest(final Integer requestId, final String param) {
+ final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER;
+
+ return Utils.performServerGet(requestSpec, responseSpec, URL, param);
+ }
+
+ public void verifyCreationOfLoanRescheduleRequest(final Integer requestId) {
+ final String URL = LOAN_RESCHEDULE_REQUEST_URL + "/" + requestId + "?" + Utils.TENANT_IDENTIFIER;
+
+ final Integer id = Utils.performServerGet(requestSpec, responseSpec, URL, "id");
+ assertEquals("ERROR IN CREATING LOAN RESCHEDULE REQUEST", requestId, id);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/4b1ec9ef/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
new file mode 100644
index 0000000..1032b24
--- /dev/null
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
@@ -0,0 +1,153 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.common;
+
+import com.google.gson.Gson;
+
+public class OfficeDomain {
+
+ public static class Builder {
+
+ private int id;
+ private String name;
+ private String nameDecorated;
+ private String externalId;
+ private String[] openingDate;
+ private String hierarchy;
+
+ private Builder(final int id, final String name,
+ final String nameDecorated, final String externalId,
+ final String[] openingDate, final String hierarchy) {
+ this.id = id;
+ this.name = name;
+ this.nameDecorated = nameDecorated;
+ this.externalId = externalId;
+ this.openingDate = openingDate;
+ this.hierarchy = hierarchy;
+ }
+
+ public OfficeDomain build() {
+ return new OfficeDomain(this.id, this.name, this.nameDecorated,
+ this.externalId, this.openingDate, this.hierarchy);
+ }
+ }
+
+ private int id;
+ private String name;
+ private String nameDecorated;
+ private String externalId;
+ private String[] openingDate;
+ private String hierarchy;
+
+ OfficeDomain() {
+ super();
+ }
+
+ private OfficeDomain(final int id, final String name,
+ final String nameDecorated, final String externalId,
+ final String[] openingDate, final String hierarchy) {
+ super();
+ this.id = id;
+ this.name = name;
+ this.nameDecorated = nameDecorated;
+ this.externalId = externalId;
+ this.openingDate = openingDate;
+ this.hierarchy = hierarchy;
+ }
+
+ public String toJSON() {
+ return new Gson().toJson(this);
+ }
+
+ public static OfficeDomain fromJSON(final String jsonData) {
+ return new Gson().fromJson(jsonData, OfficeDomain.class);
+ }
+
+ public static Builder create(final int id, final String name,
+ final String nameDecorated, final String externalId,
+ final String[] openingDate, final String hierarchy) {
+ return new Builder(id, name, nameDecorated, externalId, openingDate,
+ hierarchy);
+ }
+
+ public int getId() {
+ return this.id;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public String getNameDecorated() {
+ return this.nameDecorated;
+ }
+
+ public String getExternalId() {
+ return this.externalId;
+ }
+
+ public String[] getOpeningDate() {
+ return this.openingDate;
+ }
+
+ public String getHierarchy() {
+ return this.hierarchy;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 1;
+
+ if (this.id > 0)
+ hash += this.id;
+ if (this.name != null)
+ hash += this.name.hashCode();
+ if (this.nameDecorated != null)
+ hash += this.nameDecorated.hashCode();
+ if (this.externalId != null)
+ hash += this.externalId.hashCode();
+ if (this.openingDate != null)
+ hash += this.openingDate.hashCode();
+ if (this.hierarchy != null)
+ hash += this.hierarchy.hashCode();
+
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == this) {
+ return true;
+ }
+
+ if (!(obj instanceof OfficeDomain))
+ return false;
+
+ OfficeDomain od = (OfficeDomain) obj;
+
+ if (this.id == od.getId() && this.name.equals(od.getName())
+ && this.nameDecorated.equals(od.getName())
+ && this.externalId.equals(od.getExternalId())
+ && this.openingDate.equals(od.getOpeningDate())
+ && this.hierarchy.equals(od.getHierarchy()))
+ return true;
+
+ return false;
+ }
+}
\ No newline at end of file