Skip YAML validation in rule R816745, if onap_pm_dictionary is not present in non_mano_artifact_sets

Issue-ID: VNFSDK-594
Signed-off-by: Bartosz Gardziejewski <bartosz.gardziejewski@nokia.com>
Change-Id: I0e52bcc84583a65243fd821f6434f986d12fdadd
diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745.java
index ef901f9..47b963e 100644
--- a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745.java
+++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745.java
@@ -20,16 +20,33 @@
 import org.onap.cvc.csar.CSARArchive;
 import org.onap.cvc.csar.cc.VTPValidateCSARBase;
 
+import java.util.List;
+import java.util.Map;
+
 @OnapCommandSchema(schema = "vtp-validate-csar-r816745.yaml")
 public class VTPValidateCSARR816745 extends VTPValidateCSARBase {
 
+    private static final String PM_DICTIONARY = "onap_pm_dictionary";
+
     @Override
     protected void validateCSAR(CSARArchive csar) throws Exception {
+        Map<String, Map<String, List<String>>> nonManoFields = csar.getManifest().getNonMano();
+        if(nonManoFields.containsKey(PM_DICTIONARY)) {
+            validateYamlFile(getLocationOfPmDictionaryFile(nonManoFields));
+        }
+    }
 
+    private String getLocationOfPmDictionaryFile(Map<String, Map<String, List<String>>> nonManoFields) {
+        return nonManoFields.get(PM_DICTIONARY).get("source").get(0);
+    }
+
+    private void validateYamlFile(String path) {
+        throw  new UnsupportedOperationException("Under development");
     }
 
     @Override
     protected String getVnfReqsNo() {
         return "R816745";
     }
+
 }
diff --git a/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745IntegrationTest.java b/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745IntegrationTest.java
index e75f27e..efe6917 100644
--- a/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745IntegrationTest.java
+++ b/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR816745IntegrationTest.java
@@ -18,22 +18,59 @@
 package org.onap.cvc.csar.cc.sol004;
 
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.onap.cli.fw.error.OnapCommandExecutionFailed;
+import org.onap.cvc.csar.CSARArchive;
+
+import java.util.List;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.onap.cvc.csar.cc.sol004.IntegrationTestUtils.configureTestCase;
 
 public class VTPValidateCSARR816745IntegrationTest {
 
     private static final boolean IS_PNF = true;
+    private static final String TEST_CSAR_DIRECTORY = "pnf/r816745/";
 
     private VTPValidateCSARR816745 testCase;
 
+    @Rule
+    public ExpectedException exceptionRule = ExpectedException.none();
+
     @Before
     public void setUp() {
         testCase = new VTPValidateCSARR816745();
     }
 
     @Test
+    public void shouldNotReportAnyErrorWhenCsarIsNotContainingPmDictionary() throws Exception {
+        // given
+        configureTestCase(testCase, TEST_CSAR_DIRECTORY + "csar-with-no-pm-dictionary.csar", "vtp-validate-csar-r816745.yaml", IS_PNF);
+
+        // when
+        testCase.execute();
+
+        // then
+        List<CSARArchive.CSARError> errors = testCase.getErrors();
+        assertThat(errors.size()).isEqualTo(0);
+    }
+
+    @Test
+    public void shouldThrowUnsupportedOperationExceptionWhenCsarContainsPmDictionary() throws Exception {
+        // given
+        configureTestCase(testCase, TEST_CSAR_DIRECTORY + "csar-with-pm-dictionary.csar", "vtp-validate-csar-r816745.yaml", IS_PNF);
+
+        // then
+        exceptionRule.expect(OnapCommandExecutionFailed.class);
+        exceptionRule.expectMessage("Under development");
+
+        // when
+        testCase.execute();
+    }
+
+    @Test
     public void shouldReturnProperRequestNumber() {
         assertThat(testCase.getVnfReqsNo()).isEqualTo("R816745");
     }
diff --git a/csarvalidation/src/test/resources/pnf/r816745/csar-with-no-pm-dictionary.csar b/csarvalidation/src/test/resources/pnf/r816745/csar-with-no-pm-dictionary.csar
new file mode 100644
index 0000000..f0d4216
--- /dev/null
+++ b/csarvalidation/src/test/resources/pnf/r816745/csar-with-no-pm-dictionary.csar
Binary files differ
diff --git a/csarvalidation/src/test/resources/pnf/r816745/csar-with-pm-dictionary.csar b/csarvalidation/src/test/resources/pnf/r816745/csar-with-pm-dictionary.csar
new file mode 100644
index 0000000..861f602
--- /dev/null
+++ b/csarvalidation/src/test/resources/pnf/r816745/csar-with-pm-dictionary.csar
Binary files differ