From 35ee855d664246d55694f06b61bde82277cb2c5c Mon Sep 17 00:00:00 2001 From: JvD_Ericsson Date: Wed, 29 Mar 2023 12:34:59 +0100 Subject: Backend support for custom functions Issue-ID: SDC-4455 Signed-off-by: JvD_Ericsson Change-Id: Idb0fd38681066ba9d541f8564c85e316cf03e927 --- .../ToscaFunctionJsonDeserializerTest.java | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'common-be/src/test/java/org/openecomp') diff --git a/common-be/src/test/java/org/openecomp/sdc/be/datatypes/elements/ToscaFunctionJsonDeserializerTest.java b/common-be/src/test/java/org/openecomp/sdc/be/datatypes/elements/ToscaFunctionJsonDeserializerTest.java index b17a3dc3a3..d7c2e7c65e 100644 --- a/common-be/src/test/java/org/openecomp/sdc/be/datatypes/elements/ToscaFunctionJsonDeserializerTest.java +++ b/common-be/src/test/java/org/openecomp/sdc/be/datatypes/elements/ToscaFunctionJsonDeserializerTest.java @@ -139,6 +139,56 @@ class ToscaFunctionJsonDeserializerTest { assertDoesNotThrow(() -> new Yaml().load(toscaFunction.getValue())); } + @Test + void testCustomToscaFunction() throws IOException { + //given + final String toscaCustomFunction = Files.readString(TEST_RESOURCES_PATH.resolve("customFunction.json")); + //when + final ToscaFunction toscaFunction = parseToscaFunction(toscaCustomFunction); + //then + assertTrue(toscaFunction instanceof ToscaCustomFunction); + final Object yamlObject = new Yaml().load(toscaFunction.getValue()); + assertTrue(yamlObject instanceof Map); + final Map yamlMap = (Map) yamlObject; + final Object customFunctionObj = yamlMap.get("$" + ((ToscaCustomFunction) toscaFunction).getName()); + assertNotNull(customFunctionObj); + assertTrue(customFunctionObj instanceof List); + final List customFunctionParameters = (List) customFunctionObj; + assertEquals(3, customFunctionParameters.size(), "Expecting three parameters"); + assertEquals("string1", customFunctionParameters.get(0)); + + assertTrue(customFunctionParameters.get(1) instanceof Map); + final Map parameter1Map = (Map) customFunctionParameters.get(1); + assertNotNull(parameter1Map.get(ToscaFunctionType.GET_ATTRIBUTE.getName())); + assertTrue(parameter1Map.get(ToscaFunctionType.GET_ATTRIBUTE.getName()) instanceof List); + List getAttributeParameters = (List) parameter1Map.get(ToscaFunctionType.GET_ATTRIBUTE.getName()); + assertEquals(2, getAttributeParameters.size(), "Expecting two parameters in the get_attribute function"); + assertEquals("SELF", getAttributeParameters.get(0)); + assertEquals("descriptor_id", getAttributeParameters.get(1)); + + assertTrue(customFunctionParameters.get(2) instanceof Map); + final Map parameter2Map = (Map) customFunctionParameters.get(2); + Object customFunctionObj2 = parameter2Map.get(parameter2Map.keySet().stream().iterator().next()); + assertNotNull(customFunctionObj2); + assertTrue(customFunctionObj2 instanceof List); + List customParameters = (List) customFunctionObj2; + assertEquals(2, customParameters.size(), "Expecting two parameters in the sub custom function"); + assertTrue(customParameters.get(0) instanceof Map); + final Map concatFunctionValueMap = (Map) customParameters.get(0); + assertNotNull(concatFunctionValueMap.get(ToscaFunctionType.CONCAT.getName())); + assertTrue(concatFunctionValueMap.get(ToscaFunctionType.CONCAT.getName()) instanceof List); + List concatParameters = (List) concatFunctionValueMap.get(ToscaFunctionType.CONCAT.getName()); + assertEquals(2, concatParameters.size(), "Expecting two parameters in the sub concat function"); + assertEquals("string2", concatParameters.get(0)); + assertTrue(concatParameters.get(1) instanceof Map); + Map yamlFunctionValueMap = (Map) concatParameters.get(1); + assertTrue(yamlFunctionValueMap.get("myList") instanceof List); + assertTrue(yamlFunctionValueMap.get("get_something") instanceof List); + assertTrue(yamlFunctionValueMap.get("string") instanceof String); + + assertEquals("string3", customParameters.get(1)); + } + private ToscaFunction parseToscaFunction(final String toscaFunctionJson) throws JsonProcessingException { return new ObjectMapper().readValue(toscaFunctionJson, ToscaFunction.class); } -- cgit 1.2.3-korg