Added oparent to sdc main
[sdc.git] / asdctool / src / test / java / org / openecomp / sdc / asdctool / impl / DataMigrationTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 /*
22
23  * Copyright (c) 2018 AT&T Intellectual Property.
24
25  *
26
27  * Licensed under the Apache License, Version 2.0 (the "License");
28
29  * you may not use this file except in compliance with the License.
30
31  * You may obtain a copy of the License at
32
33  *
34
35  *     http://www.apache.org/licenses/LICENSE-2.0
36
37  *
38
39  * Unless required by applicable law or agreed to in writing, software
40
41  * distributed under the License is distributed on an "AS IS" BASIS,
42
43  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
44
45  * See the License for the specific language governing permissions and
46
47  * limitations under the License.
48
49  */
50 package org.openecomp.sdc.asdctool.impl;
51
52 import org.junit.Before;
53 import org.junit.Test;
54 import org.junit.runner.RunWith;
55 import org.mockito.junit.MockitoJUnitRunner;
56 import org.openecomp.sdc.be.dao.cassandra.schema.Table;
57 import org.openecomp.sdc.be.resources.data.auditing.*;
58 import org.openecomp.sdc.common.datastructure.AuditingFieldsKey;
59
60 import java.io.IOException;
61 import java.text.SimpleDateFormat;
62 import java.util.Date;
63 import java.util.HashMap;
64
65 import static org.assertj.core.api.Assertions.assertThat;
66 import static org.openecomp.sdc.common.datastructure.AuditingFieldsKey.*;
67
68 @RunWith(MockitoJUnitRunner.class)
69 public class DataMigrationTest {
70     private final static String DESCRIPTION = "OK";
71     private final static String STATUS = "200";
72     private final static String SERVICE_INSTANCE_ID = "SERVICE_INSTANCE_ID";
73     private final static String MODIFIER = "MODIFIER";
74     private final static String REQUEST_ID = "REQUEST_ID";
75     private final static String USER = "USER";
76     private final static String USER_BEFORE = "USER_BEFORE";
77     private final static String USER_AFTER = "USER_AFTER";
78     private final static String ARTIFACT_UUID = "ARTIFACT_UUID";
79
80     private final static String PREV_STATE = "PREV_STATE";
81     private final static String CURR_STATE = "CURR_STATE";
82     private final static String PREV_VERSION = "PREV_VERSION";
83     private final static String CURR_VERSION = "CURR_VERSION";
84     private final static String DPREV_STATUS = "DPREV_STATUS";
85     private final static String DCURR_STATUS = "CURR_STATUS";
86     private final static String INVARIANT_UUID = "INVARIANT_UUID";
87     private final static String ARTIFACT_DATA = "ARTIFACT_DATA";
88     private final static String COMMENT = "COMMENT";
89     private final static String DISTRIBUTION_ID = "DISTRIBUTION_ID";
90     private final static String TOSCA_NODE_TYPE = "TOSCA_NODE_TYPE";
91     private final static String CONSUMER_ID = "CONSUMER_ID";
92     private final static String RESOURCE_URL = "RESOURCE_URL";
93     private final static String ENV_ID = "ENV_ID";
94     private final static String VNF_WORKLOAD_CONTEXT = "VNF_WORKLOAD_CONTEXT";
95     private final static String TENANT = "TENANT";
96     private final static String RESOURCE_NAME = "RESOURCE_NAME";
97     private final static String RESOURCE_TYPE = "RESOURCE_TYPE";
98     private final static String AUTH_URL = "AUTH_URL";
99     private final static String AUTH_RELM = "AUTH_RELM";
100     private final static String TOPIC_NAME = "TOPIC_NAME";
101
102     private final static String dateFormatPattern = "yyyy-MM-dd HH:mm:ss.SSS z";
103
104     private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatPattern);
105
106     private static DataMigration dataMigration = new DataMigration();
107
108     private final static String ES_STRING = "{\"" + AuditingFieldsKey.AUDIT_ACTION + "\":\"%s\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_NAME + "\":\"" + RESOURCE_NAME + "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_TOSCA_NODE_TYPE + "\":\"" + TOSCA_NODE_TYPE +
109             "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_PREV_VERSION + "\":\"" + PREV_VERSION + "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_PREV_STATE + "\":\"" + PREV_STATE +
110             "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_TYPE + "\":\"" + RESOURCE_TYPE + "\", \"" + AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID + "\":\"" + SERVICE_INSTANCE_ID +
111             "\", \"" + AuditingFieldsKey.AUDIT_INVARIANT_UUID + "\":\"" + INVARIANT_UUID + "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_CURR_VERSION + "\":\"" + CURR_VERSION +
112             "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_CURR_STATE + "\":\"" + CURR_STATE + "\", \"" + AuditingFieldsKey.AUDIT_MODIFIER_UID + "\":\"" + MODIFIER +
113             "\", \"" + AuditingFieldsKey.AUDIT_DESC + "\":\"" + DESCRIPTION + "\", \"" + AuditingFieldsKey.AUDIT_STATUS + "\":\"" + STATUS +
114             "\", \"" + AuditingFieldsKey.AUDIT_REQUEST_ID + "\":\"" + REQUEST_ID + "\", \"" + AuditingFieldsKey.AUDIT_CURR_ARTIFACT_UUID + "\":\"" + ARTIFACT_UUID +
115             "\", \"" + AuditingFieldsKey.AUDIT_PREV_ARTIFACT_UUID + "\":\"" + ARTIFACT_UUID + "\", \"" + AuditingFieldsKey.AUDIT_ARTIFACT_DATA + "\":\"" + ARTIFACT_DATA +
116             "\", \"" + AuditingFieldsKey.AUDIT_TIMESTAMP + "\":\"%s\"}";
117
118
119     private String timestampStr;
120
121     private HashMap<AuditingFieldsKey, String> dataMap = new HashMap<>();
122
123     @Before
124     public void setUp() {
125         dataMap.put(AUDIT_DESC, DESCRIPTION);
126         dataMap.put(AUDIT_STATUS, STATUS);
127         dataMap.put(AUDIT_REQUEST_ID, REQUEST_ID);
128         dataMap.put(AUDIT_SERVICE_INSTANCE_ID, SERVICE_INSTANCE_ID);
129         dataMap.put(AUDIT_MODIFIER_UID, MODIFIER);
130         dataMap.put(AUDIT_USER_BEFORE, USER_BEFORE);
131         dataMap.put(AUDIT_USER_UID, USER);
132         dataMap.put(AUDIT_USER_AFTER, USER_AFTER);
133         dataMap.put(AUDIT_AUTH_URL, AUTH_URL);
134         dataMap.put(AUDIT_AUTH_REALM, AUTH_RELM);
135         dataMap.put(AUDIT_PREV_ARTIFACT_UUID, ARTIFACT_UUID);
136         dataMap.put(AUDIT_CURR_ARTIFACT_UUID, ARTIFACT_UUID);
137         dataMap.put(AUDIT_RESOURCE_PREV_STATE, PREV_STATE);
138         dataMap.put(AUDIT_RESOURCE_PREV_VERSION, PREV_VERSION);
139         dataMap.put(AUDIT_RESOURCE_CURR_STATE, CURR_STATE);
140         dataMap.put(AUDIT_RESOURCE_CURR_VERSION, CURR_VERSION);
141         dataMap.put(AUDIT_RESOURCE_DPREV_STATUS, DPREV_STATUS);
142         dataMap.put(AUDIT_RESOURCE_DCURR_STATUS, DCURR_STATUS);
143         dataMap.put(AUDIT_INVARIANT_UUID, INVARIANT_UUID);
144         dataMap.put(AUDIT_ARTIFACT_DATA, ARTIFACT_DATA);
145         dataMap.put(AUDIT_RESOURCE_COMMENT, COMMENT);
146         dataMap.put(AUDIT_DISTRIBUTION_ID, DISTRIBUTION_ID);
147         dataMap.put(AUDIT_RESOURCE_TOSCA_NODE_TYPE, TOSCA_NODE_TYPE);
148         dataMap.put(AUDIT_DISTRIBUTION_CONSUMER_ID, CONSUMER_ID);
149         dataMap.put(AUDIT_RESOURCE_URL, RESOURCE_URL);
150         dataMap.put(AUDIT_DISTRIBUTION_ENVIRONMENT_ID, ENV_ID);
151         dataMap.put(AUDIT_DISTRIBUTION_VNF_WORKLOAD_CONTEXT, VNF_WORKLOAD_CONTEXT);
152         dataMap.put(AUDIT_DISTRIBUTION_TENANT, TENANT);
153         dataMap.put(AUDIT_RESOURCE_NAME, RESOURCE_NAME);
154         dataMap.put(AUDIT_RESOURCE_TYPE, RESOURCE_TYPE);
155         timestampStr = simpleDateFormat.format(new Date());
156         dataMap.put(AUDIT_TIMESTAMP, timestampStr);
157         dataMap.put(AUDIT_DISTRIBUTION_TOPIC_NAME, TOPIC_NAME);
158
159     }
160
161     @Test
162     public void createUserAdminEvent() {
163         dataMap.put(AUDIT_ACTION, AuditingActionEnum.ADD_USER.getName());
164         AuditingGenericEvent event = dataMigration.createAuditEvent(dataMap, Table.USER_ADMIN_EVENT);
165         assertThat(AuditingActionEnum.ADD_USER.getName()).isEqualTo(event.getAction());
166         verifyCommonData(event, true);
167         verifyUserAdminEvent((UserAdminEvent) event);
168     }
169
170     @Test
171     public void createResourceAdminEvent() {
172         dataMap.put(AUDIT_ACTION, AuditingActionEnum.UPDATE_RESOURCE_METADATA.getName());
173         AuditingGenericEvent event = dataMigration.createAuditEvent(dataMap, Table.RESOURCE_ADMIN_EVENT);
174         assertThat(AuditingActionEnum.UPDATE_RESOURCE_METADATA.getName()).isEqualTo(event.getAction());
175         verifyCommonData(event, true);
176         verifyResourceAdminEvent((ResourceAdminEvent)event);
177     }
178
179     @Test
180     public void createDistributionNotificationEvent() {
181         dataMap.put(AUDIT_ACTION, AuditingActionEnum.DISTRIBUTION_NOTIFY.getName());
182         AuditingGenericEvent event = dataMigration.createAuditEvent(dataMap, Table.DISTRIBUTION_NOTIFICATION_EVENT);
183         assertThat(AuditingActionEnum.DISTRIBUTION_NOTIFY.getName()).isEqualTo(event.getAction());
184         verifyCommonData(event, true);
185         verifyDistributionNotificationEvent((DistributionNotificationEvent)event);
186     }
187
188     @Test
189     public void createEventForNoneAuditTable() {
190         assertThat(dataMigration.createAuditEvent(dataMap, Table.COMPONENT_CACHE)).isNull();
191
192     }
193
194     @Test
195     public void createEventWhenSomeFieldValuesNotSet() {
196         dataMap.clear();
197         dataMap.put(AUDIT_ACTION, AuditingActionEnum.AUTH_REQUEST.getName());
198         AuditingGenericEvent event = dataMigration.createAuditEvent(dataMap, Table.AUTH_EVENT);
199         assertThat(AuditingActionEnum.AUTH_REQUEST.getName()).isEqualTo(event.getAction());
200         assertThat(event.getStatus()).isNull();
201         assertThat(event.getDesc()).isNull();
202         assertThat(event.getRequestId()).isNull();
203     }
204
205     @Test
206     public void createAuthEvent() {
207         dataMap.put(AUDIT_ACTION, AuditingActionEnum.AUTH_REQUEST.getName());
208         AuditingGenericEvent event = dataMigration.createAuditEvent(dataMap, Table.AUTH_EVENT);
209         assertThat(AuditingActionEnum.AUTH_REQUEST.getName()).isEqualTo(event.getAction());
210         verifyCommonData(event, false);
211         verifyAuthEvent((AuthEvent) event);
212     }
213
214     @Test
215     public void createImportResourceEventFromEsObject() throws IOException{
216         AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr), Table.RESOURCE_ADMIN_EVENT);
217         assertThat(AuditingActionEnum.IMPORT_RESOURCE.getName()).isEqualTo(event.getAction());
218         verifyCommonData(event, true);
219         verifyResourceAdminEvent((ResourceAdminEvent)event);
220     }
221
222     @Test
223     public void createGetUserListEventFromEsObject() throws IOException{
224         AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.GET_USERS_LIST.getName(), timestampStr),
225                 Table.GET_USERS_LIST_EVENT);
226         assertThat(AuditingActionEnum.GET_USERS_LIST.getName()).isEqualTo(event.getAction());
227         verifyCommonData(event, false);
228         assertThat(((GetUsersListEvent)event).getModifier()).isEqualTo(MODIFIER);
229     }
230
231     @Test
232     public void createEventFromEsFailedWhenActionDoesNotExist() throws IOException {
233         dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr),
234                 Table.CONSUMER_EVENT);
235     }
236
237     @Test(expected = NullPointerException.class)
238     public void createRecordWhenJsonIsEmpty() throws IOException{
239         dataMigration.createAuditRecordForCassandra("{}",
240                 Table.CONSUMER_EVENT);
241     }
242
243     @Test
244     public void createEventFromUEBCluster() throws IOException
245     {
246         AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr),
247                 Table.DISTRIBUTION_GET_UEB_CLUSTER_EVENT);
248         assertThat(AuditingActionEnum.GET_UEB_CLUSTER.getName()).isEqualTo(event.getAction());
249         verifyCommonData(event, true);
250     }
251
252     @Test
253     public void createEventFromDistEngine() throws IOException
254     {
255         AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr),
256                 Table.DISTRIBUTION_ENGINE_EVENT);
257         assertThat(AuditingActionEnum.IMPORT_RESOURCE.getName()).isEqualTo(event.getAction());
258         verifyCommonData(event, true);
259     }
260
261     @Test
262     public void createEventFromDistStatus() throws IOException
263     {
264         AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr),
265                 Table.DISTRIBUTION_STATUS_EVENT);
266         assertThat(AuditingActionEnum.DISTRIBUTION_STATUS.getName()).isEqualTo(event.getAction());
267         verifyCommonData(event, true);
268     }
269
270     @Test
271     public void createEventFromCategory() throws IOException
272     {
273         AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr),
274                 Table.CATEGORY_EVENT);
275         assertThat(AuditingActionEnum.IMPORT_RESOURCE.getName()).isEqualTo(event.getAction());
276         verifyCommonData(event, true);
277     }
278
279     @Test
280     public void createFromCategoryHierarchy() throws IOException
281     {
282         AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr),
283                 Table.GET_CATEGORY_HIERARCHY_EVENT);
284         assertThat(AuditingActionEnum.GET_CATEGORY_HIERARCHY.getName()).isEqualTo(event.getAction());
285         verifyCommonData(event, false);
286     }
287
288     @Test
289     public void createEventFromUserAccess() throws IOException
290     {
291         AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr),
292                 Table.USER_ACCESS_EVENT);
293         assertThat(AuditingActionEnum.USER_ACCESS.getName()).isEqualTo(event.getAction());
294         verifyCommonData(event, true);
295     }
296
297     @Test
298     public void createEventFromDistDwnld() throws IOException
299     {
300         AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr),
301                 Table.DISTRIBUTION_DOWNLOAD_EVENT);
302         assertThat(AuditingActionEnum.DISTRIBUTION_ARTIFACT_DOWNLOAD.getName()).isEqualTo(event.getAction());
303         verifyCommonData(event, true);
304     }
305
306     @Test
307     public void createEventFromDistDeploy() throws IOException
308     {
309         AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr),
310                 Table.DISTRIBUTION_DEPLOY_EVENT);
311         assertThat(AuditingActionEnum.DISTRIBUTION_DEPLOY.getName()).isEqualTo(event.getAction());
312         verifyCommonData(event, true);
313     }
314
315     private void verifyCommonData(AuditingGenericEvent event, boolean isServiceInstanceProvided) {
316         assertThat(STATUS).isEqualTo(event.getStatus());
317         if (isServiceInstanceProvided) {
318             assertThat(SERVICE_INSTANCE_ID).isEqualTo(event.getServiceInstanceId());
319         }
320         else {
321             assertThat(event.getServiceInstanceId()).isNull();
322         }
323         assertThat(DESCRIPTION).isEqualTo(event.getDesc());
324         assertThat(REQUEST_ID).isEqualTo(event.getRequestId());
325     }
326
327     private void verifyUserAdminEvent(UserAdminEvent event) {
328         assertThat(USER_AFTER).isEqualTo(event.getUserAfter());
329         assertThat(USER_BEFORE).isEqualTo(event.getUserBefore());
330         verifyTimestamp(event.getTimestamp1());
331     }
332
333     private void verifyAuthEvent(AuthEvent event) {
334         assertThat(USER).isEqualTo(event.getUser());
335         assertThat(AUTH_URL).isEqualTo(event.getUrl());
336         assertThat(event.getAuthStatus()).isNull();
337         assertThat(AUTH_RELM).isEqualTo(event.getRealm());
338     }
339
340     private void verifyTimestamp(Date date) {
341         assertThat(timestampStr).isEqualTo(simpleDateFormat.format(date));
342     }
343
344     private void verifyResourceAdminEvent(ResourceAdminEvent event) {
345         assertThat(CURR_STATE).isEqualTo(event.getCurrState());
346         assertThat(CURR_VERSION).isEqualTo(event.getCurrVersion());
347         assertThat(ARTIFACT_UUID).isEqualTo(event.getCurrArtifactUUID());
348         assertThat(PREV_STATE).isEqualTo(event.getPrevState());
349         assertThat(PREV_VERSION).isEqualTo(event.getPrevVersion());
350         assertThat(ARTIFACT_UUID).isEqualTo(event.getPrevArtifactUUID());
351         assertThat(INVARIANT_UUID).isEqualTo(event.getInvariantUUID());
352         assertThat(ARTIFACT_DATA).isEqualTo(event.getArtifactData());
353         assertThat(RESOURCE_NAME).isEqualTo(event.getResourceName());
354         assertThat(RESOURCE_TYPE).isEqualTo(event.getResourceType());
355         verifyTimestamp(event.getTimestamp1());
356         assertThat(TOSCA_NODE_TYPE).isEqualTo( event.getToscaNodeType());
357     }
358
359     private void verifyDistributionNotificationEvent(DistributionNotificationEvent event) {
360         assertThat(CURR_STATE).isEqualTo(event.getCurrState());
361         assertThat(CURR_VERSION).isEqualTo(event.getCurrVersion());
362         assertThat(TOPIC_NAME).isEqualTo(event.getTopicName());
363         assertThat(DISTRIBUTION_ID).isEqualTo(event.getDid());
364         assertThat(ENV_ID).isEqualTo(event.getEnvId());
365         assertThat(VNF_WORKLOAD_CONTEXT).isEqualTo(event.getVnfWorkloadContext());
366         assertThat(TENANT).isEqualTo(event.getTenant());
367         verifyTimestamp(event.getTimestamp1());
368     }
369
370 }