Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-sdc-validation-lib / openecomp-sdc-validation-impl / src / test / java / org / openecomp / sdc / validation / impl / validators / SharedResourceGuideLineValidatorTest.java
1 package org.openecomp.sdc.validation.impl.validators;
2
3 import org.openecomp.core.validation.types.MessageContainer;
4 import org.openecomp.sdc.validation.Validator;
5 import org.openecomp.sdc.validation.util.ValidationTestUtil;
6 import org.testng.Assert;
7 import org.testng.annotations.Test;
8
9 import java.util.Map;
10
11 /**
12  * Created by TALIO on 2/15/2017.
13  */
14 public class SharedResourceGuideLineValidatorTest {
15
16   private static final String RESOURCE_PATH = "/org/openecomp/validation/validators/guideLineValidator";
17   Validator validator = new SharedResourceGuideLineValidator();
18
19   @Test
20   public void testBaseHeatExposeNetwork() {
21     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
22         RESOURCE_PATH + "/baseHeatDoesNotExposeNetwork/positive/");
23     Assert.assertNotNull(messages);
24     Assert.assertEquals(messages.size(), 0);
25
26     messages = ValidationTestUtil.testValidator(validator,
27         RESOURCE_PATH + "/baseHeatDoesNotExposeNetwork/negative/");
28     Assert.assertNotNull(messages);
29     Assert.assertEquals(messages.size(), 1);
30     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
31     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
32         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [SecurityGroup_expose]");
33   }
34
35   @Test
36   public void testParseException(){
37     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
38         RESOURCE_PATH + "/baseHeatDoesNotExposeNetwork/parseException/");
39     Assert.assertEquals(messages.size(), 1);
40     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
41     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
42         "ERROR: [SRG5]: Invalid HEAT format problem - [while scanning for the next token\n" +
43             "found character '\\t(TAB)' that cannot start any token. (Do not use \\t(TAB) for indentation)\n" +
44             " in 'reader', line 5, column 1:\n" +
45             "    \t\t\tresources:\n" +
46             "    ^\n" +
47             "]");
48   }
49
50   @Test
51   public void testInvalidGetResource(){
52     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
53         RESOURCE_PATH + "/" +
54             "baseHeatDoesNotExposeNetworkInvalidGetResource");
55     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
56         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [net_expose]");
57
58   }
59
60   @Test
61   public void testBaseHeatExposeNetworkAndVolume() {
62     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
63         RESOURCE_PATH + "/baseHeatDoesNotExposeNetworkAndVolume/positive/");
64     Assert.assertNotNull(messages);
65     Assert.assertEquals(messages.size(), 0);
66
67     messages = ValidationTestUtil.testValidator(validator,
68         RESOURCE_PATH + "/baseHeatDoesNotExposeNetworkAndVolume/negative/");
69     Assert.assertNotNull(messages);
70     Assert.assertEquals(messages.size(), 1);
71     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 2);
72     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
73         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [volume_expose]");
74     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(1).getMessage(),
75         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [net_expose]");
76   }
77
78   @Test
79   public void testBaseHeatExposeServerGroup() {
80     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
81         RESOURCE_PATH + "/baseHeatDoesNotExposeServerGroup/positive/");
82     Assert.assertNotNull(messages);
83     Assert.assertEquals(messages.size(), 0);
84
85     messages = ValidationTestUtil.testValidator(validator,
86         RESOURCE_PATH + "/baseHeatDoesNotExposeServerGroup/negative/");
87     Assert.assertNotNull(messages);
88     Assert.assertEquals(messages.size(), 1);
89     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
90     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
91         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [ServerGroup_expose]");
92   }
93
94   @Test
95   public void testBaseHeatExposeSecurityGroup() {
96     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
97         RESOURCE_PATH + "/baseHeatDoesNotExposeSecurityGroup/positive/");
98     Assert.assertNotNull(messages);
99     Assert.assertEquals(messages.size(), 0);
100
101     messages = ValidationTestUtil.testValidator(validator,
102         RESOURCE_PATH + "/baseHeatDoesNotExposeSecurityGroup/negative/");
103     Assert.assertNotNull(messages);
104     Assert.assertEquals(messages.size(), 1);
105     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
106     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
107         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [SecurityGroup_expose]");
108   }
109
110   @Test
111   public void testBaseHeatExposeVolume() {
112     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
113         RESOURCE_PATH + "/baseHeatDoesNotExposeVolume/positive/");
114     Assert.assertNotNull(messages);
115     Assert.assertEquals(messages.size(), 0);
116
117     messages = ValidationTestUtil.testValidator(validator,
118         RESOURCE_PATH + "/baseHeatDoesNotExposeVolume/negative/");
119     Assert.assertNotNull(messages);
120     Assert.assertEquals(messages.size(), 1);
121     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().size(), 1);
122     Assert.assertEquals(messages.get("first.yaml").getErrorMessageList().get(0).getMessage(),
123         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [volume_expose]");
124   }
125
126   @Test
127   public void testHeatVolumeExpose() {
128     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
129         RESOURCE_PATH + "/heatVolumeExpose/positive/");
130     Assert.assertNotNull(messages);
131     Assert.assertEquals(messages.size(), 0);
132
133     messages = ValidationTestUtil.testValidator(validator,
134         RESOURCE_PATH + "/heatVolumeExpose/negative/");
135     Assert.assertNotNull(messages);
136     Assert.assertEquals(messages.size(), 1);
137     Assert.assertEquals(messages.get("firstVol.yaml").getErrorMessageList().size(), 1);
138     Assert.assertEquals(messages.get("firstVol.yaml").getErrorMessageList().get(0).getMessage(),
139         "WARNING: [SRG2]: Volume is not defined as output and thus cannot be attached volume_expose");
140
141   }
142
143   @Test
144   public void testResourceIsExposedByCallingGetResourceNotFromOutput() {
145     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
146         RESOURCE_PATH + "/baseHeatExposeResourceUsingGetResource/positive");
147     Assert.assertNotNull(messages);
148     Assert.assertEquals(messages.size(), 0);
149
150
151     messages = ValidationTestUtil.testValidator(validator,
152         RESOURCE_PATH + "/baseHeatExposeResourceUsingGetResource/negative");
153     Assert.assertNotNull(messages);
154     Assert.assertEquals(messages.size(), 1);
155     Assert.assertEquals(messages.get("base_virc.yaml").getErrorMessageList().size(), 1);
156     Assert.assertEquals(messages.get("base_virc.yaml").getErrorMessageList().get(0).getMessage(),
157         "WARNING: [SRG1]: Resource is not defined as output and thus cannot be Shared, Resource ID [virc_RSG]");
158   }
159
160   @Test
161   public void testMissingBaseHeat() {
162     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
163         RESOURCE_PATH + "/missingBaseHeat/");
164     Assert.assertNotNull(messages);
165     Assert.assertEquals(messages.size(), 1);
166     Assert.assertEquals(messages.get("MANIFEST.json").getErrorMessageList().size(), 1);
167     Assert.assertEquals(messages.get("MANIFEST.json").getErrorMessageList().get(0).getMessage(),
168         "WARNING: [SRG3]: Missing Base HEAT. Pay attention that without Base HEAT, there will be no shared resources");
169   }
170
171   @Test
172   public void testMultiBaseHeat() {
173     Map<String, MessageContainer> messages = ValidationTestUtil.testValidator(validator,
174         RESOURCE_PATH + "/multiBaseHeat/");
175     Assert.assertNotNull(messages);
176     Assert.assertEquals(messages.size(), 1);
177     Assert.assertEquals(messages.get("MANIFEST.json").getErrorMessageList().size(), 1);
178     Assert.assertEquals(messages.get("MANIFEST.json").getErrorMessageList().get(0).getMessage(),
179         "WARNING: [SRG4]: Multi Base HEAT. Expected only one. Files [second.yaml,first.yaml].");
180   }
181 }