Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,12 @@
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;

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 org.apache.fineract.client.feign.util.CallFailedRuntimeException;
import org.apache.fineract.client.util.CallFailedRuntimeException;
import org.apache.fineract.client.models.GetOfficesResponse;
import org.apache.fineract.client.models.PostClientsRequest;
import org.apache.fineract.integrationtests.common.ClientHelper;
import org.apache.fineract.integrationtests.common.OfficeHelper;
import org.apache.fineract.integrationtests.common.SchedulerJobHelper;
import org.apache.fineract.integrationtests.common.Utils;
import org.apache.fineract.integrationtests.support.instancemode.ConfigureInstanceMode;
import org.apache.fineract.integrationtests.support.instancemode.InstanceModeSupportExtension;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -43,24 +37,13 @@
@ExtendWith(InstanceModeSupportExtension.class)
public class InstanceModeIntegrationTest {

private ResponseSpecification responseSpec200;
private ResponseSpecification responseSpec405;
private RequestSpecification requestSpec;
private SchedulerJobHelper schedulerJobHelper;
private int jobId;

@BeforeEach
public void setup() throws InterruptedException {
Utils.initializeRESTAssured();

requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
requestSpec.header("Fineract-Platform-TenantId", "default");
responseSpec200 = new ResponseSpecBuilder().expectStatusCode(200).build();
responseSpec405 = new ResponseSpecBuilder().expectStatusCode(405).build();

schedulerJobHelper = new SchedulerJobHelper(requestSpec);
// Apply Annual Fee For Savings"
schedulerJobHelper = new SchedulerJobHelper();
// Apply Annual Fee For Savings
jobId = schedulerJobHelper.getSchedulerJobIdByShortName("SA_AANF");
}

Expand All @@ -84,12 +67,16 @@ public void testGetHeadOfficeWorks_WhenInstanceModeIsWriteOnly() {
assertNotNull(result);
}



@ConfigureInstanceMode(readEnabled = false, writeEnabled = false, batchWorkerEnabled = true, batchManagerEnabled = true)
@Test
public void testGetHeadOfficeDoesntWork_WhenInstanceModeIsBatchOnly() {
// given
// when
CallFailedRuntimeException exception = assertThrows(CallFailedRuntimeException.class, () -> OfficeHelper.getHeadOffice());
org.apache.fineract.client.feign.util.CallFailedRuntimeException exception = assertThrows(
org.apache.fineract.client.feign.util.CallFailedRuntimeException.class,
() -> OfficeHelper.getHeadOffice());
// then
assertEquals(405, exception.getStatus());
}
Expand All @@ -99,9 +86,8 @@ public void testGetHeadOfficeDoesntWork_WhenInstanceModeIsBatchOnly() {
public void testCreateClientDoesntWork_WhenReadOnly() {
// given
PostClientsRequest request = ClientHelper.defaultClientCreationRequest();
// when
ClientHelper.createClient(requestSpec, responseSpec405, request);
// then no exception thrown
// when/then
assertThrows(CallFailedRuntimeException.class, () -> ClientHelper.createClient(request));
}

@ConfigureInstanceMode(readEnabled = false, writeEnabled = true, batchWorkerEnabled = false, batchManagerEnabled = false)
Expand All @@ -110,7 +96,7 @@ public void testCreateClientWorks_WhenWriteOnly() {
// given
PostClientsRequest request = ClientHelper.defaultClientCreationRequest();
// when
Integer result = ClientHelper.createClient(requestSpec, responseSpec200, request);
var result = ClientHelper.createClient(request);
// then
assertNotNull(result);
}
Expand All @@ -120,27 +106,22 @@ public void testCreateClientWorks_WhenWriteOnly() {
public void testCreateClientDoesntWork_WhenBatchOnly() {
// given
PostClientsRequest request = ClientHelper.defaultClientCreationRequest();
// when
ClientHelper.createClient(requestSpec, responseSpec405, request);
// then no exception thrown
// when/then
assertThrows(CallFailedRuntimeException.class, () -> ClientHelper.createClient(request));
}

@ConfigureInstanceMode(readEnabled = true, writeEnabled = false, batchWorkerEnabled = false, batchManagerEnabled = false)
@Test
public void testRunSchedulerJobDoesntWork_WhenReadOnly() {
// given
// when
schedulerJobHelper.runSchedulerJob(jobId, responseSpec405);
// then no exception thrown
// when/then
assertThrows(CallFailedRuntimeException.class, () -> schedulerJobHelper.runSchedulerJob(jobId));
}

@ConfigureInstanceMode(readEnabled = false, writeEnabled = true, batchWorkerEnabled = false, batchManagerEnabled = false)
@Test
public void testRunSchedulerJobDoesntWork_WhenWriteOnly() {
// given
// when
schedulerJobHelper.runSchedulerJob(jobId, responseSpec405);
// then no exception thrown
// when/then
assertThrows(CallFailedRuntimeException.class, () -> schedulerJobHelper.runSchedulerJob(jobId));
}

@ConfigureInstanceMode(readEnabled = false, writeEnabled = false, batchWorkerEnabled = true, batchManagerEnabled = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import org.apache.fineract.client.models.GetJobsResponse;
import org.apache.fineract.client.models.PutJobsJobIDRequest;
import org.apache.fineract.client.util.Calls;
import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType;
Expand All @@ -58,6 +59,12 @@ public class SchedulerJobHelper {
private final ResponseSpecification response200Spec;
private final ResponseSpecification response202Spec;

public SchedulerJobHelper() {
this.requestSpec = null;
this.response200Spec = null;
this.response202Spec = null;
}

// 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)
Expand Down Expand Up @@ -162,8 +169,7 @@ private static String updateSchedulerJobAsJSON(final boolean active) {
}

public void runSchedulerJob(int jobId) {
final ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(202).build();
runSchedulerJob(jobId, responseSpec);
Calls.ok(FineractClientHelper.getFineractClient().jobs.executeJob((long) jobId, "executeJob"));
}

// TODO: Rewrite to use fineract-client instead!
Expand Down Expand Up @@ -218,18 +224,11 @@ public int getSchedulerJobIdByName(String jobName) {
"No such named Job (see org.apache.fineract.infrastructure.jobs.service.JobName enum):" + jobName);
}

// 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 int getSchedulerJobIdByShortName(String shortName) {
Map<String, Object> jobMap = getSchedulerJobByShortName(shortName);
final String GET_SCHEDULER_JOB_URL = "/fineract-provider/api/v1/jobs/" + SHORT_NAME_PARAM + "/" + shortName + "?"
+ Utils.TENANT_IDENTIFIER;
LOG.info("------------------------ RETRIEVING SCHEDULER JOB ID BY SHORT NAME -------------------------");
Integer response = (Integer) jobMap.get("jobId");
assertNotNull(response);
return response;
GetJobsResponse job = Calls.ok(FineractClientHelper.getFineractClient().jobs.retrieveByShortName(shortName));
assertNotNull(job);
return job.getJobId().intValue();
}

/**
Expand Down