diff --git a/components/apimgt/org.wso2.carbon.apimgt.impl/src/test/java/org/wso2/carbon/apimgt/impl/workflow/TenantWorkflowConfigHolderTest.java b/components/apimgt/org.wso2.carbon.apimgt.impl/src/test/java/org/wso2/carbon/apimgt/impl/workflow/TenantWorkflowConfigHolderTest.java
index c523d3133fe2..98d0d30a90a8 100644
--- a/components/apimgt/org.wso2.carbon.apimgt.impl/src/test/java/org/wso2/carbon/apimgt/impl/workflow/TenantWorkflowConfigHolderTest.java
+++ b/components/apimgt/org.wso2.carbon.apimgt.impl/src/test/java/org/wso2/carbon/apimgt/impl/workflow/TenantWorkflowConfigHolderTest.java
@@ -302,7 +302,11 @@ public void testFailureToLoadTenantWFConfigWhenWFExecutorPropertySetterInInvalid
"that takes a single String, int, long, float, double or boolean parameter", e.getMessage());
}
}
-
+
+ /**
+ * This method tests the correct loading of properties where property values can have
+ * different types, such as string, int, double, etc.
+ */
@Test
public void testLoadingTenantWFConfigWhenWFExecutorHasMultipleParamTypes() throws Exception {
//Workflow executor class setter methods are available for different parameter types
@@ -346,6 +350,50 @@ public void testLoadingTenantWFConfigWhenWFExecutorHasMultipleParamTypes() throw
"param types");
}
}
+
+ /**
+ * This method tests the correct loading of properties when all property values are specified as strings.
+ * This supports proper migration of workflow-extensions properties
+ */
+ @Test
+ public void testLoadingTenantWFExecutorWithMultipleParamTypesWhenAllPropValuesAreSpecifiedAsStrings() throws Exception {
+ //Workflow executor class setter methods are available for different parameter types
+ JsonObject WFExecutor = JsonParser.parseString("{\n" +
+ " \"Workflows\": {\n" +
+ " \"UserSignUp\": {\n" +
+ " \"Enabled\": true,\n" +
+ " \"Class\": \"org.wso2.carbon.apimgt.impl.workflow.WorkflowExecutorWithMultipleParamTypes\",\n" +
+ " \"Properties\": {\n" +
+ " \"StringParam\": \"admin\",\n" +
+ " \"IntParam\": \"1\",\n" +
+ " \"BooleanParam\": \"true\",\n" +
+ " \"LongParam\": \"10000000\",\n" +
+ " \"DoubleParam\": \"10.1000000000\",\n" +
+ " \"FloatParam\": \"10.1\",\n" +
+ " \"OMElementParam\": \"test\"\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ "}").getAsJsonObject();
+ TenantWorkflowConfigHolder tenantWorkflowConfigHolder = new TenantWorkflowConfigHolder(tenantDomain, tenantID);
+ Mockito.when(apimConfigService.getWorkFlowConfig(tenantDomain))
+ .thenReturn(WorkflowTestUtils.getWorkFlowConfigDTOFromJsonConfig(WFExecutor));
+ try {
+ tenantWorkflowConfigHolder.load();
+ Assert.assertNotNull(tenantWorkflowConfigHolder.getWorkflowExecutor("AM_USER_SIGNUP"));
+ WorkflowExecutorWithMultipleParamTypes executor = (WorkflowExecutorWithMultipleParamTypes) tenantWorkflowConfigHolder.getWorkflowExecutor("AM_USER_SIGNUP");
+ Assert.assertEquals("admin", executor.stringParam);
+ Assert.assertEquals((Integer) 1, executor.intParam);
+ Assert.assertEquals(true, executor.boolParam);
+ Assert.assertEquals(10000000, executor.longParam);
+ Assert.assertEquals((Double) 10.1000000000, executor.doubleParam);
+ Assert.assertEquals((Float) 10.1f, executor.floatParam);
+ Assert.assertEquals("test", executor.omElement.toString());
+ } catch (WorkflowException e) {
+ Assert.fail("Unexpected WorkflowException has been thrown while loading workflow executor for different " +
+ "param types");
+ }
+ }
}
/**