Change for TOSCA v1.3 get_input
authorToshimichi Fukuda <t_fukuda@jp.fujitsu.com>
Fri, 19 Apr 2019 08:57:30 +0000 (17:57 +0900)
committerOfir Sonsino <ofir.sonsino@intl.att.com>
Tue, 7 May 2019 15:53:54 +0000 (15:53 +0000)
Change-Id: I39c8917c8c984896769e08a39302a98bca94e282
Issue-ID: SDC-2046
Signed-off-by: Toshimichi Fukuda <t_fukuda@jp.fujitsu.com>
src/main/java/org/onap/sdc/toscaparser/api/ToscaTemplate.java
src/main/java/org/onap/sdc/toscaparser/api/functions/GetInput.java
src/main/java/org/onap/sdc/toscaparser/api/parameters/Input.java
src/test/java/org/onap/sdc/toscaparser/api/JToscaImportTest.java
src/test/java/org/onap/sdc/toscaparser/api/functions/GetInputTest.java [new file with mode: 0644]
src/test/resources/csars/dataTypes-test-service.csar [new file with mode: 0644]
src/test/resources/csars/listed_input.csar [new file with mode: 0644]
src/test/resources/csars/listed_input_ng.csar [new file with mode: 0644]

index b5ae4c4..6edc291 100644 (file)
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (c) 2017 AT&T Intellectual Property.
+ * ================================================================================
+ * Licensed 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.
+ * ============LICENSE_END=========================================================
+ * Modifications copyright (c) 2019 Fujitsu Limited.
+ * ================================================================================
+ */
 package org.onap.sdc.toscaparser.api;
 
 import java.io.File;
@@ -22,6 +41,7 @@ import org.onap.sdc.toscaparser.api.common.JToscaException;
 import org.onap.sdc.toscaparser.api.common.JToscaValidationIssue;
 import org.onap.sdc.toscaparser.api.common.ValidationIssueCollector;
 import org.onap.sdc.toscaparser.api.elements.EntityType;
+import org.onap.sdc.toscaparser.api.elements.DataType;
 import org.onap.sdc.toscaparser.api.elements.Metadata;
 import org.onap.sdc.toscaparser.api.extensions.ExtTools;
 import org.onap.sdc.toscaparser.api.parameters.Input;
@@ -105,6 +125,7 @@ public class ToscaTemplate extends Object {
        private LinkedHashMap<String, LinkedHashMap<String, Object>> metaProperties;
        private Set<String> processedImports;
        private LinkedHashMap<String,Object> customDefsFinal = new LinkedHashMap<>();
+       private HashSet<DataType> dataTypes;
 
        public ToscaTemplate(String _path,
                                                LinkedHashMap<String,Object> _parsedParams,
@@ -214,7 +235,8 @@ public class ToscaTemplate extends Object {
             this.metaData = _tplMetaData();
             this.relationshipTypes = _tplRelationshipTypes();
             this.description = _tplDescription();
-            this.topologyTemplate = _topologyTemplate();
+                       this.dataTypes = getTopologyDataTypes();
+                       this.topologyTemplate = _topologyTemplate();
             this.repositories = _tplRepositories();
             if(topologyTemplate.getTpl() != null) {
                 this.inputs = _inputs();
@@ -325,6 +347,27 @@ public class ToscaTemplate extends Object {
                return topologyTemplate.getGroups();
        }
 
+       /**
+        * Read datatypes field
+        * @return return list of datatypes.
+        */
+       @SuppressWarnings("unchecked")
+       private HashSet<DataType> getTopologyDataTypes(){
+               LinkedHashMap<String,Object> value =
+                               (LinkedHashMap<String,Object>)tpl.get(DATA_TYPES);
+               HashSet<DataType> datatypes = new HashSet<>();
+               if(value != null) {
+                       customDefsFinal.putAll(value);
+                       for(Map.Entry<String,Object> me: value.entrySet()) {
+                               DataType datatype = new DataType(me.getKey(), value);
+                               datatypes.add(datatype);
+                       }
+               }
+
+
+               return datatypes;
+       }
+
        /**
         * This method is used to get consolidated custom definitions from all imports
         * It is logically divided in two parts to handle imports; map and list formats.
@@ -855,6 +898,14 @@ public class ToscaTemplate extends Object {
                return nestedToscaTplsWithTopology;
        }
 
+       /**
+        * Get datatypes.
+        * @return return list of datatypes.
+        */
+       public HashSet<DataType> getDataTypes() {
+               return dataTypes;
+       }
+
        @Override
        public String toString() {
                return "ToscaTemplate{" +
@@ -883,6 +934,7 @@ public class ToscaTemplate extends Object {
                                ", graph=" + graph +
                                ", csarTempDir='" + csarTempDir + '\'' +
                                ", nestingLoopCounter=" + nestingLoopCounter +
+                               ", dataTypes=" + dataTypes +
                                '}';
        }
 
index 24d5a18..026113e 100644 (file)
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (c) 2017 AT&T Intellectual Property.
+ * ================================================================================
+ * Licensed 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.
+ * ============LICENSE_END=========================================================
+ * Modifications copyright (c) 2019 Fujitsu Limited.
+ * ================================================================================
+ */
 package org.onap.sdc.toscaparser.api.functions;
 
 import org.onap.sdc.toscaparser.api.DataEntity;
@@ -10,7 +29,13 @@ import java.util.ArrayList;
 import java.util.LinkedHashMap;
 
 public class GetInput extends Function {
-       
+
+       public static final String INDEX = "INDEX";
+       public static final String INPUTS = "inputs";
+       public static final String TYPE = "type";
+       public static final String PROPERTIES = "properties";
+       public static final String ENTRY_SCHEMA = "entry_schema";
+
        public GetInput(TopologyTemplate toscaTpl, Object context, String name, ArrayList<Object> _args) {
                super(toscaTpl,context,name,_args);
                
@@ -18,17 +43,13 @@ public class GetInput extends Function {
 
        @Override
        void validate() {
+
 //         if(args.size() != 1) {
 //             //PA - changed to WARNING from CRITICAL after talking to Renana, 22/05/2017
 //             ThreadLocalsHolder.getCollector().appendWarning(String.format(
 //                 "ValueError: Expected one argument for function \"get_input\" but received \"%s\"",
 //                 args.toString()));
 //         }
-               if(args.size() > 2) {
-                       ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE009", String.format(
-                                       "ValueError: Expected max 2 arguments for function \"get_input\" but received \"%s\"",
-                                       args.size())));
-               }
            boolean bFound = false;
            for(Input inp: toscaTpl.getInputs()) {
                if(inp.getName().equals(args.get(0))) {
@@ -40,12 +61,48 @@ public class GetInput extends Function {
                ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE158", String.format(
                    "UnknownInputError: Unknown input \"%s\"",args.get(0)))); 
            }
+           else if(args.size() > 2){
+                       LinkedHashMap<String,Object> inputs = (LinkedHashMap<String,Object>)toscaTpl.getTpl().get(INPUTS);
+                       LinkedHashMap<String,Object> data = (LinkedHashMap<String,Object>)inputs.get(getInputName());
+                       String type ;
+
+               for(int argumentNumber=1;argumentNumber<args.size();argumentNumber++){
+                               String dataTypeName="";
+                       bFound=false;
+                       if(INDEX.equals(args.get(argumentNumber).toString()) || (args.get(argumentNumber) instanceof Integer)){
+                               bFound=true;
+                               }
+                       else{
+                                       type = (String)data.get(TYPE);
+                               //get type name
+                               if(type.equals("list") || type.equals("map")){
+                                               LinkedHashMap<String,Object> schema = (LinkedHashMap<String,Object>)data.get(ENTRY_SCHEMA);
+                                       dataTypeName=(String)schema.get(TYPE);
+                                       }else{
+                                       dataTypeName=type;
+                                       }
+                               //check property name
+                                       LinkedHashMap<String,Object> dataType = (LinkedHashMap<String,Object>)toscaTpl.getCustomDefs().get(dataTypeName);
+                               if(dataType != null) {
+                                               LinkedHashMap<String, Object> props = (LinkedHashMap<String, Object>) dataType.get(PROPERTIES);
+                                               data = (LinkedHashMap<String, Object>)props.get(args.get(argumentNumber).toString());
+                                               if(data != null) {
+                                                       bFound = true;
+                                               }
+                                       }
+                               }
+                               if(!bFound){
+                                       ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE282", String.format(
+                                                       "UnknownDataType: Unknown data type \"%s\"",args.get(argumentNumber))));
+                               }
+                       }
+               }
        }
 
        public  Object result() {
                if(toscaTpl.getParsedParams() != null && 
                                toscaTpl.getParsedParams().get(getInputName()) != null) {
-                       LinkedHashMap<String,Object> ttinp = (LinkedHashMap<String,Object>)toscaTpl.getTpl().get("inputs");
+                       LinkedHashMap<String,Object> ttinp = (LinkedHashMap<String,Object>)toscaTpl.getTpl().get(INPUTS);
                        LinkedHashMap<String,Object> ttinpinp = (LinkedHashMap<String,Object>)ttinp.get(getInputName());
                        String type = (String)ttinpinp.get("type");
 
@@ -94,6 +151,15 @@ public class GetInput extends Function {
                return (String)args.get(0);
        }
 
+       public LinkedHashMap<String,Object> getEntrySchema() {
+               LinkedHashMap<String,Object> inputs = (LinkedHashMap<String,Object>)toscaTpl.getTpl().get(INPUTS);
+               LinkedHashMap<String,Object> inputValue = (LinkedHashMap<String,Object>)inputs.get(getInputName());
+               return (LinkedHashMap<String,Object>)inputValue.get(ENTRY_SCHEMA);
+       }
+
+       public ArrayList<Object> getArguments(){
+               return args;
+       }
 }
 
 /*python
@@ -136,4 +202,4 @@ def result(self):
 def input_name(self):
     return self.args[0]
 
-*/
\ No newline at end of file
+*/
index d59f406..5a6eb73 100644 (file)
@@ -176,4 +176,9 @@ public class Input {
        public void resetAnnotaions(){
                annotations = null;
        }
+
+       public LinkedHashMap<String,Object> getEntrySchema() {
+               return schema.getEntrySchema();
+       }
+
 }
index ff03aed..13e17ce 100644 (file)
@@ -1,22 +1,41 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (c) 2017 AT&T Intellectual Property.
+ * ================================================================================
+ * Licensed 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.
+ * ============LICENSE_END=========================================================
+ * Modifications copyright (c) 2019 Fujitsu Limited.
+ * ================================================================================
+ */
 package org.onap.sdc.toscaparser.api;
 
 import org.junit.Test;
 import org.onap.sdc.toscaparser.api.common.JToscaException;
+import org.onap.sdc.toscaparser.api.elements.DataType;
+import org.onap.sdc.toscaparser.api.elements.PropertyDef;
+import org.onap.sdc.toscaparser.api.elements.constraints.Schema;
 import org.onap.sdc.toscaparser.api.parameters.Annotation;
 import org.onap.sdc.toscaparser.api.parameters.Input;
 import org.onap.sdc.toscaparser.api.utils.ThreadLocalsHolder;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.core.IsNull.notNullValue;
+import static org.junit.Assert.*;
 
 public class JToscaImportTest {
 
@@ -199,5 +218,92 @@ public class JToscaImportTest {
                assertEquals(source_type.get().getValue(), "HEAT");
        }
 
+       private static final String TEST_DATATYPE_FILENAME ="csars/dataTypes-test-service.csar";
+       private static final String TEST_DATATYPE_TEST1 = "TestType1";
+       private static final String TEST_DATATYPE_TEST2 = "TestType2";
+       private static final String TEST_DATATYPE_PROPERTY_STR = "strdata";
+       private static final String TEST_DATATYPE_PROPERTY_INT = "intdata";
+       private static final String TEST_DATATYPE_PROPERTY_LIST = "listdata";
+       private static final String TEST_DATATYPE_PROPERTY_TYPE = "type";
+       private static final String TEST_DATATYPE_PROPERTY_ENTRY_SCHEMA = "entry_schema";
+       private static final String TEST_DATATYPE_TOSTRING = "data_types=";
 
+       @Test
+       public void testGetDataType() throws JToscaException {
+               String fileStr = JToscaImportTest.class.getClassLoader().getResource(TEST_DATATYPE_FILENAME).getFile();
+               File file = new File(fileStr);
+               ToscaTemplate toscaTemplate = new ToscaTemplate(file.getAbsolutePath(), null, true, null);
+               HashSet<DataType> dataTypes = toscaTemplate.getDataTypes();
+               assertThat(dataTypes,notNullValue());
+               assertThat(dataTypes.size(),is(2));
+
+               for(DataType dataType: dataTypes){
+                       LinkedHashMap<String, PropertyDef> properties;
+                       PropertyDef property;
+                       if(dataType.getType().equals(TEST_DATATYPE_TEST1)){
+                               properties = dataType.getAllProperties();
+                               property = properties.get(TEST_DATATYPE_PROPERTY_STR);
+                               assertThat(property,notNullValue());
+                               assertThat(property.getName(),is(TEST_DATATYPE_PROPERTY_STR));
+                               assertThat( property.getSchema().get(TEST_DATATYPE_PROPERTY_TYPE),is(Schema.STRING));
+                       }
+                       if(dataType.getType().equals(TEST_DATATYPE_TEST2)){
+                               properties = dataType.getAllProperties();
+                               property = properties.get(TEST_DATATYPE_PROPERTY_INT);
+                               assertThat(property,notNullValue());
+                               assertThat(property.getName(),is(TEST_DATATYPE_PROPERTY_INT));
+                               assertThat(property.getSchema().get(TEST_DATATYPE_PROPERTY_TYPE),is(Schema.INTEGER));
+
+                               property = properties.get(TEST_DATATYPE_PROPERTY_LIST);
+                               assertThat(property,notNullValue());
+                               assertThat(property.getName(),is(TEST_DATATYPE_PROPERTY_LIST));
+                               assertThat(property.getSchema().get(TEST_DATATYPE_PROPERTY_TYPE),is(Schema.LIST));
+                               assertThat(property.getSchema().get(TEST_DATATYPE_PROPERTY_ENTRY_SCHEMA),is(TEST_DATATYPE_TEST1));
+
+                               assertThat((LinkedHashMap<String, Object>) toscaTemplate.getTopologyTemplate().getCustomDefs().get(TEST_DATATYPE_TEST1),notNullValue());
+                               assertThat((LinkedHashMap<String, Object>) toscaTemplate.getTopologyTemplate().getCustomDefs().get(TEST_DATATYPE_TEST2),notNullValue());
+                               assertThat(toscaTemplate.toString(),containsString(TEST_DATATYPE_TOSTRING));
+                       }
+               }
+
+       }
+
+       @Test
+       public void testGetInputValidate() throws JToscaException {
+               String fileStr = JToscaImportTest.class.getClassLoader().getResource(TEST_DATATYPE_FILENAME).getFile();
+               File file = new File(fileStr);
+               ToscaTemplate toscaTemplate = new ToscaTemplate(file.getAbsolutePath(), null, true, null);
+               HashSet<DataType> dataTypes = toscaTemplate.getDataTypes();
+               assertThat(dataTypes,notNullValue());
+               assertThat(dataTypes.size(),is(2));
+
+               for(DataType dataType: dataTypes) {
+                       LinkedHashMap<String, PropertyDef> properties;
+                       PropertyDef property;
+                       if(dataType.getType().equals(TEST_DATATYPE_TEST1)) {
+                               properties = dataType.getAllProperties();
+                               property = properties.get(TEST_DATATYPE_PROPERTY_STR);
+                               assertThat(property,notNullValue());
+                               assertThat(property.getName(),is(TEST_DATATYPE_PROPERTY_STR));
+                               assertThat(property.getSchema().get(TEST_DATATYPE_PROPERTY_TYPE),is(Schema.STRING));
+                       }
+                       if(dataType.getType().equals(TEST_DATATYPE_TEST2)) {
+                               properties = dataType.getAllProperties();
+                               property = properties.get(TEST_DATATYPE_PROPERTY_INT);
+                               assertThat(property,notNullValue());
+                               assertThat(property.getName(),is(TEST_DATATYPE_PROPERTY_INT));
+                               assertThat(property.getSchema().get(TEST_DATATYPE_PROPERTY_TYPE),is(Schema.INTEGER));
+
+                               property = properties.get(TEST_DATATYPE_PROPERTY_LIST);
+                               assertThat(property,notNullValue());
+                               assertThat(property.getName(),is(TEST_DATATYPE_PROPERTY_LIST));
+                               assertThat(property.getSchema().get(TEST_DATATYPE_PROPERTY_TYPE),is(Schema.LIST));
+                               assertThat(property.getSchema().get(TEST_DATATYPE_PROPERTY_ENTRY_SCHEMA),is(TEST_DATATYPE_TEST1));
+
+                               assertThat((LinkedHashMap<String, Object>) toscaTemplate.getTopologyTemplate().getCustomDefs().get(TEST_DATATYPE_TEST1),notNullValue());
+                               assertThat((LinkedHashMap<String, Object>) toscaTemplate.getTopologyTemplate().getCustomDefs().get(TEST_DATATYPE_TEST2),notNullValue());
+                               assertThat(toscaTemplate.toString(),containsString(TEST_DATATYPE_TOSTRING));
+                       }
+               }
+       }
 }
diff --git a/src/test/java/org/onap/sdc/toscaparser/api/functions/GetInputTest.java b/src/test/java/org/onap/sdc/toscaparser/api/functions/GetInputTest.java
new file mode 100644 (file)
index 0000000..577fb17
--- /dev/null
@@ -0,0 +1,96 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (c) 2019 Fujitsu Limited.
+ * ================================================================================
+ * Licensed 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdc.toscaparser.api.functions;
+
+import org.junit.Test;
+import org.onap.sdc.toscaparser.api.*;
+import org.onap.sdc.toscaparser.api.common.JToscaException;
+import org.onap.sdc.toscaparser.api.elements.constraints.Schema;
+import org.onap.sdc.toscaparser.api.parameters.Input;
+import org.onap.sdc.toscaparser.api.utils.ThreadLocalsHolder;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.*;
+
+public class GetInputTest {
+
+    private static final String TEST_FILENAME = "csars/listed_input.csar";
+    private static final String TEST_FILENAME_NG = "csars/listed_input_ng.csar";
+    private static final String TEST_PROPERTY_ROLE = "role";
+    private static final String TEST_PROPERTY_LONGITUDE = "longitude";
+    private static final String TEST_DEFAULT_VALUE = "dsvpn-hub";
+    private static final String TEST_DESCRIPTION_VALUE = "This is used for SDWAN only";
+    private static final String TEST_INPUT_TYPE="type";
+    private static final String TEST_INPUT_SCHEMA_TYPE="tosca.datatypes.siteresource.site";
+    private static final String TEST_TOSTRING = "get_input:[sites, 1, longitude]";
+    private static final String TEST_INPUT_SITES= "sites";
+
+    @Test
+    public void validate() throws JToscaException {
+        String fileStr = JToscaImportTest.class.getClassLoader().getResource(TEST_FILENAME).getFile();
+        File file = new File(fileStr);
+        ToscaTemplate toscaTemplate = new ToscaTemplate(file.getAbsolutePath(), null, true, null, false);
+        NodeTemplate nodeTemplate = toscaTemplate.getNodeTemplates().get(1).getSubMappingToscaTemplate().getNodeTemplates().get(0);
+        ArrayList<Input> inputs = toscaTemplate.getNodeTemplates().get(1).getSubMappingToscaTemplate().getInputs();
+        LinkedHashMap<String, Property> properties = nodeTemplate.getProperties();
+        assertThat(properties,notNullValue());
+        assertThat(properties.size(),is(14));
+
+        Property property = properties.get(TEST_PROPERTY_ROLE);
+        assertThat(properties,notNullValue());
+        assertThat(property.getName(),is(TEST_PROPERTY_ROLE));
+        assertThat(property.getType(),is(Schema.STRING));
+        assertThat(property.getDefault(),is(TEST_DEFAULT_VALUE));
+        assertThat(property.getDescription(),is(TEST_DESCRIPTION_VALUE));
+        GetInput getInput= (GetInput)property.getValue();
+        assertThat(getInput.getEntrySchema().get(TEST_INPUT_TYPE).toString(),is(TEST_INPUT_SCHEMA_TYPE));
+
+        property = properties.get(TEST_PROPERTY_LONGITUDE);
+        assertThat(properties,notNullValue());
+        assertThat(property.getName(), is(TEST_PROPERTY_LONGITUDE));
+        assertThat(property.getValue().toString(),is(TEST_TOSTRING));
+        getInput= (GetInput)property.getValue();
+        ArrayList<Object> getInputArguments = getInput.getArguments();
+        assertThat(getInputArguments.size(),is(3));
+        assertThat(getInputArguments.get(0).toString(), is(TEST_INPUT_SITES));
+        assertThat(getInputArguments.get(1).toString(), is("1"));
+        assertThat(getInputArguments.get(2).toString(), is(TEST_PROPERTY_LONGITUDE));
+
+        Input in = inputs.get(10);
+        assertThat(in.getEntrySchema().get(TEST_INPUT_TYPE), is(TEST_INPUT_SCHEMA_TYPE));
+        assertThat(in.getName(),is(TEST_INPUT_SITES));
+        assertThat(in.getType(),is(Input.LIST));
+    }
+
+    @Test
+    public void validate_ng() throws JToscaException {
+        //invalid file
+        String fileStr = JToscaImportTest.class.getClassLoader().getResource(TEST_FILENAME_NG).getFile();
+        File file = new File(fileStr);
+        ToscaTemplate toscaTemplate = new ToscaTemplate(file.getAbsolutePath(), null, true, null,false);
+
+        List<String> issues = ThreadLocalsHolder.getCollector().getValidationIssueReport();
+        assertTrue(issues.stream().anyMatch(x -> x.contains("JE282")));
+    }
+ }
diff --git a/src/test/resources/csars/dataTypes-test-service.csar b/src/test/resources/csars/dataTypes-test-service.csar
new file mode 100644 (file)
index 0000000..b4de177
Binary files /dev/null and b/src/test/resources/csars/dataTypes-test-service.csar differ
diff --git a/src/test/resources/csars/listed_input.csar b/src/test/resources/csars/listed_input.csar
new file mode 100644 (file)
index 0000000..445b91a
Binary files /dev/null and b/src/test/resources/csars/listed_input.csar differ
diff --git a/src/test/resources/csars/listed_input_ng.csar b/src/test/resources/csars/listed_input_ng.csar
new file mode 100644 (file)
index 0000000..6b3402e
Binary files /dev/null and b/src/test/resources/csars/listed_input_ng.csar differ