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;
19 import fj.data.Either;
20 import org.junit.Assert;
21 import org.junit.Before;
22 import org.junit.Test;
23 import org.mockito.Mockito;
24 import org.mockito.MockitoAnnotations;
25 import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
26 import org.openecomp.sdc.be.model.Component;
27 import org.openecomp.sdc.be.model.RequirementDefinition;
28 import org.openecomp.sdc.be.model.Resource;
29 import org.openecomp.sdc.exception.ResponseFormat;
31 import java.util.ArrayList;
32 import java.util.HashMap;
33 import java.util.List;
36 import static org.mockito.ArgumentMatchers.any;
37 import static org.mockito.Mockito.when;
39 public class RequirementValidationTest {
40 private ResponseFormatManager responseFormatManagerMock;
41 private final Component component = createComponent();
42 private final RequirementValidationUtilTest requirementValidationUtilTest = new RequirementValidationUtilTest();
45 MockitoAnnotations.initMocks(this);
46 responseFormatManagerMock = Mockito.mock(ResponseFormatManager.class);
47 when(responseFormatManagerMock.getResponseFormat(any())).thenReturn(new ResponseFormat());
48 when(responseFormatManagerMock.getResponseFormat(any(), any())).thenReturn(new ResponseFormat());
49 when(responseFormatManagerMock.getResponseFormat(any(), any(), any())).thenReturn(new ResponseFormat());
53 public void shouldPassRequirementsValidationForHappyScenario() {
54 List<RequirementDefinition> requirementsDefinitions = new ArrayList<>();
55 requirementsDefinitions.add(createRequirement("reqName", "capType", "node", "source1",
57 Either<Boolean, ResponseFormat> validateRequirementsResponseEither = requirementValidationUtilTest
58 .validateRequirements(requirementsDefinitions, component, false);
59 Assert.assertTrue(validateRequirementsResponseEither.isLeft());
63 public void shouldFailWhenRequirementNameAlreadyExist() {
64 List<RequirementDefinition> requirementsDefinitions = new ArrayList<>();
65 requirementsDefinitions.add(createRequirement("ReqNameC", "capType", "node", "source1",
67 Either<Boolean, ResponseFormat> validateRequirementsResponseEither = requirementValidationUtilTest
68 .validateRequirements(requirementsDefinitions, component, false);
69 Assert.assertTrue(validateRequirementsResponseEither.isRight());
73 public void shouldFailWhenRequirementNameEmpty() {
74 List<RequirementDefinition> requirementsDefinitions = new ArrayList<>();
75 requirementsDefinitions.add(createRequirement("", "capType", "node", "source1",
77 Either<Boolean, ResponseFormat> validateRequirementsResponseEither = requirementValidationUtilTest
78 .validateRequirements(requirementsDefinitions, component, false);
79 Assert.assertTrue(validateRequirementsResponseEither.isRight());
83 public void shouldFailWhenRequirementCapabilityEmpty() {
84 List<RequirementDefinition> requirementsDefinitions = new ArrayList<>();
85 requirementsDefinitions.add(createRequirement("reqName1", "", "node", "source1",
87 Either<Boolean, ResponseFormat> validateRequirementsResponseEither = requirementValidationUtilTest
88 .validateRequirements(requirementsDefinitions, component, false);
89 Assert.assertTrue(validateRequirementsResponseEither.isRight());
93 public void shouldFailWhenRequirementMaxOccurrencesLessThanMinOccurrences() {
94 List<RequirementDefinition> requirementsDefinitions = new ArrayList<>();
95 requirementsDefinitions.add(createRequirement("reqName1", "capType", "node", "source1",
97 Either<Boolean, ResponseFormat> validateRequirementsResponseEither = requirementValidationUtilTest
98 .validateRequirements(requirementsDefinitions, component, false);
99 Assert.assertTrue(validateRequirementsResponseEither.isRight());
103 public void shouldFailWhenRequirementNotFoundForUpdate() {
104 List<RequirementDefinition> requirementsDefinitions = new ArrayList<>();
105 RequirementDefinition requirementsToUpdate = createRequirement("reqName1", "capType", "node", "source1",
107 requirementsToUpdate.setUniqueId("uniqueId2");
109 requirementsDefinitions.add(requirementsToUpdate);
110 Either<Boolean, ResponseFormat> validateRequirementsResponseEither = requirementValidationUtilTest
111 .validateRequirements(requirementsDefinitions, component, true);
112 Assert.assertTrue(validateRequirementsResponseEither.isRight());
115 private RequirementDefinition createRequirement(String name, String capability, String node,
116 String relationship, String minOccurrences,
117 String maxOccurrences) {
118 RequirementDefinition requirementDefinition = new RequirementDefinition();
119 requirementDefinition.setName(name);
120 requirementDefinition.setCapability(capability);
121 requirementDefinition.setNode(node);
122 requirementDefinition.setRelationship(relationship);
123 requirementDefinition.setMaxOccurrences(maxOccurrences);
124 requirementDefinition.setMinOccurrences(minOccurrences);
125 requirementDefinition.setUniqueId("uniqueId");
127 return requirementDefinition;
130 private Resource createComponent() {
131 Resource resource = new Resource();
132 resource.setName("Resource1");
133 resource.addCategory("Network Layer 2-3", "Router");
134 resource.setDescription("My short description");
135 List<String> tgs = new ArrayList<>();
137 tgs.add(resource.getName());
138 resource.setTags(tgs);
140 List<RequirementDefinition> requirementsDefinitions = new ArrayList<>();
141 requirementsDefinitions.add(createRequirement("ReqNameC", "reqDesc", "capType", "source1",
143 Map<String, List<RequirementDefinition>> requirementsMap = new HashMap<>();
144 requirementsMap.put("capTypeC", requirementsDefinitions);
145 resource.setRequirements(requirementsMap);
150 private class RequirementValidationUtilTest extends RequirementValidation {
152 protected ResponseFormatManager getResponseFormatManager() {
153 return responseFormatManagerMock;