2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
23 * Copyright (c) 2018 AT&T Intellectual Property.
27 * Licensed under the Apache License, Version 2.0 (the "License");
29 * you may not use this file except in compliance with the License.
31 * You may obtain a copy of the License at
35 * http://www.apache.org/licenses/LICENSE-2.0
39 * Unless required by applicable law or agreed to in writing, software
41 * distributed under the License is distributed on an "AS IS" BASIS,
43 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
45 * See the License for the specific language governing permissions and
47 * limitations under the License.
50 package org.openecomp.sdc.asdctool.impl;
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;
60 import java.io.IOException;
61 import java.text.SimpleDateFormat;
62 import java.util.Date;
63 import java.util.HashMap;
65 import static org.assertj.core.api.Assertions.assertThat;
66 import static org.openecomp.sdc.common.datastructure.AuditingFieldsKey.*;
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";
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";
102 private final static String dateFormatPattern = "yyyy-MM-dd HH:mm:ss.SSS z";
104 private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatPattern);
106 private static DataMigration dataMigration = new DataMigration();
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\"}";
119 private String timestampStr;
121 private HashMap<AuditingFieldsKey, String> dataMap = new HashMap<>();
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);
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);
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);
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);
189 public void createEventForNoneAuditTable() {
190 assertThat(dataMigration.createAuditEvent(dataMap, Table.COMPONENT_CACHE)).isNull();
195 public void createEventWhenSomeFieldValuesNotSet() {
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();
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);
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);
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);
232 public void createEventFromEsFailedWhenActionDoesNotExist() throws IOException {
233 dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr),
234 Table.CONSUMER_EVENT);
237 @Test(expected = NullPointerException.class)
238 public void createRecordWhenJsonIsEmpty() throws IOException{
239 dataMigration.createAuditRecordForCassandra("{}",
240 Table.CONSUMER_EVENT);
244 public void createEventFromUEBCluster() throws IOException
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);
253 public void createEventFromDistEngine() throws IOException
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);
262 public void createEventFromDistStatus() throws IOException
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);
271 public void createEventFromCategory() throws IOException
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);
280 public void createFromCategoryHierarchy() throws IOException
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);
289 public void createEventFromUserAccess() throws IOException
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);
298 public void createEventFromDistDwnld() throws IOException
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);
307 public void createEventFromDistDeploy() throws IOException
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);
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());
321 assertThat(event.getServiceInstanceId()).isNull();
323 assertThat(DESCRIPTION).isEqualTo(event.getDesc());
324 assertThat(REQUEST_ID).isEqualTo(event.getRequestId());
327 private void verifyUserAdminEvent(UserAdminEvent event) {
328 assertThat(USER_AFTER).isEqualTo(event.getUserAfter());
329 assertThat(USER_BEFORE).isEqualTo(event.getUserBefore());
330 verifyTimestamp(event.getTimestamp1());
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());
340 private void verifyTimestamp(Date date) {
341 assertThat(timestampStr).isEqualTo(simpleDateFormat.format(date));
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());
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());