FINERACT-2418: add origination api implementation
This commit is contained in:
committed by
Arnold Gálovics
parent
ba978c591b
commit
82e6a237a6
+280
@@ -0,0 +1,280 @@
|
||||
/**
|
||||
* 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;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
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.util.HashMap;
|
||||
import java.util.List;
|
||||
import org.apache.fineract.integrationtests.common.Utils;
|
||||
import org.apache.fineract.integrationtests.common.loans.LoanOriginatorHelper;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@Order(1)
|
||||
public class LoanOriginatorApiTest {
|
||||
|
||||
private RequestSpecification requestSpec;
|
||||
private ResponseSpecification responseSpec;
|
||||
private ResponseSpecification responseSpec400;
|
||||
private ResponseSpecification responseSpec403;
|
||||
private ResponseSpecification responseSpec404;
|
||||
|
||||
@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.responseSpec400 = new ResponseSpecBuilder().expectStatusCode(400).build();
|
||||
this.responseSpec403 = new ResponseSpecBuilder().expectStatusCode(403).build();
|
||||
this.responseSpec404 = new ResponseSpecBuilder().expectStatusCode(404).build();
|
||||
}
|
||||
|
||||
// ==================== CRUD LIFECYCLE TESTS ====================
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithMinimalData() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
|
||||
// Create with only externalId
|
||||
final Integer originatorId = LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId);
|
||||
|
||||
assertNotNull(originatorId, "Originator ID should not be null");
|
||||
|
||||
// Verify created data
|
||||
final HashMap<String, Object> originator = LoanOriginatorHelper.getOriginatorById(requestSpec, responseSpec, originatorId);
|
||||
|
||||
assertEquals(externalId, originator.get("externalId"));
|
||||
assertEquals("ACTIVE", originator.get("status"), "Default status should be ACTIVE");
|
||||
|
||||
// Cleanup
|
||||
LoanOriginatorHelper.deleteOriginator(requestSpec, responseSpec, originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithAllFields() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
final String name = "Test Originator";
|
||||
final String status = "PENDING";
|
||||
|
||||
final Integer originatorId = LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId, name, status, null, null);
|
||||
|
||||
assertNotNull(originatorId);
|
||||
|
||||
final HashMap<String, Object> originator = LoanOriginatorHelper.getOriginatorById(requestSpec, responseSpec, originatorId);
|
||||
|
||||
assertEquals(externalId, originator.get("externalId"));
|
||||
assertEquals(name, originator.get("name"));
|
||||
assertEquals(status, originator.get("status"));
|
||||
|
||||
// Cleanup
|
||||
LoanOriginatorHelper.deleteOriginator(requestSpec, responseSpec, originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRetrieveOriginatorById() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
final Integer originatorId = LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId);
|
||||
|
||||
final HashMap<String, Object> originator = LoanOriginatorHelper.getOriginatorById(requestSpec, responseSpec, originatorId);
|
||||
|
||||
assertNotNull(originator);
|
||||
assertEquals(originatorId, originator.get("id"));
|
||||
assertEquals(externalId, originator.get("externalId"));
|
||||
|
||||
// Cleanup
|
||||
LoanOriginatorHelper.deleteOriginator(requestSpec, responseSpec, originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRetrieveOriginatorByExternalId() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
final Integer originatorId = LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId);
|
||||
|
||||
final HashMap<String, Object> originator = LoanOriginatorHelper.getOriginatorByExternalId(requestSpec, responseSpec, externalId);
|
||||
|
||||
assertNotNull(originator);
|
||||
assertEquals(originatorId, originator.get("id"));
|
||||
assertEquals(externalId, originator.get("externalId"));
|
||||
|
||||
// Cleanup
|
||||
LoanOriginatorHelper.deleteOriginator(requestSpec, responseSpec, originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRetrieveAllOriginators() {
|
||||
final String externalId1 = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
final String externalId2 = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
|
||||
final Integer originatorId1 = LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId1);
|
||||
final Integer originatorId2 = LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId2);
|
||||
|
||||
final List<HashMap<String, Object>> originators = LoanOriginatorHelper.getAllOriginators(requestSpec, responseSpec);
|
||||
|
||||
assertNotNull(originators);
|
||||
assertTrue(originators.size() >= 2, "Should have at least 2 originators");
|
||||
|
||||
// Cleanup
|
||||
LoanOriginatorHelper.deleteOriginator(requestSpec, responseSpec, originatorId1);
|
||||
LoanOriginatorHelper.deleteOriginator(requestSpec, responseSpec, originatorId2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateOriginatorPartially() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
final Integer originatorId = LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId, "Original Name", "ACTIVE",
|
||||
null, null);
|
||||
|
||||
// Update only the name
|
||||
final HashMap<String, Object> updateResult = LoanOriginatorHelper.updateOriginator(requestSpec, responseSpec, originatorId,
|
||||
"Updated Name", null, null, null);
|
||||
|
||||
assertNotNull(updateResult);
|
||||
assertTrue(updateResult.containsKey("changes"), "Response should contain changes");
|
||||
|
||||
// Verify update
|
||||
final HashMap<String, Object> originator = LoanOriginatorHelper.getOriginatorById(requestSpec, responseSpec, originatorId);
|
||||
assertEquals("Updated Name", originator.get("name"));
|
||||
assertEquals("ACTIVE", originator.get("status"), "Status should remain unchanged");
|
||||
|
||||
// Cleanup
|
||||
LoanOriginatorHelper.deleteOriginator(requestSpec, responseSpec, originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateOriginatorByExternalId() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId, "Original Name", "ACTIVE", null, null);
|
||||
|
||||
// Update by external ID
|
||||
final HashMap<String, Object> updateResult = LoanOriginatorHelper.updateOriginatorByExternalId(requestSpec, responseSpec,
|
||||
externalId, "Updated via ExternalId", null, null, null);
|
||||
|
||||
assertNotNull(updateResult);
|
||||
|
||||
// Verify update
|
||||
final HashMap<String, Object> originator = LoanOriginatorHelper.getOriginatorByExternalId(requestSpec, responseSpec, externalId);
|
||||
assertEquals("Updated via ExternalId", originator.get("name"));
|
||||
|
||||
// Cleanup
|
||||
LoanOriginatorHelper.deleteOriginatorByExternalId(requestSpec, responseSpec, externalId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteOriginator() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
final Integer originatorId = LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId);
|
||||
|
||||
// Delete
|
||||
final Integer deletedId = LoanOriginatorHelper.deleteOriginator(requestSpec, responseSpec, originatorId);
|
||||
assertEquals(originatorId, deletedId);
|
||||
|
||||
// Verify deleted - should return 404
|
||||
LoanOriginatorHelper.getOriginatorById(requestSpec, responseSpec404, originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteOriginatorByExternalId() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
final Integer originatorId = LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId);
|
||||
|
||||
// Delete by external ID
|
||||
final Integer deletedId = LoanOriginatorHelper.deleteOriginatorByExternalId(requestSpec, responseSpec, externalId);
|
||||
assertEquals(originatorId, deletedId);
|
||||
|
||||
// Verify deleted - should return 404
|
||||
LoanOriginatorHelper.getOriginatorByExternalId(requestSpec, responseSpec404, externalId);
|
||||
}
|
||||
|
||||
// ==================== VALIDATION ERROR TESTS ====================
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithMissingExternalId() {
|
||||
final String invalidJson = "{ \"name\": \"Test\" }";
|
||||
|
||||
LoanOriginatorHelper.createOriginatorExpectingError(requestSpec, responseSpec400, invalidJson);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithDuplicateExternalId() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
|
||||
// Create first originator
|
||||
final Integer originatorId = LoanOriginatorHelper.createOriginator(requestSpec, responseSpec, externalId);
|
||||
|
||||
// Attempt to create duplicate - should return 403
|
||||
final String duplicateJson = "{ \"externalId\": \"" + externalId + "\" }";
|
||||
LoanOriginatorHelper.createOriginatorExpectingError(requestSpec, responseSpec403, duplicateJson);
|
||||
|
||||
// Cleanup
|
||||
LoanOriginatorHelper.deleteOriginator(requestSpec, responseSpec, originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithInvalidStatus() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
final String invalidJson = "{ \"externalId\": \"" + externalId + "\", \"status\": \"INVALID\" }";
|
||||
|
||||
LoanOriginatorHelper.createOriginatorExpectingError(requestSpec, responseSpec403, invalidJson);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOriginatorByNonExistentId() {
|
||||
LoanOriginatorHelper.getOriginatorById(requestSpec, responseSpec404, 999999);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOriginatorByNonExistentExternalId() {
|
||||
LoanOriginatorHelper.getOriginatorByExternalId(requestSpec, responseSpec404, "NON-EXISTENT-EXTERNAL-ID");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateNonExistentOriginator() {
|
||||
final String json = "{ \"name\": \"Updated\" }";
|
||||
Utils.performServerPut(requestSpec, responseSpec404, "/fineract-provider/api/v1/loan-originators/999999?" + Utils.TENANT_IDENTIFIER,
|
||||
json, "");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteNonExistentOriginator() {
|
||||
Utils.performServerDelete(requestSpec, responseSpec404,
|
||||
"/fineract-provider/api/v1/loan-originators/999999?" + Utils.TENANT_IDENTIFIER, "");
|
||||
}
|
||||
|
||||
// ==================== CODE VALUE VALIDATION TESTS ====================
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithInvalidCodeValueId() {
|
||||
final String externalId = LoanOriginatorHelper.generateUniqueExternalId();
|
||||
// Use an ID that doesn't exist
|
||||
final String json = "{ \"externalId\": \"" + externalId + "\", \"originatorTypeId\": 999999 }";
|
||||
|
||||
LoanOriginatorHelper.createOriginatorExpectingError(requestSpec, responseSpec404, json);
|
||||
}
|
||||
}
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
/**
|
||||
* 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.client.feign.helpers;
|
||||
|
||||
import static org.apache.fineract.client.feign.util.FeignCalls.fail;
|
||||
import static org.apache.fineract.client.feign.util.FeignCalls.ok;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import org.apache.fineract.client.feign.FineractFeignClient;
|
||||
import org.apache.fineract.client.feign.util.CallFailedRuntimeException;
|
||||
import org.apache.fineract.client.models.GetLoanOriginatorsResponse;
|
||||
import org.apache.fineract.client.models.PostLoanOriginatorsRequest;
|
||||
import org.apache.fineract.client.models.PostLoanOriginatorsResponse;
|
||||
import org.apache.fineract.client.models.PutLoanOriginatorsRequest;
|
||||
import org.apache.fineract.client.models.PutLoanOriginatorsResponse;
|
||||
|
||||
public class FeignLoanOriginatorHelper {
|
||||
|
||||
private final FineractFeignClient fineractClient;
|
||||
|
||||
public FeignLoanOriginatorHelper(FineractFeignClient fineractClient) {
|
||||
this.fineractClient = fineractClient;
|
||||
}
|
||||
|
||||
public Long createOriginator(String externalId) {
|
||||
return createOriginator(new PostLoanOriginatorsRequest().externalId(externalId).name(externalId));
|
||||
}
|
||||
|
||||
public Long createOriginator(String externalId, String name, String status) {
|
||||
return createOriginator(new PostLoanOriginatorsRequest().externalId(externalId).name(name).status(status));
|
||||
}
|
||||
|
||||
public Long createOriginator(PostLoanOriginatorsRequest request) {
|
||||
PostLoanOriginatorsResponse response = ok(() -> fineractClient.loanOriginators().create11(request));
|
||||
return response.getResourceId();
|
||||
}
|
||||
|
||||
public CallFailedRuntimeException createOriginatorExpectingError(PostLoanOriginatorsRequest request) {
|
||||
return fail(() -> fineractClient.loanOriginators().create11(request));
|
||||
}
|
||||
|
||||
public List<GetLoanOriginatorsResponse> getAllOriginators() {
|
||||
return ok(() -> fineractClient.loanOriginators().retrieveAll28());
|
||||
}
|
||||
|
||||
public GetLoanOriginatorsResponse getOriginatorById(Long originatorId) {
|
||||
return ok(() -> fineractClient.loanOriginators().retrieveOne18(originatorId));
|
||||
}
|
||||
|
||||
public CallFailedRuntimeException getOriginatorByIdExpectingError(Long originatorId) {
|
||||
return fail(() -> fineractClient.loanOriginators().retrieveOne18(originatorId));
|
||||
}
|
||||
|
||||
public GetLoanOriginatorsResponse getOriginatorByExternalId(String externalId) {
|
||||
return ok(() -> fineractClient.loanOriginators().retrieveByExternalId(externalId));
|
||||
}
|
||||
|
||||
public CallFailedRuntimeException getOriginatorByExternalIdExpectingError(String externalId) {
|
||||
return fail(() -> fineractClient.loanOriginators().retrieveByExternalId(externalId));
|
||||
}
|
||||
|
||||
public PutLoanOriginatorsResponse updateOriginator(Long originatorId, PutLoanOriginatorsRequest request) {
|
||||
return ok(() -> fineractClient.loanOriginators().update16(originatorId, request));
|
||||
}
|
||||
|
||||
public PutLoanOriginatorsResponse updateOriginatorByExternalId(String externalId, PutLoanOriginatorsRequest request) {
|
||||
return ok(() -> fineractClient.loanOriginators().updateByExternalId(externalId, request));
|
||||
}
|
||||
|
||||
public CallFailedRuntimeException updateOriginatorExpectingError(Long originatorId, PutLoanOriginatorsRequest request) {
|
||||
return fail(() -> fineractClient.loanOriginators().update16(originatorId, request));
|
||||
}
|
||||
|
||||
public Long deleteOriginator(Long originatorId) {
|
||||
var response = ok(() -> fineractClient.loanOriginators().delete14(originatorId));
|
||||
return response.getResourceId();
|
||||
}
|
||||
|
||||
public Long deleteOriginatorByExternalId(String externalId) {
|
||||
var response = ok(() -> fineractClient.loanOriginators().deleteByExternalId(externalId));
|
||||
return response.getResourceId();
|
||||
}
|
||||
|
||||
public CallFailedRuntimeException deleteOriginatorExpectingError(Long originatorId) {
|
||||
return fail(() -> fineractClient.loanOriginators().delete14(originatorId));
|
||||
}
|
||||
|
||||
public static String generateUniqueExternalId() {
|
||||
return "EXT-" + UUID.randomUUID().toString().substring(0, 8);
|
||||
}
|
||||
}
|
||||
+248
@@ -0,0 +1,248 @@
|
||||
/**
|
||||
* 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.client.feign.tests;
|
||||
|
||||
import java.util.List;
|
||||
import org.apache.fineract.client.feign.util.CallFailedRuntimeException;
|
||||
import org.apache.fineract.client.models.GetLoanOriginatorsResponse;
|
||||
import org.apache.fineract.client.models.PostLoanOriginatorsRequest;
|
||||
import org.apache.fineract.client.models.PutLoanOriginatorsRequest;
|
||||
import org.apache.fineract.client.models.PutLoanOriginatorsResponse;
|
||||
import org.apache.fineract.integrationtests.client.FeignIntegrationTest;
|
||||
import org.apache.fineract.integrationtests.client.feign.helpers.FeignLoanOriginatorHelper;
|
||||
import org.apache.fineract.integrationtests.common.FineractFeignClientHelper;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@Order(1)
|
||||
public class FeignLoanOriginatorApiTest extends FeignIntegrationTest {
|
||||
|
||||
private static FeignLoanOriginatorHelper originatorHelper;
|
||||
|
||||
@BeforeAll
|
||||
public static void setup() {
|
||||
originatorHelper = new FeignLoanOriginatorHelper(FineractFeignClientHelper.getFineractFeignClient());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithMinimalData() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
|
||||
final Long originatorId = originatorHelper.createOriginator(externalId);
|
||||
|
||||
assertThat(originatorId).isNotNull();
|
||||
|
||||
final GetLoanOriginatorsResponse originator = originatorHelper.getOriginatorById(originatorId);
|
||||
|
||||
assertThat(originator.getExternalId()).isEqualTo(externalId);
|
||||
assertThat(originator.getStatus()).isEqualTo("ACTIVE");
|
||||
|
||||
originatorHelper.deleteOriginator(originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithAllFields() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
final String name = "Test Originator";
|
||||
final String status = "PENDING";
|
||||
|
||||
final Long originatorId = originatorHelper.createOriginator(externalId, name, status);
|
||||
|
||||
assertThat(originatorId).isNotNull();
|
||||
|
||||
final GetLoanOriginatorsResponse originator = originatorHelper.getOriginatorById(originatorId);
|
||||
|
||||
assertThat(originator.getExternalId()).isEqualTo(externalId);
|
||||
assertThat(originator.getName()).isEqualTo(name);
|
||||
assertThat(originator.getStatus()).isEqualTo(status);
|
||||
|
||||
originatorHelper.deleteOriginator(originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRetrieveOriginatorById() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
final Long originatorId = originatorHelper.createOriginator(externalId);
|
||||
|
||||
final GetLoanOriginatorsResponse originator = originatorHelper.getOriginatorById(originatorId);
|
||||
|
||||
assertThat(originator).isNotNull();
|
||||
assertThat(originator.getId()).isEqualTo(originatorId);
|
||||
assertThat(originator.getExternalId()).isEqualTo(externalId);
|
||||
|
||||
originatorHelper.deleteOriginator(originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRetrieveOriginatorByExternalId() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
final Long originatorId = originatorHelper.createOriginator(externalId);
|
||||
|
||||
final GetLoanOriginatorsResponse originator = originatorHelper.getOriginatorByExternalId(externalId);
|
||||
|
||||
assertThat(originator).isNotNull();
|
||||
assertThat(originator.getId()).isEqualTo(originatorId);
|
||||
assertThat(originator.getExternalId()).isEqualTo(externalId);
|
||||
|
||||
originatorHelper.deleteOriginator(originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRetrieveAllOriginators() {
|
||||
final String externalId1 = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
final String externalId2 = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
|
||||
final Long originatorId1 = originatorHelper.createOriginator(externalId1);
|
||||
final Long originatorId2 = originatorHelper.createOriginator(externalId2);
|
||||
|
||||
final List<GetLoanOriginatorsResponse> originators = originatorHelper.getAllOriginators();
|
||||
|
||||
assertThat(originators).isNotNull();
|
||||
assertThat(originators).hasSizeGreaterThanOrEqualTo(2);
|
||||
|
||||
originatorHelper.deleteOriginator(originatorId1);
|
||||
originatorHelper.deleteOriginator(originatorId2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateOriginatorPartially() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
final Long originatorId = originatorHelper.createOriginator(externalId, "Original Name", "ACTIVE");
|
||||
|
||||
final PutLoanOriginatorsResponse updateResult = originatorHelper.updateOriginator(originatorId,
|
||||
new PutLoanOriginatorsRequest().name("Updated Name"));
|
||||
|
||||
assertThat(updateResult).isNotNull();
|
||||
|
||||
final GetLoanOriginatorsResponse originator = originatorHelper.getOriginatorById(originatorId);
|
||||
assertThat(originator.getName()).isEqualTo("Updated Name");
|
||||
assertThat(originator.getStatus()).isEqualTo("ACTIVE");
|
||||
|
||||
originatorHelper.deleteOriginator(originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateOriginatorByExternalId() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
originatorHelper.createOriginator(externalId, "Original Name", "ACTIVE");
|
||||
|
||||
final PutLoanOriginatorsResponse updateResult = originatorHelper.updateOriginatorByExternalId(externalId,
|
||||
new PutLoanOriginatorsRequest().name("Updated via ExternalId"));
|
||||
|
||||
assertThat(updateResult).isNotNull();
|
||||
|
||||
final GetLoanOriginatorsResponse originator = originatorHelper.getOriginatorByExternalId(externalId);
|
||||
assertThat(originator.getName()).isEqualTo("Updated via ExternalId");
|
||||
|
||||
originatorHelper.deleteOriginatorByExternalId(externalId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteOriginator() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
final Long originatorId = originatorHelper.createOriginator(externalId);
|
||||
|
||||
final Long deletedId = originatorHelper.deleteOriginator(originatorId);
|
||||
assertThat(deletedId).isEqualTo(originatorId);
|
||||
|
||||
final CallFailedRuntimeException exception = originatorHelper.getOriginatorByIdExpectingError(originatorId);
|
||||
assertThat(exception.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteOriginatorByExternalId() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
final Long originatorId = originatorHelper.createOriginator(externalId);
|
||||
|
||||
final Long deletedId = originatorHelper.deleteOriginatorByExternalId(externalId);
|
||||
assertThat(deletedId).isEqualTo(originatorId);
|
||||
|
||||
final CallFailedRuntimeException exception = originatorHelper.getOriginatorByExternalIdExpectingError(externalId);
|
||||
assertThat(exception.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithOptionalName() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
final PostLoanOriginatorsRequest request = new PostLoanOriginatorsRequest().externalId(externalId);
|
||||
|
||||
final Long originatorId = originatorHelper.createOriginator(request);
|
||||
assertThat(originatorId).isNotNull();
|
||||
|
||||
originatorHelper.deleteOriginator(originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithDuplicateExternalId() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
|
||||
final Long originatorId = originatorHelper.createOriginator(externalId);
|
||||
|
||||
final CallFailedRuntimeException exception = originatorHelper
|
||||
.createOriginatorExpectingError(new PostLoanOriginatorsRequest().externalId(externalId).name("Duplicate"));
|
||||
assertThat(exception.getStatus()).isEqualTo(403);
|
||||
|
||||
originatorHelper.deleteOriginator(originatorId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithInvalidStatus() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
final PostLoanOriginatorsRequest request = new PostLoanOriginatorsRequest().externalId(externalId).name("Test").status("INVALID");
|
||||
|
||||
final CallFailedRuntimeException exception = originatorHelper.createOriginatorExpectingError(request);
|
||||
assertThat(exception.getStatus()).isEqualTo(403);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOriginatorByNonExistentId() {
|
||||
final CallFailedRuntimeException exception = originatorHelper.getOriginatorByIdExpectingError(999999L);
|
||||
assertThat(exception.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOriginatorByNonExistentExternalId() {
|
||||
final CallFailedRuntimeException exception = originatorHelper.getOriginatorByExternalIdExpectingError("NON-EXISTENT-EXTERNAL-ID");
|
||||
assertThat(exception.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateNonExistentOriginator() {
|
||||
final CallFailedRuntimeException exception = originatorHelper.updateOriginatorExpectingError(999999L,
|
||||
new PutLoanOriginatorsRequest().name("Updated"));
|
||||
assertThat(exception.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteNonExistentOriginator() {
|
||||
final CallFailedRuntimeException exception = originatorHelper.deleteOriginatorExpectingError(999999L);
|
||||
assertThat(exception.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateOriginatorWithInvalidCodeValueId() {
|
||||
final String externalId = FeignLoanOriginatorHelper.generateUniqueExternalId();
|
||||
final PostLoanOriginatorsRequest request = new PostLoanOriginatorsRequest().externalId(externalId).name("Test")
|
||||
.originatorTypeId(999999L);
|
||||
|
||||
final CallFailedRuntimeException exception = originatorHelper.createOriginatorExpectingError(request);
|
||||
assertThat(exception.getStatus()).isEqualTo(404);
|
||||
}
|
||||
}
|
||||
+166
@@ -0,0 +1,166 @@
|
||||
/**
|
||||
* 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.loans;
|
||||
|
||||
import io.restassured.specification.RequestSpecification;
|
||||
import io.restassured.specification.ResponseSpecification;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import org.apache.fineract.integrationtests.common.Utils;
|
||||
|
||||
public final class LoanOriginatorHelper {
|
||||
|
||||
private static final String LOAN_ORIGINATOR_URL = "/fineract-provider/api/v1/loan-originators";
|
||||
|
||||
private LoanOriginatorHelper() {}
|
||||
|
||||
// ========== CREATE ==========
|
||||
|
||||
public static Integer createOriginator(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
|
||||
final String externalId) {
|
||||
return createOriginator(requestSpec, responseSpec, externalId, null, null, null, null);
|
||||
}
|
||||
|
||||
public static Integer createOriginator(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
|
||||
final String externalId, final String name, final String status, final Long originatorTypeId, final Long channelTypeId) {
|
||||
final String json = buildCreateJson(externalId, name, status, originatorTypeId, channelTypeId);
|
||||
return Utils.performServerPost(requestSpec, responseSpec, LOAN_ORIGINATOR_URL + "?" + Utils.TENANT_IDENTIFIER, json, "resourceId");
|
||||
}
|
||||
|
||||
public static HashMap<String, Object> createOriginatorWithFullResponse(final RequestSpecification requestSpec,
|
||||
final ResponseSpecification responseSpec, final String externalId) {
|
||||
final String json = buildCreateJson(externalId, null, null, null, null);
|
||||
return Utils.performServerPost(requestSpec, responseSpec, LOAN_ORIGINATOR_URL + "?" + Utils.TENANT_IDENTIFIER, json, "");
|
||||
}
|
||||
|
||||
public static List<HashMap<String, Object>> createOriginatorExpectingError(final RequestSpecification requestSpec,
|
||||
final ResponseSpecification responseSpec, final String json) {
|
||||
return Utils.performServerPost(requestSpec, responseSpec, LOAN_ORIGINATOR_URL + "?" + Utils.TENANT_IDENTIFIER, json, "errors");
|
||||
}
|
||||
|
||||
// ========== READ ==========
|
||||
|
||||
public static HashMap<String, Object> getOriginatorById(final RequestSpecification requestSpec,
|
||||
final ResponseSpecification responseSpec, final Integer originatorId) {
|
||||
return Utils.performServerGet(requestSpec, responseSpec, LOAN_ORIGINATOR_URL + "/" + originatorId + "?" + Utils.TENANT_IDENTIFIER,
|
||||
"");
|
||||
}
|
||||
|
||||
public static HashMap<String, Object> getOriginatorByExternalId(final RequestSpecification requestSpec,
|
||||
final ResponseSpecification responseSpec, final String externalId) {
|
||||
return Utils.performServerGet(requestSpec, responseSpec,
|
||||
LOAN_ORIGINATOR_URL + "/external-id/" + externalId + "?" + Utils.TENANT_IDENTIFIER, "");
|
||||
}
|
||||
|
||||
public static List<HashMap<String, Object>> getAllOriginators(final RequestSpecification requestSpec,
|
||||
final ResponseSpecification responseSpec) {
|
||||
return Utils.performServerGet(requestSpec, responseSpec, LOAN_ORIGINATOR_URL + "?" + Utils.TENANT_IDENTIFIER, "");
|
||||
}
|
||||
|
||||
// ========== UPDATE ==========
|
||||
|
||||
public static HashMap<String, Object> updateOriginator(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
|
||||
final Integer originatorId, final String name, final String status, final Long originatorTypeId, final Long channelTypeId) {
|
||||
final String json = buildUpdateJson(name, status, originatorTypeId, channelTypeId);
|
||||
return Utils.performServerPut(requestSpec, responseSpec, LOAN_ORIGINATOR_URL + "/" + originatorId + "?" + Utils.TENANT_IDENTIFIER,
|
||||
json, "");
|
||||
}
|
||||
|
||||
public static HashMap<String, Object> updateOriginatorByExternalId(final RequestSpecification requestSpec,
|
||||
final ResponseSpecification responseSpec, final String externalId, final String name, final String status,
|
||||
final Long originatorTypeId, final Long channelTypeId) {
|
||||
final String json = buildUpdateJson(name, status, originatorTypeId, channelTypeId);
|
||||
return Utils.performServerPut(requestSpec, responseSpec,
|
||||
LOAN_ORIGINATOR_URL + "/external-id/" + externalId + "?" + Utils.TENANT_IDENTIFIER, json, "");
|
||||
}
|
||||
|
||||
// ========== DELETE ==========
|
||||
|
||||
public static Integer deleteOriginator(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
|
||||
final Integer originatorId) {
|
||||
return Utils.performServerDelete(requestSpec, responseSpec,
|
||||
LOAN_ORIGINATOR_URL + "/" + originatorId + "?" + Utils.TENANT_IDENTIFIER, "resourceId");
|
||||
}
|
||||
|
||||
public static Integer deleteOriginatorByExternalId(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
|
||||
final String externalId) {
|
||||
return Utils.performServerDelete(requestSpec, responseSpec,
|
||||
LOAN_ORIGINATOR_URL + "/external-id/" + externalId + "?" + Utils.TENANT_IDENTIFIER, "resourceId");
|
||||
}
|
||||
|
||||
// ========== JSON BUILDERS ==========
|
||||
|
||||
private static String buildCreateJson(final String externalId, final String name, final String status, final Long originatorTypeId,
|
||||
final Long channelTypeId) {
|
||||
final StringBuilder json = new StringBuilder("{");
|
||||
json.append("\"externalId\": \"").append(externalId).append("\"");
|
||||
if (name != null) {
|
||||
json.append(", \"name\": \"").append(name).append("\"");
|
||||
}
|
||||
if (status != null) {
|
||||
json.append(", \"status\": \"").append(status).append("\"");
|
||||
}
|
||||
if (originatorTypeId != null) {
|
||||
json.append(", \"originatorTypeId\": ").append(originatorTypeId);
|
||||
}
|
||||
if (channelTypeId != null) {
|
||||
json.append(", \"channelTypeId\": ").append(channelTypeId);
|
||||
}
|
||||
json.append("}");
|
||||
return json.toString();
|
||||
}
|
||||
|
||||
private static String buildUpdateJson(final String name, final String status, final Long originatorTypeId, final Long channelTypeId) {
|
||||
final StringBuilder json = new StringBuilder("{");
|
||||
boolean first = true;
|
||||
if (name != null) {
|
||||
json.append("\"name\": \"").append(name).append("\"");
|
||||
first = false;
|
||||
}
|
||||
if (status != null) {
|
||||
if (!first) {
|
||||
json.append(", ");
|
||||
}
|
||||
json.append("\"status\": \"").append(status).append("\"");
|
||||
first = false;
|
||||
}
|
||||
if (originatorTypeId != null) {
|
||||
if (!first) {
|
||||
json.append(", ");
|
||||
}
|
||||
json.append("\"originatorTypeId\": ").append(originatorTypeId);
|
||||
first = false;
|
||||
}
|
||||
if (channelTypeId != null) {
|
||||
if (!first) {
|
||||
json.append(", ");
|
||||
}
|
||||
json.append("\"channelTypeId\": ").append(channelTypeId);
|
||||
}
|
||||
json.append("}");
|
||||
return json.toString();
|
||||
}
|
||||
|
||||
// ========== UTILITIES ==========
|
||||
|
||||
public static String generateUniqueExternalId() {
|
||||
return "EXT-" + UUID.randomUUID().toString().substring(0, 8);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user