2 * Copyright © 2016-2019 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.
18 package org.openecomp.sdc.be.components.validation;
20 import fj.data.Either;
21 import mockit.Deencapsulation;
22 import org.junit.Test;
23 import org.openecomp.sdc.be.components.BeConfDependentTest;
24 import org.openecomp.sdc.be.components.utils.ComponentInstancePropertyBuilder;
25 import org.openecomp.sdc.be.components.utils.ResourceBuilder;
26 import org.openecomp.sdc.be.components.utils.ServiceBuilder;
27 import org.openecomp.sdc.be.config.ConfigurationManager;
28 import org.openecomp.sdc.be.dao.api.ActionStatus;
29 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
30 import org.openecomp.sdc.be.model.Component;
31 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
32 import org.openecomp.sdc.be.model.PolicyDefinition;
33 import org.openecomp.sdc.be.model.Resource;
34 import org.openecomp.sdc.be.model.Service;
35 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
36 import org.openecomp.sdc.common.api.ConfigurationSource;
37 import org.openecomp.sdc.common.impl.ExternalConfiguration;
38 import org.openecomp.sdc.common.impl.FSConfigurationSource;
41 import java.util.Objects;
44 import static org.junit.Assert.assertEquals;
45 import static org.junit.Assert.assertTrue;
47 public class PolicyUtilsTest extends BeConfDependentTest{
49 private static final String PROP_NAME = "propertyName";
50 private static final String COMP_ID = "compId";
51 private static final String appConfigDir = "src/test/resources/config/catalog-be";
52 private static final String EXPECTED_SERVICE_POLICY_TYPE = "a.b.c";
53 private static final String EXPECTED_RESOURCE_POLICY_TYPE = "c.d.e";
54 private static final String POLICY_ID_1 = "policyId1";
55 private static final String POLICY_ID_2 = "policyId2";
56 private static final String POLICY_NAME = "policyName";
59 public void testGetNextPolicyCounter() throws Exception {
60 Map<String, PolicyDefinition> policies = null;
64 result = PolicyUtils.getNextPolicyCounter(policies);
68 public void testValidatePolicyFields() throws Exception {
69 PolicyDefinition recievedPolicy = new PolicyDefinition();
70 PolicyDefinition validPolicy = new PolicyDefinition();
71 Map<String, PolicyDefinition> policies = null;
72 Either<PolicyDefinition, ActionStatus> result;
75 result = PolicyUtils.validatePolicyFields(recievedPolicy, validPolicy, policies);
79 public void testValidatePolicyFieldsOneEmptyField() {
80 PolicyDefinition receivedPolicy = new PolicyDefinition();
81 PolicyDefinition validPolicy = new PolicyDefinition();
83 receivedPolicy.setName(POLICY_NAME);
84 receivedPolicy.setUniqueId(null);
85 validPolicy.setUniqueId(POLICY_ID_2);
87 Either<PolicyDefinition, ActionStatus> policyEither =
88 PolicyUtils.validatePolicyFields(receivedPolicy, validPolicy, null);
90 assertTrue(policyEither.isLeft());
91 assertEquals(validPolicy, policyEither.left().value());
95 public void testValidatePolicyFieldsUpdateUniqueId() {
96 PolicyDefinition receivedPolicy = new PolicyDefinition();
97 PolicyDefinition validPolicy = new PolicyDefinition();
99 receivedPolicy.setName(POLICY_NAME);
100 receivedPolicy.setUniqueId(POLICY_ID_1);
101 validPolicy.setUniqueId(POLICY_ID_2);
103 Either<PolicyDefinition, ActionStatus> policyEither =
104 PolicyUtils.validatePolicyFields(receivedPolicy, validPolicy, null);
106 assertTrue(policyEither.isLeft());
107 assertEquals(validPolicy, policyEither.left().value());
111 public void testGetExcludedPolicyTypesByComponent() throws Exception {
112 Component component = new Resource();
116 result = PolicyUtils.getExcludedPolicyTypesByComponent(component);
117 component = new Service();
118 result = PolicyUtils.getExcludedPolicyTypesByComponent(component);
122 public void testGetExcludedPoliciesWithServiceComponent() {
123 ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
124 ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
126 Service service = new ServiceBuilder().setUniqueId(COMP_ID).build();
128 Set<String> policyTypes = PolicyUtils.getExcludedPolicyTypesByComponent(service);
129 validateExtractedPolicies(policyTypes, EXPECTED_SERVICE_POLICY_TYPE);
133 public void testGetExcludedPoliciesWithResourceComponent() {
134 ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
135 ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
137 Resource resource = new ResourceBuilder().setUniqueId(COMP_ID).build();
139 Set<String> policyTypes = PolicyUtils.getExcludedPolicyTypesByComponent(resource);
140 validateExtractedPolicies(policyTypes, EXPECTED_RESOURCE_POLICY_TYPE);
144 public void testExtractNextPolicyCounterFromUniqueId() throws Exception {
145 String uniqueId = "";
149 result = Deencapsulation.invoke(PolicyUtils.class, "extractNextPolicyCounterFromUniqueId",
150 new Object[] { uniqueId });
154 public void testExtractNextPolicyCounterFromName() throws Exception {
155 String policyName = "";
159 result = Deencapsulation.invoke(PolicyUtils.class, "extractNextPolicyCounterFromName",
160 new Object[] { policyName });
164 public void testExtractNextPolicyCounter() throws Exception {
165 String policyName = "";
170 result = Deencapsulation.invoke(PolicyUtils.class, "extractNextPolicyCounter",
171 new Object[] { policyName, endIndex });
175 public void testValidateImmutablePolicyFields() throws Exception {
176 PolicyDefinition receivedPolicy = new PolicyDefinition();
177 PolicyDefinition validPolicy = new PolicyDefinition();
180 Deencapsulation.invoke(PolicyUtils.class, "validateImmutablePolicyFields",
181 receivedPolicy, validPolicy);
185 public void testIsUpdatedField() throws Exception {
186 String oldField = "";
187 String newField = "";
191 result = Deencapsulation.invoke(PolicyUtils.class, "isUpdatedField", new Object[] { oldField, newField });
195 public void testLogImmutableFieldUpdateWarning() throws Exception {
196 String oldValue = "";
197 String newValue = "";
198 JsonPresentationFields field = null;
201 Deencapsulation.invoke(PolicyUtils.class, "logImmutableFieldUpdateWarning",
202 new Object[] { oldValue, newValue, JsonPresentationFields.class });
206 public void testGetDeclaredPolicyDefinition() {
207 ComponentInstanceProperty property = new ComponentInstancePropertyBuilder().setName(PROP_NAME).build();
208 PolicyDefinition policy = PolicyUtils.getDeclaredPolicyDefinition(COMP_ID, property);
210 assertTrue(Objects.nonNull(policy));
211 assertEquals(UniqueIdBuilder.buildPolicyUniqueId(COMP_ID, PROP_NAME), policy.getUniqueId());
212 assertEquals(COMP_ID, policy.getInstanceUniqueId());
215 private void validateExtractedPolicies(Set<String> policyTypes, String expectedType) {
216 assertTrue(org.apache.commons.collections.CollectionUtils.isNotEmpty(policyTypes));
217 assertEquals(1, policyTypes.size());
218 assertEquals(expectedType, policyTypes.iterator().next());