2  * Copyright © 2016-2018 European Support Limited
 
   4  * Licensed under the Apache License, Version 2.0 (the "License");
 
   5  * you may not use this file except in compliance with the License.
 
   6  * You may obtain a copy of the License at
 
   8  *      http://www.apache.org/licenses/LICENSE-2.0
 
  10  * Unless required by applicable law or agreed to in writing, software
 
  11  * distributed under the License is distributed on an "AS IS" BASIS,
 
  12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  13  * See the License for the specific language governing permissions and
 
  14  * limitations under the License.
 
  17 package org.openecomp.sdc.validation.impl.validators;
 
  20 import org.junit.Assert;
 
  21 import org.junit.Test;
 
  22 import org.openecomp.core.validation.types.MessageContainer;
 
  23 import org.openecomp.sdc.validation.Validator;
 
  24 import org.openecomp.sdc.validation.util.ValidationTestUtil;
 
  27  * Created by TALIO on 2/15/2017.
 
  29 public class SharedResourceGuideLineValidatorTest {
 
  31   private static final String RESOURCE_PATH = "/org/openecomp/validation/validators/guideLineValidator";
 
  32   Validator validator = new SharedResourceGuideLineValidator();
 
  35   public void testBaseHeatExposeNetwork() {
 
  36     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
  37         RESOURCE_PATH + "/baseHeatDoesNotExposeNetwork/positive/");
 
  38     Assert.assertNotNull(messages);
 
  39     Assert.assertEquals(messages.size(), 0);
 
  41     messages = ValidationTestUtil.testValidator(validator,
 
  42         RESOURCE_PATH + "/baseHeatDoesNotExposeNetwork/negative/");
 
  43     Assert.assertNotNull(messages);
 
  44     Assert.assertEquals(messages.size(), 1);
 
  45     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
 
  46     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
 
  47         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [SecurityGroup_expose]");
 
  51   public void testParseException(){
 
  52     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
  53         RESOURCE_PATH + "/baseHeatDoesNotExposeNetwork/parseException/");
 
  54     Assert.assertEquals(messages.size(), 1);
 
  55     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
 
  56     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
 
  57         "ERROR: [SRG5]: Invalid HEAT format problem - [while scanning for the next token\n" +
 
  58             "found character '\\t(TAB)' that cannot start any token. (Do not use \\t(TAB) for indentation)\n" +
 
  59             " in 'reader', line 5, column 1:\n" +
 
  60             "    \t\t\tresources:\n" +
 
  66   public void testInvalidGetResource(){
 
  67     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
  69             "baseHeatDoesNotExposeNetworkInvalidGetResource");
 
  70     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
 
  71         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [net_expose]");
 
  76   public void testBaseHeatExposeNetworkAndVolume() {
 
  77     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
  78         RESOURCE_PATH + "/baseHeatDoesNotExposeNetworkAndVolume/positive/");
 
  79     Assert.assertNotNull(messages);
 
  80     Assert.assertEquals(messages.size(), 0);
 
  82     messages = ValidationTestUtil.testValidator(validator,
 
  83         RESOURCE_PATH + "/baseHeatDoesNotExposeNetworkAndVolume/negative/");
 
  84     Assert.assertNotNull(messages);
 
  85     Assert.assertEquals(messages.size(), 1);
 
  86     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
 
  87     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
 
  88         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [volume_expose]");
 
  89     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
 
  90         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [net_expose]");
 
  94   public void testBaseHeatExposeServerGroup() {
 
  95     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
  96         RESOURCE_PATH + "/baseHeatDoesNotExposeServerGroup/positive/");
 
  97     Assert.assertNotNull(messages);
 
  98     Assert.assertEquals(messages.size(), 0);
 
 100     messages = ValidationTestUtil.testValidator(validator,
 
 101         RESOURCE_PATH + "/baseHeatDoesNotExposeServerGroup/negative/");
 
 102     Assert.assertNotNull(messages);
 
 103     Assert.assertEquals(messages.size(), 1);
 
 104     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
 
 105     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
 
 106         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [ServerGroup_expose]");
 
 110   public void testBaseHeatExposeSecurityGroup() {
 
 111     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
 112         RESOURCE_PATH + "/baseHeatDoesNotExposeSecurityGroup/positive/");
 
 113     Assert.assertNotNull(messages);
 
 114     Assert.assertEquals(messages.size(), 0);
 
 116     messages = ValidationTestUtil.testValidator(validator,
 
 117         RESOURCE_PATH + "/baseHeatDoesNotExposeSecurityGroup/negative/");
 
 118     Assert.assertNotNull(messages);
 
 119     Assert.assertEquals(messages.size(), 1);
 
 120     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
 
 121     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
 
 122         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [SecurityGroup_expose]");
 
 126   public void testBaseHeatExposeVolume() {
 
 127     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
 128         RESOURCE_PATH + "/baseHeatDoesNotExposeVolume/positive/");
 
 129     Assert.assertNotNull(messages);
 
 130     Assert.assertEquals(messages.size(), 0);
 
 132     messages = ValidationTestUtil.testValidator(validator,
 
 133         RESOURCE_PATH + "/baseHeatDoesNotExposeVolume/negative/");
 
 134     Assert.assertNotNull(messages);
 
 135     Assert.assertEquals(messages.size(), 1);
 
 136     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
 
 137     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
 
 138         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [volume_expose]");
 
 142   public void testHeatVolumeExpose() {
 
 143     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
 144         RESOURCE_PATH + "/heatVolumeExpose/positive/");
 
 145     Assert.assertNotNull(messages);
 
 146     Assert.assertEquals(messages.size(), 0);
 
 148     messages = ValidationTestUtil.testValidator(validator,
 
 149         RESOURCE_PATH + "/heatVolumeExpose/negative/");
 
 150     Assert.assertNotNull(messages);
 
 151     Assert.assertEquals(messages.size(), 1);
 
 152     Assert.assertEquals(messages.get("firstVol.yaml").getErrorMessageList().size(), 1);
 
 153     Assert.assertEquals(messages.get("firstVol.yaml").getErrorMessageList().get(0).getMessage(),
 
 154         "WARNING: [SRG2]: Volume is not defined as output and thus cannot be attached volume_expose");
 
 159   public void testResourceIsExposedByCallingGetResourceNotFromOutput() {
 
 160     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
 161         RESOURCE_PATH + "/baseHeatExposeResourceUsingGetResource/positive");
 
 162     Assert.assertNotNull(messages);
 
 163     Assert.assertEquals(messages.size(), 0);
 
 166     messages = ValidationTestUtil.testValidator(validator,
 
 167         RESOURCE_PATH + "/baseHeatExposeResourceUsingGetResource/negative");
 
 168     Assert.assertNotNull(messages);
 
 169     Assert.assertEquals(messages.size(), 1);
 
 170     Assert.assertEquals(messages.get("base_virc.yaml").getErrorMessageList().size(), 1);
 
 171     Assert.assertEquals(messages.get("base_virc.yaml").getErrorMessageList().get(0).getMessage(),
 
 172         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [virc_RSG]");
 
 176   public void testMissingBaseHeat() {
 
 177     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
 178         RESOURCE_PATH + "/missingBaseHeat/");
 
 179     Assert.assertNotNull(messages);
 
 180     Assert.assertEquals(messages.size(), 1);
 
 181     Assert.assertEquals(messages.get("MANIFEST.json").getErrorMessageList().size(), 1);
 
 182     Assert.assertEquals(messages.get("MANIFEST.json").getErrorMessageList().get(0).getMessage(),
 
 183         "WARNING: [SRG3]: Missing Base HEAT. Pay attention that without Base HEAT, there will be no shared resources");
 
 187   public void testMultiBaseHeat() {
 
 188     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
 
 189         RESOURCE_PATH + "/multiBaseHeat/");
 
 190     Assert.assertNotNull(messages);
 
 191     Assert.assertEquals(messages.size(), 1);
 
 192     Assert.assertEquals(messages.get("MANIFEST.json").getErrorMessageList().size(), 1);
 
 193     Assert.assertEquals(messages.get("MANIFEST.json").getErrorMessageList().get(0).getMessage(),
 
 194         "WARNING: [SRG4]: Multi Base HEAT. Expected only one. Files [second.yaml,first.yaml].");