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.be.components.validation;
20 import fj.data.Either;
21 import org.junit.Assert;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.mockito.Mockito;
25 import org.mockito.MockitoAnnotations;
26 import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
27 import org.openecomp.sdc.be.model.CapabilityDefinition;
28 import org.openecomp.sdc.be.model.Component;
29 import org.openecomp.sdc.be.model.Resource;
30 import org.openecomp.sdc.exception.ResponseFormat;
32 import java.util.ArrayList;
33 import java.util.Collections;
34 import java.util.HashMap;
35 import java.util.List;
38 import static org.mockito.ArgumentMatchers.any;
39 import static org.mockito.Mockito.when;
41 public class CapabilitiesValidationTest {
42 private ResponseFormatManager responseFormatManagerMock;
43 private final Component component = createComponent();
44 private final CapabilitiesValidationUtilTest capabilitiesValidationUtilTest = new CapabilitiesValidationUtilTest();
47 MockitoAnnotations.openMocks(this);
48 responseFormatManagerMock = Mockito.mock(ResponseFormatManager.class);
49 when(responseFormatManagerMock.getResponseFormat(any())).thenReturn(new ResponseFormat());
50 when(responseFormatManagerMock.getResponseFormat(any(), any())).thenReturn(new ResponseFormat());
51 when(responseFormatManagerMock.getResponseFormat(any(), any(), any())).thenReturn(new ResponseFormat());
55 public void shouldPassCapabilitiesValidationForHappyScenario() {
56 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
57 capabilityDefinitions.add(createCapability("capName", "capDesc", "capType", "source1",
59 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
60 .validateCapabilities(capabilityDefinitions, component, false);
61 Assert.assertTrue(validateCapabilitiesResponseEither.isLeft());
65 public void shouldFailWhenCapabilityNameAlreadyExist() {
66 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
67 capabilityDefinitions.add(createCapability("capNameC", "capDesc", "capType", "source1",
69 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
70 .validateCapabilities(capabilityDefinitions, component, false);
71 Assert.assertTrue(validateCapabilitiesResponseEither.isRight());
75 public void shouldFailWhenCapabilityNameEmpty() {
76 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
77 capabilityDefinitions.add(createCapability("", "capDesc", "capType", "source1",
79 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
80 .validateCapabilities(capabilityDefinitions, component, false);
81 Assert.assertTrue(validateCapabilitiesResponseEither.isRight());
85 public void shouldFailWhenCapabilityTypeEmpty() {
86 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
87 capabilityDefinitions.add(createCapability("capName1", "capDesc", "", "source1",
89 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
90 .validateCapabilities(capabilityDefinitions, component, false);
91 Assert.assertTrue(validateCapabilitiesResponseEither.isRight());
95 public void shouldFailWhenCapabilityMaxOccurrencesLessThanMinOccurrences() {
96 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
97 capabilityDefinitions.add(createCapability("capName1", "capDesc", "capType", "source1",
99 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
100 .validateCapabilities(capabilityDefinitions, component, false);
101 Assert.assertTrue(validateCapabilitiesResponseEither.isRight());
105 public void shouldPassWhenCapabilityMaxOccurrencesIsUnbounded() {
106 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
107 capabilityDefinitions.add(createCapability("capName1", "capDesc", "capType", "source1",
108 "111", "UNBOUNDED"));
109 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
110 .validateCapabilities(capabilityDefinitions, component, false);
111 Assert.assertTrue(validateCapabilitiesResponseEither.isLeft());
115 public void shouldFailWhenCapabilityMinOccurrencesIsNegative() {
116 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
117 capabilityDefinitions.add(createCapability("capName1", "capDesc", "capType", "source1",
119 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
120 .validateCapabilities(capabilityDefinitions, component, false);
121 Assert.assertTrue(validateCapabilitiesResponseEither.isRight());
125 public void shouldThrowExceptionWhenMin_MaxOccurrencesIsNotInteger() {
126 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
127 capabilityDefinitions.add(createCapability("capName1", "capDesc", "capType", "source1",
129 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
130 .validateCapabilities(capabilityDefinitions, component, false);
131 Assert.assertTrue(validateCapabilitiesResponseEither.isRight());
135 public void shouldFailWhenCapabilityNotFoundForUpdate() {
136 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
137 CapabilityDefinition capabilityToUpdate = createCapability("capName1", "capDesc", "capType", "source1",
139 capabilityToUpdate.setUniqueId("uniqueId2");
141 capabilityDefinitions.add(capabilityToUpdate);
142 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
143 .validateCapabilities(capabilityDefinitions, component, true);
144 Assert.assertTrue(validateCapabilitiesResponseEither.isRight());
148 public void shouldFailWhenCapabilityMapIsEmptyInComponentForUpdate() {
149 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
150 CapabilityDefinition capabilityToUpdate = createCapability("capName1", "capDesc", "capType", "source1",
152 capabilityToUpdate.setUniqueId("uniqueId2");
153 capabilityDefinitions.add(capabilityToUpdate);
154 Component resource = new Resource();
155 List<CapabilityDefinition> componentCap = new ArrayList<>();
156 Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
157 capabilityMap.put("capTypeC", componentCap);
159 resource.setCapabilities(capabilityMap);
160 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
161 .validateCapabilities(capabilityDefinitions, resource, true);
162 Assert.assertTrue(validateCapabilitiesResponseEither.isRight());
166 public void shouldFailWhenCapabilityMapIsNullInComponentForUpdate() {
167 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
168 CapabilityDefinition capabilityToUpdate = createCapability("capName1", "capDesc", "capType", "source1",
170 capabilityToUpdate.setUniqueId("uniqueId2");
172 capabilityDefinitions.add(capabilityToUpdate);
173 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
174 .validateCapabilities(capabilityDefinitions, new Resource(), true);
175 Assert.assertTrue(validateCapabilitiesResponseEither.isRight());
179 public void shouldFailWhenCapabilityNameContainsSpecialSymbolExceptDot() {
180 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
181 capabilityDefinitions.add(createCapability("cap@name", "capDesc", "capType", "source1",
183 Either<Boolean, ResponseFormat> validateCapabilitiesResponseEither = capabilitiesValidationUtilTest
184 .validateCapabilities(capabilityDefinitions, component, false);
185 Assert.assertTrue(validateCapabilitiesResponseEither.isRight());
188 private CapabilityDefinition createCapability(String name, String description, String type,
189 String validSourceTypes, String minOccurrences,
190 String maxOccurrences) {
191 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
192 capabilityDefinition.setName(name);
193 capabilityDefinition.setDescription(description);
194 capabilityDefinition.setType(type);
195 capabilityDefinition.setValidSourceTypes(Collections.singletonList(validSourceTypes));
196 capabilityDefinition.setMaxOccurrences(maxOccurrences);
197 capabilityDefinition.setMinOccurrences(minOccurrences);
198 capabilityDefinition.setUniqueId("uniqueId");
200 return capabilityDefinition;
203 private Resource createComponent() {
204 Resource resource = new Resource();
205 resource.setName("Resource1");
206 resource.addCategory("Network Layer 2-3", "Router");
207 resource.setDescription("My short description");
208 List<String> tgs = new ArrayList<>();
210 tgs.add(resource.getName());
211 resource.setTags(tgs);
213 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
214 capabilityDefinitions.add(createCapability("capNameC", "capDesc", "capType", "source1",
216 Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
217 capabilityMap.put("capTypeC", capabilityDefinitions);
218 resource.setCapabilities(capabilityMap);
223 private class CapabilitiesValidationUtilTest extends CapabilitiesValidation {
225 protected ResponseFormatManager getResponseFormatManager() {
226 return responseFormatManagerMock;