Fix NPE, add getters to IEntityDetails

Change-Id: Ia150f003fade5a276d785b2be90a8d9f63ab9f4e
Issue-ID: SDC-2057
Signed-off-by: Manzon, Inna (im453s) <im453s@intl.att.com>
diff --git a/pom.xml b/pom.xml
index a3e2699..49d4590 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
 	<artifactId>sdc-tosca</artifactId>
 	<name>sdc-sdc-tosca</name>
 	<description>SDC Tosca Parser JAR file for use by consumers</description>
-	<version>1.4.12-SNAPSHOT</version>
+	<version>1.5.0-SNAPSHOT</version>
 	<packaging>jar</packaging>
 
 	<properties>
@@ -118,7 +118,7 @@
 		<dependency>
 			<groupId>org.onap.sdc.jtosca</groupId>
 			<artifactId>jtosca</artifactId>
-			<version>1.4.10</version>
+			<version>1.5.0-SNAPSHOT</version>
 		</dependency>
 
 
diff --git a/src/main/java/org/onap/sdc/tosca/parser/api/IEntityDetails.java b/src/main/java/org/onap/sdc/tosca/parser/api/IEntityDetails.java
index c4393cc..15bff9c 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/api/IEntityDetails.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/api/IEntityDetails.java
@@ -14,7 +14,7 @@
      * Retrieves entity instance template type.
      * @return {@link EntityTemplateType} enum entry describing given object type
      */
-    EntityTemplateType getType();
+    EntityTemplateType getEntityType();
 
     /**
      * Retrieves entity instance name
@@ -22,6 +22,11 @@
     String getName();
 
     /**
+     * Retrieves entity Tosca type
+     */
+    String getToscaType();
+
+    /**
      * Retrieves entity {@link Metadata} object
      */
     Metadata getMetadata();
@@ -33,6 +38,12 @@
     Map<String, Property> getProperties();
 
     /**
+     * Retrieves member names of the entity instance
+     * @return List of member names
+     */
+    List<String> getMembers();
+
+    /**
      * Retrieves member nodes of the entity instance
      * @return List of member nodes entity objects
      */
@@ -72,5 +83,5 @@
     /**
      * Retrieves list of policy target entity instances (groups or node templates)
      */
-    List<IEntityDetails> getTargetNodes();
+    List<IEntityDetails> getTargetEntities();
 }
\ No newline at end of file
diff --git a/src/main/java/org/onap/sdc/tosca/parser/api/ISdcCsarHelper.java b/src/main/java/org/onap/sdc/tosca/parser/api/ISdcCsarHelper.java
index 129f7b4..12edd55 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/api/ISdcCsarHelper.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/api/ISdcCsarHelper.java
@@ -665,7 +665,7 @@
 	 *                    SDC (node template) type, tosca type as well as optional customizationUUID and UUID
 	 * @param topologyTemplateQuery parameters of the topology template containing the above entity.
 	 *                  Includes SDC type of the container and optional customizationUUID
-	 * @param isRecursive indicates if the search within the required topology template is recursive.
+	 * @param isRecursive indicates if the search is recursive starting from the required topology template .
 	 * @return list of @{@link IEntityDetails} objects containing information about the found entities.
 	 * If either no entities found or the provided query is incorrect, an empty list is returned
 	 */
diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/EntityDetails.java b/src/main/java/org/onap/sdc/tosca/parser/elements/EntityDetails.java
index 2567700..82e6fc6 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/elements/EntityDetails.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/elements/EntityDetails.java
@@ -68,7 +68,7 @@
     }
 
     @Override
-    public List<IEntityDetails> getTargetNodes() {
+    public List<IEntityDetails> getTargetEntities() {
         return Collections.emptyList();
     }
 
@@ -87,6 +87,14 @@
         return pathBld.toString();
     }
 
+    @Override
+    public String getToscaType() {
+        return entityTemplate.getType();
+    }
+
+    @Override
+    public List<String> getMembers() { return Collections.emptyList(); }
+
 
 
 }
diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/GroupEntityDetails.java b/src/main/java/org/onap/sdc/tosca/parser/elements/GroupEntityDetails.java
index 32a91aa..2777ab5 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/elements/GroupEntityDetails.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/elements/GroupEntityDetails.java
@@ -29,7 +29,7 @@
     }
 
     @Override
-    public EntityTemplateType getType() {
+    public EntityTemplateType getEntityType() {
         return EntityTemplateType.GROUP;
     }
 
@@ -42,4 +42,12 @@
     public Metadata getMetadata() {
         return group.getMetadata();
     }
+
+    @Override
+    public List<String> getMembers() {
+        if (group.getMembers() != null) {
+            return group.getMembers();
+        }
+        return super.getMembers();
+    }
 }
diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/NodeTemplateEntityDetails.java b/src/main/java/org/onap/sdc/tosca/parser/elements/NodeTemplateEntityDetails.java
index ad3b1a0..5ee253d 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/elements/NodeTemplateEntityDetails.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/elements/NodeTemplateEntityDetails.java
@@ -15,7 +15,7 @@
     }
 
     @Override
-    public EntityTemplateType getType() {
+    public EntityTemplateType getEntityType() {
         return EntityTemplateType.NODE_TEMPLATE;
     }
 
diff --git a/src/main/java/org/onap/sdc/tosca/parser/elements/PolicyEntityDetails.java b/src/main/java/org/onap/sdc/tosca/parser/elements/PolicyEntityDetails.java
index 7b97175..ab792d1 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/elements/PolicyEntityDetails.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/elements/PolicyEntityDetails.java
@@ -21,7 +21,7 @@
     }
 
     @Override
-    public EntityTemplateType getType() {
+    public EntityTemplateType getEntityType() {
         return EntityTemplateType.POLICY;
     }
 
@@ -39,7 +39,7 @@
     }
 
     @Override
-    public List<IEntityDetails> getTargetNodes() {
+    public List<IEntityDetails> getTargetEntities() {
         if (policy.getTargetsType().equals(NODE_TEMPLATES_TARGET_TYPE)) {
             return policy.getTargetsList()
                     .stream()
diff --git a/src/main/java/org/onap/sdc/tosca/parser/impl/SdcCsarHelperImpl.java b/src/main/java/org/onap/sdc/tosca/parser/impl/SdcCsarHelperImpl.java
index 1ae3471..01c72d4 100644
--- a/src/main/java/org/onap/sdc/tosca/parser/impl/SdcCsarHelperImpl.java
+++ b/src/main/java/org/onap/sdc/tosca/parser/impl/SdcCsarHelperImpl.java
@@ -130,15 +130,22 @@
 	
 	@Override
 	public List<NodeTemplate> getPolicyTargetsFromOrigin(NodeTemplate nodeTemplate, String policyName) {
-		Optional<Policy> policyOpt = null;
     	if(StringUtils.isNotEmpty(nodeTemplate.getName())){
-    		policyOpt = getNodeTemplateByName(nodeTemplate.getName()).getOriginComponentTemplate().getPolicies().stream().filter(p -> p.getName().equals(policyName)).findFirst();
-    	}
-    	if(policyOpt.isPresent()){
-    		List<String> targets = policyOpt.get().getTargets();
-    		return nodeTemplate.getOriginComponentTemplate().getNodeTemplates()
-    				.stream()
-    				.filter(nt -> targets.contains(nt.getName())).collect(Collectors.toList());
+            Optional<Policy> policyOpt = getNodeTemplateByName(nodeTemplate.getName())
+                    .getOriginComponentTemplate()
+                    .getPolicies()
+                    .stream()
+                    .filter(p -> p.getName()
+                            .equals(policyName))
+                    .findFirst();
+            if(policyOpt.isPresent()){
+                List<String> targets = policyOpt.get().getTargets();
+                if (targets != null) {
+                    return nodeTemplate.getOriginComponentTemplate().getNodeTemplates()
+                            .stream()
+                            .filter(nt -> targets.contains(nt.getName())).collect(Collectors.toList());
+                }
+            }
     	}
     	return new ArrayList<>();
     }
@@ -178,7 +185,7 @@
     		return new ArrayList<>();
     	return toscaTemplate.getPolicies()
     	.stream()
-    	.filter(p -> p.getTargets().contains(nodeTemplateName))
+    	.filter(p -> p.getTargets()!= null && p.getTargets().contains(nodeTemplateName))
     	.collect(toList());
     }
     
diff --git a/src/test/java/org/onap/sdc/impl/GetEntityPortMirroringTest.java b/src/test/java/org/onap/sdc/impl/GetEntityPortMirroringTest.java
new file mode 100644
index 0000000..aa33910
--- /dev/null
+++ b/src/test/java/org/onap/sdc/impl/GetEntityPortMirroringTest.java
@@ -0,0 +1,115 @@
+package org.onap.sdc.impl;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
+import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.tosca.parser.elements.queries.EntityQuery;
+import org.onap.sdc.tosca.parser.elements.queries.TopologyTemplateQuery;
+import org.onap.sdc.tosca.parser.enums.SdcTypes;
+import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
+import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
+import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
+import org.onap.sdc.toscaparser.api.CapabilityAssignment;
+import org.onap.sdc.toscaparser.api.RequirementAssignment;
+
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class GetEntityPortMirroringTest {
+
+    private final static String cap0 = "vepdg5afn0.vlb_1.port_mirroring_vlb_gn_vepdg_fn_5_RVMI";
+    private final static String cap1 = "radcomfnvlbavf11_3_3vepdg0.abstract_vlbagentbase_eph_aff.port_mirroring_vlbagentbase_eph_aff_vlbagentbase_eph_aff_int_pktmirror_1_port";
+    private static ISdcCsarHelper helper = null;
+
+    @BeforeClass
+    public static void setUpClass() {
+        try {
+            URL resource = GetEntityPortMirroringTest.class.getClassLoader()
+                    .getResource("csars/service-JennnyVepdgPortMirroringTest-csar.csar");
+            if (resource != null) {
+                helper = SdcToscaParserFactory.getInstance().getSdcCsarHelper(resource.getFile());
+            }
+
+        } catch (SdcToscaParserException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void getServiceConfigurations() {
+        EntityQuery entityQuery = EntityQuery.newBuilder(SdcTypes.CONFIGURATION)
+                .build();
+        TopologyTemplateQuery topologyTemplateQuery = TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE)
+                .build();
+
+        List<IEntityDetails> entities = helper.getEntity(entityQuery, topologyTemplateQuery, false);
+
+        assertEquals(1, entities.size());
+        assertEquals("54308d8b-21ca-40a1-bd3e-efde64791605", entities.get(0).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
+        assertEquals("Port Mirroring Configuration", entities.get(0).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
+        assertEquals(2, entities.get(0).getRequirements().size());
+        assertTrue(entities.get(0).getProperties().isEmpty());
+        assertEquals(1, entities.get(0).getCapabilities().size());
+    }
+
+    @Test
+    public void getServiceProxyOnService() {
+        EntityQuery entityQuery = EntityQuery.newBuilder(SdcTypes.SERVICE_PROXY)
+                .build();
+        TopologyTemplateQuery topologyTemplateQuery = TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE)
+                .build();
+
+        List<IEntityDetails> entities = helper.getEntity(entityQuery, topologyTemplateQuery, false);
+
+        assertEquals(2, entities.size());
+        assertTrue("vEPDG-5A-FN SVC Service Proxy".equals(entities.get(0).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)) ||
+                        "vEPDG-5A-FN SVC Service Proxy".equals(entities.get(1).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)));
+        assertTrue("Radcom FN vLBA SVC 11_3_3 vEPDG Service Proxy".equals(entities.get(0).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)) ||
+                "Radcom FN vLBA SVC 11_3_3 vEPDG Service Proxy".equals(entities.get(1).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)));
+
+        assertTrue(entities.get(0).getRequirements().isEmpty());
+        assertTrue(entities.get(0).getProperties().isEmpty());
+        assertEquals(940, entities.get(0).getCapabilities().size());
+        assertEquals(197, entities.get(1).getCapabilities().size());
+    }
+
+    @Test
+    public void getCapabilityForCOnfigurationRequirementOnService() {
+        EntityQuery entityQueryC = EntityQuery.newBuilder(SdcTypes.CONFIGURATION)
+                .build();
+
+        EntityQuery entityQueryS = EntityQuery.newBuilder(SdcTypes.SERVICE_PROXY)
+                .build();
+        TopologyTemplateQuery topologyTemplateQuery = TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE)
+                .build();
+
+        List<IEntityDetails> configurationNodes = helper.getEntity(entityQueryC, topologyTemplateQuery, false);
+        List<IEntityDetails> proxyNodes = helper.getEntity(entityQueryS, topologyTemplateQuery, false);
+
+        assertEquals(2, proxyNodes.size());
+        assertEquals(1, configurationNodes.size());
+
+        Map<String, RequirementAssignment> reqMap = configurationNodes.get(0).getRequirements();
+        assertEquals(cap0, reqMap.get("source").getCapabilityName());
+        assertEquals(cap1, reqMap.get("collector").getCapabilityName());
+
+        assertTrue(isCapabilityFound(proxyNodes.get(0), cap0));
+        assertTrue(isCapabilityFound(proxyNodes.get(1), cap1));
+    }
+
+    private boolean isCapabilityFound(IEntityDetails nodeDetails, String capName) {
+        List<CapabilityAssignment> assignments = nodeDetails.getCapabilities()
+                .values()
+                .stream()
+                .filter(ca->capName.equals(ca.getDefinition()
+                        .getName()))
+                .collect(Collectors.toList());
+        return assignments.size() == 1;
+    }
+}
diff --git a/src/test/java/org/onap/sdc/impl/GetEntityTest.java b/src/test/java/org/onap/sdc/impl/GetEntityTest.java
index 5c19072..cd332e4 100644
--- a/src/test/java/org/onap/sdc/impl/GetEntityTest.java
+++ b/src/test/java/org/onap/sdc/impl/GetEntityTest.java
@@ -39,7 +39,7 @@
         }
     }
 
-        @Test
+    @Test
     public void getCpEntitiesFromCVFC() {
         EntityQuery entityQuery = EntityQuery.newBuilder(SdcTypes.CP)
                 .build();
@@ -183,6 +183,7 @@
         assertTrue(entities.get(0).getMemberNodes().get(0).getName().equals("abstract_rtp_msc") ||
                 entities.get(0).getMemberNodes().get(1).getName().equals("abstract_rtp_msc"));
         assertEquals(4, entities.get(0).getProperties().size());
+        assertEquals(2, entities.get(0).getMembers().size());
         assertTrue(entities.get(0).getRequirements().isEmpty());
 
     }
@@ -198,7 +199,11 @@
         List<IEntityDetails> entities = helper.getEntity(entityQuery, topologyTemplateQuery, false);
 
         assertEquals(1, entities.size());
+        assertEquals("org.openecomp.groups.VfModule", entities.get(0).getToscaType());
+        assertTrue(entities.get(0).getPath().isEmpty());
+        assertTrue(entities.get(0).getMembers().isEmpty());
         assertNull(entities.get(0).getParent());
+        assertTrue(entities.get(0).getTargets().isEmpty());
     }
 
     @Test
@@ -211,7 +216,9 @@
         List<IEntityDetails> entities = helper.getEntity(entityQuery, topologyTemplateQuery, true);
 
         assertEquals(19, entities.size());
-        assertTrue(entities.get(9).getTargetNodes().isEmpty());
+        assertTrue(entities.get(9).getTargetEntities().isEmpty());
+        assertEquals(1, entities.get(7).getMembers().size());
+        assertEquals("org.openecomp.groups.VfModule", entities.get(7).getToscaType());
         assertEquals("rtp_msc_subint_avpn_vmi_0", entities.get(5).getMemberNodes().get(0).getName());
     }
 
@@ -226,7 +233,9 @@
 
         assertEquals(1, entities.size());
         assertEquals("jennyvtsbcvlanvnf..External..0", entities.get(0).getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
-        assertEquals(EntityTemplateType.GROUP, entities.get(0).getTargetNodes().get(0).getType());
+        assertEquals(EntityTemplateType.GROUP, entities.get(0).getTargetEntities().get(0).getEntityType());
+        assertEquals("org.openecomp.policies.External", entities.get(0).getToscaType());
+        assertTrue(entities.get(0).getMembers().isEmpty());
         assertEquals("jenny vTSBC vlan VNF 0", entities.get(0).getPath());
     }
 
@@ -252,7 +261,8 @@
         List<IEntityDetails> entities = helper.getEntity(entityQuery, topologyTemplateQuery, false);
 
         assertEquals(1, entities.size());
-        assertEquals(EntityTemplateType.GROUP, entities.get(0).getTargetNodes().get(0).getType());
+        assertEquals(EntityTemplateType.GROUP, entities.get(0).getTargetEntities().get(0).getEntityType());
+        assertTrue(entities.get(0).getMembers().isEmpty());
         assertTrue(entities.get(0).getRequirements().isEmpty());
         assertTrue(entities.get(0).getCapabilities().isEmpty());
         assertEquals("jenny vTSBC vlan VNF 0", entities.get(0).getPath());
@@ -290,6 +300,8 @@
 
         List<IEntityDetails> entities = helper.getEntity(null, topologyTemplateQuery, false);
         assertEquals(5, entities.size());
+        assertEquals("org.openecomp.resource.vf.JennyVtsbcVlanVnf", entities.get(4).getToscaType());
+        assertEquals("org.openecomp.groups.VfModule", entities.get(0).getToscaType());
     }
 
 
@@ -310,7 +322,15 @@
 
         List<IEntityDetails> entities = helper.getEntity(null, topologyTemplateQuery, false);
         assertEquals(2, entities.size());
-        assertTrue("ssc_subint_mis_vmi_0".equals(entities.get(0).getName()) || "ssc_subint_mis_vmi_0".equals(entities.get(1).getName()));
+        assertTrue(entities.get(1).getMembers().isEmpty());
+        assertEquals("ssc_subint_mis_vmi_0", entities.get(0).getMembers().get(0));
+        assertTrue("ssc_subint_mis_vmi_0".equals(entities.get(1).getName()));
+        assertTrue("vlan_subinterface_ssc_mis_group".equals(entities.get(0).getName()));
+        assertEquals("org.openecomp.resource.cp.nodes.heat.network.v2.contrailV2.VLANSubInterface",
+                entities.get(1).getToscaType());
+        assertEquals("org.openecomp.groups.heat.HeatStack", entities.get(0).getToscaType());
+        assertTrue(entities.get(0).getTargetEntities().isEmpty());
+
     }
 
     @Test
diff --git a/src/test/java/org/onap/sdc/impl/ToscaParserPolicyTest.java b/src/test/java/org/onap/sdc/impl/ToscaParserPolicyTest.java
new file mode 100644
index 0000000..f77b070
--- /dev/null
+++ b/src/test/java/org/onap/sdc/impl/ToscaParserPolicyTest.java
@@ -0,0 +1,55 @@
+package org.onap.sdc.impl;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
+import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.Policy;
+
+import java.net.URL;
+import java.util.List;
+
+import static org.junit.Assert.assertTrue;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+
+public class ToscaParserPolicyTest {
+
+    private static ISdcCsarHelper helper = null;
+
+    @BeforeClass
+    public static void setUpClass() {
+        try {
+            URL resource = GetEntityPortMirroringTest.class.getClassLoader()
+                    .getResource("csars/service-CgnatFwVnfNc-csar.csar");
+            if (resource != null) {
+                helper = SdcToscaParserFactory.getInstance().getSdcCsarHelper(resource.getFile());
+            }
+
+        } catch (SdcToscaParserException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    public void getPolicyOfTargetByNodeTemplate() {
+        List<NodeTemplate> vfList = helper.getServiceVfList();
+        assertEquals(1, vfList.size());
+        List<Policy> policies = helper.getPoliciesOfTarget(vfList.get(0));
+        assertNotNull(policies);
+        assertTrue(policies.isEmpty());
+    }
+
+    @Test
+    public void getPolicyTargetFromOrigin() {
+        List<NodeTemplate> vfList = helper.getServiceVfList();
+        assertEquals(1, vfList.size());
+        List<NodeTemplate> targets = helper.getPolicyTargetsFromOrigin(vfList.get(0), "cgnatfwvnf_nc..External..0");
+        assertNotNull(targets);
+        assertTrue(targets.isEmpty());
+    }
+
+
+}
diff --git a/src/test/java/org/onap/sdc/impl/ToscaParserSubsMappingsTest.java b/src/test/java/org/onap/sdc/impl/ToscaParserSubsMappingsTest.java
index cbd8e8a..afb5101 100644
--- a/src/test/java/org/onap/sdc/impl/ToscaParserSubsMappingsTest.java
+++ b/src/test/java/org/onap/sdc/impl/ToscaParserSubsMappingsTest.java
@@ -81,7 +81,7 @@
 //
 //				CapabilityAssignment cCp = lCapabilitys.get(CPkeys.get(i));
 //				CapabilityTypeDef CpDef = cCp.getDefinition();
-//				CapabilitiesTypes.add(CpDef.getType());
+//				CapabilitiesTypes.add(CpDef.getEntityType());
 //
 //				//LinkedHashMap<String,Object> lProperties = cCp.getDefinition().getProperties();
 //				LinkedHashMap<String, Property> lPropertiesR = cCp.getProperties();
@@ -93,7 +93,7 @@
 //	  			Property p = lPropertiesR.get(CP_Propkeys.get(j));
 //
 //				if(p !=  null){
-//	  				String sPType = p.getType();
+//	  				String sPType = p.getEntityType();
 //	  				Boolean bPRequired = p.isRequired();
 //
 //	  				System.out.println(sPType + "  " + bPRequired);
diff --git a/src/test/resources/csars/service-CgnatFwVnfNc-csar.csar b/src/test/resources/csars/service-CgnatFwVnfNc-csar.csar
new file mode 100644
index 0000000..b4736cd
--- /dev/null
+++ b/src/test/resources/csars/service-CgnatFwVnfNc-csar.csar
Binary files differ
diff --git a/src/test/resources/csars/service-JennnyVepdgPortMirroringTest-csar.csar b/src/test/resources/csars/service-JennnyVepdgPortMirroringTest-csar.csar
new file mode 100644
index 0000000..7e8ebb3
--- /dev/null
+++ b/src/test/resources/csars/service-JennnyVepdgPortMirroringTest-csar.csar
Binary files differ
diff --git a/version.properties b/version.properties
index 45ee9cd..011dc3c 100644
--- a/version.properties
+++ b/version.properties
@@ -4,8 +4,8 @@
 # because they are used in Jenkins, whose plug-in doesn't support
 
 major=1
-minor=4
-patch=12
+minor=5
+patch=0
 
 base_version=${major}.${minor}.${patch}