2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (c) 2019 Samsung
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.openecomp.sdc.asdctool.impl.validator.tasks.artifacts;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertTrue;
28 import static org.mockito.ArgumentMatchers.any;
29 import static org.mockito.ArgumentMatchers.eq;
30 import static org.mockito.Mockito.when;
33 import java.util.ArrayList;
34 import java.util.HashMap;
35 import java.util.List;
37 import java.util.Objects;
39 import org.junit.Assert;
40 import org.junit.Before;
41 import org.junit.Test;
42 import org.junit.runner.RunWith;
43 import org.mockito.InjectMocks;
44 import org.mockito.Mock;
46 import org.mockito.junit.MockitoJUnitRunner;
47 import org.openecomp.sdc.asdctool.impl.validator.config.ValidationConfigManager;
48 import org.openecomp.sdc.asdctool.impl.validator.utils.ReportManager;
49 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
50 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
52 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
53 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
54 import org.openecomp.sdc.be.datatypes.elements.MapArtifactDataDefinition;
55 import org.openecomp.sdc.be.model.jsonjanusgraph.datamodel.TopologyTemplate;
56 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.TopologyTemplateOperation;
57 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
59 import fj.data.Either;
60 import org.powermock.core.classloader.annotations.PrepareForTest;
61 import org.powermock.modules.junit4.PowerMockRunner;
62 import org.powermock.modules.junit4.PowerMockRunnerDelegate;
64 @RunWith(PowerMockRunner.class)
65 @PowerMockRunnerDelegate(MockitoJUnitRunner.class)
66 @PrepareForTest({ReportManager.class})
67 public class ArtifactValidationUtilsTest {
70 private ArtifactCassandraDao artifactCassandraDao;
72 private TopologyTemplateOperation topologyTemplateOperation;
74 private ArtifactValidationUtils testSubject;
77 private GraphVertex vertex;
79 private MapArtifactDataDefinition mapToscaDataDefinition;
81 private ArtifactDataDefinition artifactDataDefinition;
83 private ArtifactDataDefinition artifactDataDefinitionNotInCassandra;
85 private ArtifactDataDefinition artifactDataDefinitionDummy;
87 private TopologyTemplate topologyTemplate;
89 private static final String ES_ID = "testEsInCassandra";
90 private static final String ES_ID_NOT_IN_CASS = "testEsNotInCassandra";
91 private static final String TASK_NAME = "testTaskName";
92 private static final String UNIQUE_ID = "4321";
93 private static final String UNIQUE_ID_VERTEX = "321";
95 public void initReportManager() {
96 String resourcePath = new File(Objects
97 .requireNonNull(ArtifactValidationUtilsTest.class.getClassLoader().getResource(""))
98 .getFile()).getAbsolutePath();
99 ValidationConfigManager.setOutputFullFilePath(resourcePath);
104 public void setup() {
106 when(artifactCassandraDao.getCountOfArtifactById(ES_ID)).thenReturn(Either.left(1L));
107 when(artifactCassandraDao.getCountOfArtifactById(ES_ID_NOT_IN_CASS))
108 .thenReturn(Either.right(CassandraOperationStatus.NOT_FOUND));
110 when(artifactDataDefinition.getEsId()).thenReturn(ES_ID);
111 when(artifactDataDefinitionNotInCassandra.getEsId()).thenReturn(ES_ID_NOT_IN_CASS);
113 when(artifactDataDefinitionNotInCassandra.getUniqueId()).thenReturn(UNIQUE_ID);
114 when(vertex.getUniqueId()).thenReturn(UNIQUE_ID_VERTEX);
118 public void testValidateArtifactsAreInCassandra() {
120 List<ArtifactDataDefinition> artifacts = new ArrayList<>();
121 artifacts.add(artifactDataDefinition);
124 ArtifactsVertexResult result =
125 testSubject.validateArtifactsAreInCassandra(vertex, TASK_NAME, artifacts);
128 assertTrue(result.getStatus());
129 assertEquals(0, result.notFoundArtifacts.size());
133 public void testValidateArtifactsNotInCassandra() {
135 List<ArtifactDataDefinition> artifacts = new ArrayList<>();
136 artifacts.add(artifactDataDefinition);
137 artifacts.add(artifactDataDefinitionNotInCassandra);
140 ArtifactsVertexResult result =
141 testSubject.validateArtifactsAreInCassandra(vertex, TASK_NAME, artifacts);
144 assertFalse(result.getStatus());
145 assertEquals(1, result.notFoundArtifacts.size());
146 assertEquals(UNIQUE_ID, result.notFoundArtifacts.iterator().next());
150 public void testIsArtifactsInCassandra() {
152 boolean notInCass = testSubject.isArtifactInCassandra(ES_ID_NOT_IN_CASS);
153 boolean inCass = testSubject.isArtifactInCassandra(ES_ID);
156 assertFalse(notInCass);
161 public void testAddRelevantArtifacts() {
163 Map<String, ArtifactDataDefinition> artifactsMap = new HashMap<>();
164 artifactsMap.put(ES_ID_NOT_IN_CASS, artifactDataDefinitionNotInCassandra);
165 artifactsMap.put(ES_ID, artifactDataDefinition);
168 List<ArtifactDataDefinition> result = testSubject.addRelevantArtifacts(artifactsMap);
171 result.forEach(Assert::assertNotNull);
175 public void testAddRelevantArtifactsWithNullEsId() {
177 Map<String, ArtifactDataDefinition> artifactsMap = new HashMap<>();
178 artifactsMap.put("", artifactDataDefinitionDummy);
181 List<ArtifactDataDefinition> result = testSubject.addRelevantArtifacts(artifactsMap);
184 assertEquals(0, result.size());
188 public void testValidateTopologyTemplateArtifacts() {
190 Map<String, ArtifactDataDefinition> artifacts = new HashMap<>();
191 artifacts.put(ES_ID, artifactDataDefinition);
193 when(topologyTemplate.getDeploymentArtifacts()).thenReturn(artifacts);
194 when(topologyTemplate.getArtifacts()).thenReturn(artifacts);
195 when(topologyTemplate.getServiceApiArtifacts()).thenReturn(artifacts);
197 when(mapToscaDataDefinition.getMapToscaDataDefinition()).thenReturn(artifacts);
198 Map<String, MapArtifactDataDefinition> artifactsMap = new HashMap<>();
199 artifactsMap.put(ES_ID, mapToscaDataDefinition);
201 when(topologyTemplate.getInstanceArtifacts()).thenReturn(artifactsMap);
202 when(topologyTemplate.getInstDeploymentArtifacts()).thenReturn(artifactsMap);
204 when(topologyTemplateOperation.getToscaElement(eq(vertex.getUniqueId()), any()))
205 .thenReturn(Either.left(topologyTemplate));
208 ArtifactsVertexResult result =
209 testSubject.validateTopologyTemplateArtifacts(vertex, TASK_NAME);
212 assertTrue(result.getStatus());
213 assertEquals(0, result.notFoundArtifacts.size());
217 public void testValidateTopologyTemplateArtifactsNotFoundToscaElement() {
219 when(topologyTemplateOperation.getToscaElement(eq(vertex.getUniqueId()), any()))
220 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
223 ArtifactsVertexResult result =
224 testSubject.validateTopologyTemplateArtifacts(vertex, TASK_NAME);
227 assertFalse(result.getStatus());