diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientExternalIdTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientExternalIdTest.java index 08f391e23c1..42565ac9452 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientExternalIdTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientExternalIdTest.java @@ -31,12 +31,12 @@ import java.util.UUID; import lombok.extern.slf4j.Slf4j; import org.apache.fineract.client.models.DeleteClientsClientIdResponse; -import org.apache.fineract.client.models.GetClientTransferProposalDateResponse; import org.apache.fineract.client.models.GetClientsClientIdAccountsResponse; import org.apache.fineract.client.models.GetClientsClientIdResponse; import org.apache.fineract.client.models.GetObligeeData; import org.apache.fineract.client.models.PostClientsClientIdResponse; import org.apache.fineract.client.models.PostClientsResponse; +import org.apache.fineract.client.models.PutClientsClientIdRequest; import org.apache.fineract.client.models.PutClientsClientIdResponse; import org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationConstants; import org.apache.fineract.integrationtests.common.ClientHelper; @@ -66,10 +66,9 @@ public void setup() { public void whenAutoExternalIdConfigIsOffCreateClient() { // given globalConfigurationHelper.manageConfigurations(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID, false); - final String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, - null); // when - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); // then assertNotNull(clientResponse); assertNull(clientResponse.getResourceExternalId()); @@ -79,10 +78,9 @@ public void whenAutoExternalIdConfigIsOffCreateClient() { public void whenAutoExternalIdConfigIsOffCreateClientWithValue() { // given final String externalId = UUID.randomUUID().toString(); - final String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, - externalId); // when - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, externalId); // then assertNotNull(clientResponse); assertNotNull(clientResponse.getResourceExternalId()); @@ -95,10 +93,9 @@ public void whenAutoExternalIdConfigIsOffCreateClientWithValue() { public void whenAutoExternalIdConfigIsOnCreateClient() { // given globalConfigurationHelper.manageConfigurations(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID, true); - final String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, - null); // when - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); // then assertNotNull(clientResponse); assertNotNull(clientResponse.getResourceExternalId()); @@ -114,10 +111,9 @@ public void whenAutoExternalIdConfigIsOnCreateClientWithValue() { // given globalConfigurationHelper.manageConfigurations(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID, true); final String externalId = UUID.randomUUID().toString(); - final String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, - externalId); // when - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, externalId); // then assertNotNull(clientResponse); assertNotNull(clientResponse.getResourceExternalId()); @@ -132,19 +128,19 @@ public void whenAutoExternalIdConfigIsOnCreateClientWithValue() { public void testClientStatusUsingExternalId() { ClientHelper clientHelper = new ClientHelper(requestSpec, responseSpec); globalConfigurationHelper.manageConfigurations(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID, true); - String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, null); - final PostClientsResponse addClientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse addClientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); final String clientExternalId = addClientResponse.getResourceExternalId(); final Long clientId = addClientResponse.getClientId(); assertNotNull(clientExternalId); log.info("Client data id {} and external Id {}", clientId, clientExternalId); - GetClientsClientIdResponse clientResponse = ClientHelper.getClientByExternalId(requestSpec, responseSpec, clientExternalId); + GetClientsClientIdResponse clientResponse = ClientHelper.getClientByExternalId(clientExternalId); ClientStatusChecker.verifyClientStatus(ClientStatus.ACTIVE, clientResponse); log.info("Client data id {} and status {}", clientExternalId, clientResponse.getStatus().getCode()); // Close Client action - jsonPayload = clientHelper.getCloseClientAsJSON(); + String jsonPayload = clientHelper.getCloseClientAsJSON(); PostClientsClientIdResponse commandResponse = ClientHelper.performClientActionUsingExternalId(requestSpec, responseSpec, clientExternalId, ClientHelper.CLOSE_CLIENT_COMMAND, jsonPayload); assertNotNull(commandResponse); @@ -153,7 +149,7 @@ public void testClientStatusUsingExternalId() { log.info("Client data id {} and external Id {}", commandResponse.getResourceId(), clientExternalId); assertEquals(clientId.intValue(), commandResponse.getResourceId()); - clientResponse = ClientHelper.getClientByExternalId(requestSpec, responseSpec, clientExternalId); + clientResponse = ClientHelper.getClientByExternalId(clientExternalId); ClientStatusChecker.verifyClientStatus(ClientStatus.CLOSED, clientResponse); log.info("Client data id {} and status {}", clientExternalId, clientResponse.getStatus().getCode()); @@ -167,7 +163,7 @@ public void testClientStatusUsingExternalId() { log.info("Client data id {} and external Id {}", commandResponse.getResourceId(), clientExternalId); assertEquals(clientId.intValue(), commandResponse.getResourceId()); - clientResponse = ClientHelper.getClientByExternalId(requestSpec, responseSpec, clientExternalId); + clientResponse = ClientHelper.getClientByExternalId(clientExternalId); ClientStatusChecker.verifyClientStatus(ClientStatus.PENDING, clientResponse); log.info("Client data id {} and status {}", clientExternalId, clientResponse.getStatus().getCode()); @@ -181,7 +177,7 @@ public void testClientStatusUsingExternalId() { log.info("Client data id {} and external Id {}", commandResponse.getResourceId(), clientExternalId); assertEquals(clientId.intValue(), commandResponse.getResourceId()); - clientResponse = ClientHelper.getClientByExternalId(requestSpec, responseSpec, clientExternalId); + clientResponse = ClientHelper.getClientByExternalId(clientExternalId); ClientStatusChecker.verifyClientStatus(ClientStatus.REJECTED, clientResponse); log.info("Client data id {} and status {}", clientExternalId, clientResponse.getStatus().getCode()); @@ -195,7 +191,7 @@ public void testClientStatusUsingExternalId() { log.info("Client data id {} and external Id {}", commandResponse.getResourceId(), clientExternalId); assertEquals(clientId.intValue(), commandResponse.getResourceId()); - clientResponse = ClientHelper.getClientByExternalId(requestSpec, responseSpec, clientExternalId); + clientResponse = ClientHelper.getClientByExternalId(clientExternalId); ClientStatusChecker.verifyClientStatus(ClientStatus.ACTIVE, clientResponse); log.info("Client data id {} and status {}", clientExternalId, clientResponse.getStatus().getCode()); @@ -206,13 +202,12 @@ public void testClientStatusUsingExternalId() { public void testUpdateClientUsingExternalId() { // given globalConfigurationHelper.manageConfigurations(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID, true); - String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, null); // when - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); final String clientExternalId = clientResponse.getResourceExternalId(); - jsonPayload = ClientHelper.getBasicClientAsJSON(null, ClientHelper.LEGALFORM_ID_PERSON, clientExternalId); - final PutClientsClientIdResponse clientUpdateResponse = ClientHelper.updateClient(requestSpec, responseSpec, clientExternalId, - jsonPayload); + PutClientsClientIdRequest updateRequest = new PutClientsClientIdRequest().externalId(clientExternalId); + final PutClientsClientIdResponse clientUpdateResponse = ClientHelper.updateClientByExternalId(clientExternalId, updateRequest); // then assertNotNull(clientUpdateResponse); assertNotNull(clientUpdateResponse.getResourceExternalId()); @@ -226,19 +221,19 @@ public void testDeleteClientUsingExternalId() { // given ClientHelper clientHelper = new ClientHelper(requestSpec, responseSpec); globalConfigurationHelper.manageConfigurations(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID, true); - String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, null); // when - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); final String clientExternalId = clientResponse.getResourceExternalId(); - jsonPayload = clientHelper.getCloseClientAsJSON(); - PostClientsClientIdResponse commandResponse = ClientHelper.performClientActionUsingExternalId(requestSpec, responseSpec, - clientExternalId, ClientHelper.CLOSE_CLIENT_COMMAND, jsonPayload); + String jsonPayload = clientHelper.getCloseClientAsJSON(); + ClientHelper.performClientActionUsingExternalId(requestSpec, responseSpec, clientExternalId, ClientHelper.CLOSE_CLIENT_COMMAND, + jsonPayload); jsonPayload = clientHelper.getReactivateClientAsJSON(); - commandResponse = ClientHelper.performClientActionUsingExternalId(requestSpec, responseSpec, clientExternalId, - ClientHelper.REACTIVATE_CLIENT_COMMAND, jsonPayload); + ClientHelper.performClientActionUsingExternalId(requestSpec, responseSpec, clientExternalId, ClientHelper.REACTIVATE_CLIENT_COMMAND, + jsonPayload); // then - final DeleteClientsClientIdResponse clientDeleteResponse = ClientHelper.deleteClient(requestSpec, responseSpec, clientExternalId); + final DeleteClientsClientIdResponse clientDeleteResponse = ClientHelper.deleteClientByExternalId(clientExternalId); assertNotNull(clientDeleteResponse); assertNotNull(clientDeleteResponse.getResourceExternalId()); assertEquals(clientExternalId, clientDeleteResponse.getResourceExternalId()); @@ -250,14 +245,12 @@ public void testDeleteClientUsingExternalId() { public void testGetClientAccountsUsingExternalId() { // given globalConfigurationHelper.manageConfigurations(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID, true); - final String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, - null); // when - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); final String clientExternalId = clientResponse.getResourceExternalId(); - GetClientsClientIdAccountsResponse clientAccountsResponse = ClientHelper.getClientAccounts(requestSpec, responseSpec, - clientExternalId); + GetClientsClientIdAccountsResponse clientAccountsResponse = ClientHelper.getClientAccounts(clientExternalId); // then assertNotNull(clientAccountsResponse); @@ -269,15 +262,12 @@ public void testGetClientAccountsUsingExternalId() { public void testGetClientTransferProposalDate() { // given globalConfigurationHelper.manageConfigurations(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID, true); - final String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, - null); - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); - ResponseSpecification response204Spec = new ResponseSpecBuilder().expectStatusCode(204).build(); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); // when final String clientExternalId = clientResponse.getResourceExternalId(); - final GetClientTransferProposalDateResponse transferProposalDateResponse = ClientHelper.getProposedTransferDate(requestSpec, - response204Spec, clientExternalId); + ClientHelper.getProposedTransferDate(clientExternalId); fetchClientByExternalId(clientResponse.getResourceExternalId()); @@ -288,12 +278,11 @@ public void testGetClientTransferProposalDate() { public void testGetClientObligeeData() { // given globalConfigurationHelper.manageConfigurations(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID, true); - final String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, - null); // when - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); final String clientExternalId = clientResponse.getResourceExternalId(); - final List obligeeDataResponse = ClientHelper.getObligeeData(requestSpec, responseSpec, clientExternalId); + final List obligeeDataResponse = ClientHelper.getObligeeData(clientExternalId); // then assertNotNull(obligeeDataResponse); @@ -304,7 +293,7 @@ public void testGetClientObligeeData() { } private void fetchClientByExternalId(final String externalId) { - GetClientsClientIdResponse clientResponse = ClientHelper.getClientByExternalId(requestSpec, responseSpec, externalId); + GetClientsClientIdResponse clientResponse = ClientHelper.getClientByExternalId(externalId); assertNotNull(clientResponse); assertEquals(externalId, clientResponse.getExternalId()); } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountsContainsCurrencyFieldTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountsContainsCurrencyFieldTest.java index fab74415375..ed59d50987a 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountsContainsCurrencyFieldTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountsContainsCurrencyFieldTest.java @@ -66,10 +66,9 @@ public void testGetClientLoanAccountsUsingExternalIdContainsCurrency() { // given globalConfigurationHelper.manageConfigurations(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID, true); - final String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, - null); // when - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); final String clientExternalId = clientResponse.getResourceExternalId(); final long clientId = clientResponse.getClientId(); @@ -81,8 +80,7 @@ public void testGetClientLoanAccountsUsingExternalIdContainsCurrency() { final Integer loanId = createLoanAccount(loanTransactionHelper, String.valueOf(clientId), String.valueOf(loanProductId), formattedDate); - GetClientsClientIdAccountsResponse clientAccountsResponse = ClientHelper.getClientAccounts(requestSpec, responseSpec, - clientExternalId); + GetClientsClientIdAccountsResponse clientAccountsResponse = ClientHelper.getClientAccounts(clientExternalId); if (clientAccountsResponse.getLoanAccounts() == null) { // Handle the case where getClientAccounts returned null diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanWithdrawnByApplicantIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanWithdrawnByApplicantIntegrationTest.java index 999153d7edf..1122953f714 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanWithdrawnByApplicantIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanWithdrawnByApplicantIntegrationTest.java @@ -18,85 +18,43 @@ */ package org.apache.fineract.integrationtests; -import io.restassured.builder.RequestSpecBuilder; -import io.restassured.builder.ResponseSpecBuilder; -import io.restassured.http.ContentType; -import io.restassured.specification.RequestSpecification; -import io.restassured.specification.ResponseSpecification; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import org.apache.fineract.client.models.PostClientsRequest; +import org.apache.fineract.client.models.PostLoansLoanIdRequest; +import org.apache.fineract.client.models.PostLoansResponse; import org.apache.fineract.integrationtests.common.ClientHelper; -import org.apache.fineract.integrationtests.common.CollateralManagementHelper; import org.apache.fineract.integrationtests.common.Utils; -import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder; -import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder; -import org.apache.fineract.integrationtests.common.loans.LoanStatusChecker; -import org.apache.fineract.integrationtests.common.loans.LoanTestLifecycleExtension; -import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; +import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -@SuppressWarnings("rawtypes") -@ExtendWith(LoanTestLifecycleExtension.class) -public class LoanWithdrawnByApplicantIntegrationTest { - - private ResponseSpecification responseSpec; - private RequestSpecification requestSpec; - private LoanTransactionHelper loanTransactionHelper; - - @BeforeEach - public void setup() { - Utils.initializeRESTAssured(); - this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build(); - this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey()); - this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); - - this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec); - } +public class LoanWithdrawnByApplicantIntegrationTest extends BaseLoanIntegrationTest { @Test public void loanWithdrawnByApplicant() { - final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2012"); - final Integer loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder().build(null)); - final Integer loanID = applyForLoanApplication(clientID, loanProductID); - - HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID); - LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap); - - this.loanTransactionHelper.withdrawLoanApplicationByClient("03 April 2012", loanID); - loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID); - LoanStatusChecker.verifyLoanAccountIsNotActive(loanStatusHashMap); - - } - - private void addCollaterals(List collaterals, Integer collateralId, BigDecimal quantity) { - collaterals.add(collaterals(collateralId, quantity)); - } - - private HashMap collaterals(Integer collateralId, BigDecimal quantity) { - HashMap collateral = new HashMap(2); - collateral.put("clientCollateralId", collateralId.toString()); - collateral.put("quantity", quantity.toString()); - return collateral; - } - - private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID) { - List collaterals = new ArrayList<>(); - final Integer collateralId = CollateralManagementHelper.createCollateralProduct(this.requestSpec, this.responseSpec); - Assertions.assertNotNull(collateralId); - final Integer clientCollateralId = CollateralManagementHelper.createClientCollateral(this.requestSpec, this.responseSpec, - clientID.toString(), collateralId); - Assertions.assertNotNull(clientCollateralId); - addCollaterals(collaterals, clientCollateralId, BigDecimal.valueOf(1)); - final String loanApplication = new LoanApplicationTestBuilder().withPrincipal("5000").withLoanTermFrequency("5") - .withLoanTermFrequencyAsMonths().withNumberOfRepayments("5").withRepaymentEveryAfter("1") - .withRepaymentFrequencyTypeAsMonths().withInterestRatePerPeriod("2").withExpectedDisbursementDate("04 April 2012") - .withCollaterals(collaterals).withSubmittedOnDate("02 April 2012") - .build(clientID.toString(), loanProductID.toString(), null); - return this.loanTransactionHelper.getLoanId(loanApplication); + final Long clientId = ClientHelper.createClient(new PostClientsRequest() // + .officeId(1L) // + .firstname(Utils.randomFirstNameGenerator()) // + .lastname(Utils.randomLastNameGenerator()) // + .active(true) // + .activationDate("01 January 2012") // + .dateFormat(Utils.DATE_FORMAT) // + .locale("en")) // + .getResourceId(); + + final Long loanProductId = loanTransactionHelper.createLoanProduct(createOnePeriod30DaysLongNoInterestPeriodicAccrualProduct()) // + .getResourceId(); + + final PostLoansResponse loanResponse = loanTransactionHelper + .applyLoan(applyLoanRequest(clientId, loanProductId, "04 April 2012", 5000.0, 5)); + final Long loanId = loanResponse.getLoanId(); + + verifyLoanStatus(loanId, LoanStatus.SUBMITTED_AND_PENDING_APPROVAL); + + loanTransactionHelper.withdrawnByApplicantLoan(loanResponse.getResourceExternalId(), // + new PostLoansLoanIdRequest() // + .withdrawnOnDate("03 April 2012") // + .dateFormat(Utils.DATE_FORMAT) // + .locale("en")); + + verifyLoanStatus(loanId, LoanStatus.WITHDRAWN_BY_CLIENT); } } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SearchResourcesTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SearchResourcesTest.java index bdb751034c3..c5ae717ad2a 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SearchResourcesTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SearchResourcesTest.java @@ -84,8 +84,8 @@ public void searchOverClientResources() { final List resources = Arrays.asList("clients"); // Client and Loan account creation - String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, null); - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); final Long clientId = clientResponse.getClientId(); final GetClientsClientIdResponse getClientResponse = ClientHelper.getClient(requestSpec, responseSpec, clientId.intValue()); final String query = getClientResponse.getAccountNo(); @@ -112,8 +112,8 @@ public void searchAnyValueOverLoanResources() { public void searchOverSavingsResources() { final List resources = Arrays.asList("savings"); - String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, null); - final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); final Long clientId = clientResponse.getClientId(); final Integer savingsId = SavingsAccountHelper.openSavingsAccount(requestSpec, responseSpec, clientId.intValue(), "1000"); @@ -139,8 +139,8 @@ public void searchOverSavingsResources() { public void searchOverSharesResources() { final List resources = Arrays.asList("shares"); - String jsonPayload = ClientHelper.getBasicClientAsJSON(ClientHelper.DEFAULT_OFFICE_ID, ClientHelper.LEGALFORM_ID_PERSON, null); - final PostClientsResponse clientsResponse = ClientHelper.addClientAsPerson(requestSpec, responseSpec, jsonPayload); + final PostClientsResponse clientsResponse = ClientHelper.addClientAsPerson(ClientHelper.DEFAULT_OFFICE_ID, + ClientHelper.LEGALFORM_ID_PERSON, null); final Long clientId = clientsResponse.getClientId(); final ShareProductHelper shareProductHelper = new ShareProductHelper(); diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/ClientHelper.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/ClientHelper.java index 408b17b78a1..ac66210b27f 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/ClientHelper.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/ClientHelper.java @@ -42,6 +42,7 @@ import org.apache.fineract.client.models.ClientAddressRequest; import org.apache.fineract.client.models.ClientTextSearch; import org.apache.fineract.client.models.DeleteClientsClientIdResponse; +//import org.apache.fineract.client.models.GetClientObligeeDetailsResponse; import org.apache.fineract.client.models.GetClientTransferProposalDateResponse; import org.apache.fineract.client.models.GetClientsClientIdAccountsResponse; import org.apache.fineract.client.models.GetClientsClientIdResponse; @@ -58,12 +59,14 @@ import org.apache.fineract.client.models.PostClientsClientIdTransactionsTransactionIdResponse; import org.apache.fineract.client.models.PostClientsRequest; import org.apache.fineract.client.models.PostClientsResponse; +import org.apache.fineract.client.models.PutClientsClientIdRequest; import org.apache.fineract.client.models.PutClientsClientIdResponse; import org.apache.fineract.client.models.SortOrder; import org.apache.fineract.client.util.Calls; import org.apache.fineract.client.util.JSON; import org.apache.fineract.infrastructure.bulkimport.data.GlobalEntityType; import org.apache.fineract.integrationtests.common.system.CodeHelper; +import org.apache.fineract.integrationtests.ConfigProperties; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; @@ -111,6 +114,58 @@ public static PostClientsResponse createClient(final PostClientsRequest request) return Calls.ok(FineractClientHelper.getFineractClient().clients.createClient(request)); } + public static PostClientsResponse addClientAsPerson(final String officeId, final Long legalFormId, final String externalId) { + PostClientsRequest request = new PostClientsRequest().officeId(officeId != null ? Long.parseLong(officeId) : 1L) + .legalFormId(legalFormId).firstname(Utils.randomFirstNameGenerator()).lastname(Utils.randomLastNameGenerator()) + .externalId(externalId).dateFormat(Utils.DATE_FORMAT).locale("en").active(true).activationDate(DEFAULT_DATE); + return createClient(request); + } + + public static GetClientsClientIdResponse getClientByExternalId(final String externalId) { + return Calls.ok(FineractClientHelper.getFineractClient().clients.retrieveOneClientByExternalId(externalId, null)); + } + + public static PutClientsClientIdResponse updateClientByExternalId(final String externalId, final PutClientsClientIdRequest request) { + return Calls.ok(FineractClientHelper.getFineractClient().clients.updateClientByExternalId(externalId, request)); + } + + public static DeleteClientsClientIdResponse deleteClientByExternalId(final String externalId) { + return Calls.ok(FineractClientHelper.getFineractClient().clients.deleteClientByExternalId(externalId)); + } + + public static GetClientsClientIdAccountsResponse getClientAccounts(final String externalId) { + return Calls.ok(FineractClientHelper.getFineractClient().clients.retrieveAllClientAccountsByExternalId(externalId)); + } + + public static GetClientTransferProposalDateResponse getProposedTransferDate(final String externalId) { + return Calls.ok(FineractClientHelper.getFineractClient().clients.retrieveClientTransferTemplateByExternalId(externalId)); + } + + // public static List getObligeeData(final String externalId) { + // GetClientObligeeDetailsResponse response = Calls + // .ok(FineractClientHelper.getFineractClient().clients.retrieveClientObligeeDetailsByExternalId(externalId)); + // return response != null && response.getObligees() != null ? new ArrayList<>(response.getObligees()) : new ArrayList<>(); + // } + + public static List getObligeeData(final String externalId) { + // Note: The Feign-generated client incorrectly maps this endpoint to GetClientObligeeDetailsResponse (object), + // but the actual API returns a JSON array directly. Using RestAssured as a workaround until the OpenAPI spec is corrected. + String credentials = ConfigProperties.Backend.USERNAME + ":" + ConfigProperties.Backend.PASSWORD; + String authHeader = "Basic " + java.util.Base64.getEncoder() + .encodeToString(credentials.getBytes(java.nio.charset.StandardCharsets.UTF_8)); + String responseStr = io.restassured.RestAssured.given() + .header("Authorization", authHeader) + .queryParam(Utils.TENANT_PARAM_NAME, Utils.DEFAULT_TENANT) + .when() + .get(CLIENT_EXTERNALID_URL + "/" + externalId + "/obligeedetails") + .asString(); + return GSON.fromJson(responseStr, new TypeToken>() {}.getType()); +} + + + + + public PostClientsClientIdIdentifiersResponse createClientIdentifer(final Long clientId, final PostClientsClientIdIdentifiersRequest request) { return Calls.ok(FineractClientHelper.getFineractClient().clientIdentifiers.createClientIdentifier(clientId, request)); @@ -147,83 +202,12 @@ public PageClientSearchData searchClients(PagedRequestClientTextSearch request) return Calls.ok(FineractClientHelper.getFineractClient().clientSearchV2.searchClientsByText(request)); } - // TODO: Rewrite to use fineract-client instead! - // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, - // org.apache.fineract.client.models.PostLoansLoanIdRequest) - @Deprecated(forRemoval = true) - public static PostClientsResponse addClientAsPerson(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, - final String jsonPayload) { - final String response = Utils.performServerPost(requestSpec, responseSpec, CREATE_CLIENT_URL, jsonPayload); - log.info("{}", response); - return GSON.fromJson(response, PostClientsResponse.class); - } - - // TODO: Rewrite to use fineract-client instead! - // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, - // org.apache.fineract.client.models.PostLoansLoanIdRequest) - @Deprecated(forRemoval = true) - public static PutClientsClientIdResponse updateClient(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, - final String externalId, final String jsonPayload) { - final String url = CLIENT_EXTERNALID_URL + "/" + externalId + "?" + Utils.TENANT_IDENTIFIER; - final String response = Utils.performServerPut(requestSpec, responseSpec, url, jsonPayload); - log.info("{}", response); - return GSON.fromJson(response, PutClientsClientIdResponse.class); - } - - // TODO: Rewrite to use fineract-client instead! - // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, - // org.apache.fineract.client.models.PostLoansLoanIdRequest) - @Deprecated(forRemoval = true) - public static DeleteClientsClientIdResponse deleteClient(final RequestSpecification requestSpec, - final ResponseSpecification responseSpec, final String externalId) { - final String url = CLIENT_EXTERNALID_URL + "/" + externalId + "?" + Utils.TENANT_IDENTIFIER; - final String response = Utils.performServerDelete(requestSpec, responseSpec, url, Utils.emptyJson(), null); - log.info("{}", response); - return GSON.fromJson(response, DeleteClientsClientIdResponse.class); - } - - // TODO: Rewrite to use fineract-client instead! - // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, - // org.apache.fineract.client.models.PostLoansLoanIdRequest) - @Deprecated(forRemoval = true) - public static GetClientsClientIdAccountsResponse getClientAccounts(final RequestSpecification requestSpec, - final ResponseSpecification responseSpec, final String externalId) { - final String url = CLIENT_EXTERNALID_URL + "/" + externalId + "/accounts?" + Utils.TENANT_IDENTIFIER; - final String response = Utils.performServerGet(requestSpec, responseSpec, url); - log.info("{}", response); - return GSON.fromJson(response, GetClientsClientIdAccountsResponse.class); - } - public static String getClientAccountsRaw(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, final long clientId) { final String url = CLIENT_URL + "/" + clientId + "/accounts?" + Utils.TENANT_IDENTIFIER; return Utils.performServerGet(requestSpec, responseSpec, url); } - // TODO: Rewrite to use fineract-client instead! - // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, - // org.apache.fineract.client.models.PostLoansLoanIdRequest) - @Deprecated(forRemoval = true) - public static GetClientTransferProposalDateResponse getProposedTransferDate(final RequestSpecification requestSpec, - final ResponseSpecification responseSpec, final String externalId) { - final String url = CLIENT_EXTERNALID_URL + "/" + externalId + "/transferproposaldate?" + Utils.TENANT_IDENTIFIER; - final String response = Utils.performServerGet(requestSpec, responseSpec, url); - log.info("{}", response); - return GSON.fromJson(response, GetClientTransferProposalDateResponse.class); - } - - // TODO: Rewrite to use fineract-client instead! - // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, - // org.apache.fineract.client.models.PostLoansLoanIdRequest) - @Deprecated(forRemoval = true) - public static List getObligeeData(final RequestSpecification requestSpec, final ResponseSpecification responseSpec, - final String externalId) { - final String url = CLIENT_EXTERNALID_URL + "/" + externalId + "/obligeedetails?" + Utils.TENANT_IDENTIFIER; - final String response = Utils.performServerGet(requestSpec, responseSpec, url); - log.info("{}", response); - return GSON.fromJson(response, new TypeToken>() {}.getType()); - } - // TODO: Rewrite to use fineract-client instead! // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, // org.apache.fineract.client.models.PostLoansLoanIdRequest) @@ -466,19 +450,6 @@ public static HashMap setInitialClientValues(final String office return map; } - // TODO: Rewrite to use fineract-client instead! - // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, - // org.apache.fineract.client.models.PostLoansLoanIdRequest) - @Deprecated(forRemoval = true) - public static String getBasicClientAsJSON(final String officeId, final Long legalFormId, final String externalId) { - HashMap map = setInitialClientValues(officeId, legalFormId, externalId); - map.put("active", "true"); - map.put("activationDate", DEFAULT_DATE); - final String basicClientAsJson = GSON.toJson(map); - log.info("Client JSON : {}", basicClientAsJson); - return basicClientAsJson; - } - // TODO: Rewrite to use fineract-client instead! // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, // org.apache.fineract.client.models.PostLoansLoanIdRequest) @@ -650,17 +621,6 @@ public static GetClientsClientIdResponse getClient(final RequestSpecification re return GSON.fromJson(clientResponseStr, GetClientsClientIdResponse.class); } - // TODO: Rewrite to use fineract-client instead! - // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, - // org.apache.fineract.client.models.PostLoansLoanIdRequest) - @Deprecated(forRemoval = true) - public static GetClientsClientIdResponse getClientByExternalId(final RequestSpecification requestSpec, - final ResponseSpecification responseSpec, final String externalId) { - final String url = CLIENT_EXTERNALID_URL + "/" + externalId + "?" + Utils.TENANT_IDENTIFIER; - final String response = Utils.performServerGet(requestSpec, responseSpec, url); - return GSON.fromJson(response, GetClientsClientIdResponse.class); - } - // TODO: Rewrite to use fineract-client instead! // Example: org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper.disburseLoan(java.lang.Long, // org.apache.fineract.client.models.PostLoansLoanIdRequest)