1 package org.openecomp.sdc.asdctool.impl;
3 import org.junit.Before;
5 import org.junit.runner.RunWith;
6 import org.mockito.junit.MockitoJUnitRunner;
7 import org.openecomp.sdc.be.dao.cassandra.schema.Table;
8 import org.openecomp.sdc.be.resources.data.auditing.*;
9 import org.openecomp.sdc.common.datastructure.AuditingFieldsKey;
11 import java.io.IOException;
12 import java.text.SimpleDateFormat;
13 import java.util.Date;
14 import java.util.HashMap;
16 import static org.assertj.core.api.Assertions.assertThat;
17 import static org.openecomp.sdc.common.datastructure.AuditingFieldsKey.*;
19 @RunWith(MockitoJUnitRunner.class)
20 public class DataMigrationTest {
21 private final static String DESCRIPTION = "OK";
22 private final static String STATUS = "200";
23 private final static String SERVICE_INSTANCE_ID = "SERVICE_INSTANCE_ID";
24 private final static String MODIFIER = "MODIFIER";
25 private final static String REQUEST_ID = "REQUEST_ID";
26 private final static String USER = "USER";
27 private final static String USER_BEFORE = "USER_BEFORE";
28 private final static String USER_AFTER = "USER_AFTER";
29 private final static String ARTIFACT_UUID = "ARTIFACT_UUID";
31 private final static String PREV_STATE = "PREV_STATE";
32 private final static String CURR_STATE = "CURR_STATE";
33 private final static String PREV_VERSION = "PREV_VERSION";
34 private final static String CURR_VERSION = "CURR_VERSION";
35 private final static String DPREV_STATUS = "DPREV_STATUS";
36 private final static String DCURR_STATUS = "CURR_STATUS";
37 private final static String INVARIANT_UUID = "INVARIANT_UUID";
38 private final static String ARTIFACT_DATA = "ARTIFACT_DATA";
39 private final static String COMMENT = "COMMENT";
40 private final static String DISTRIBUTION_ID = "DISTRIBUTION_ID";
41 private final static String TOSCA_NODE_TYPE = "TOSCA_NODE_TYPE";
42 private final static String CONSUMER_ID = "CONSUMER_ID";
43 private final static String RESOURCE_URL = "RESOURCE_URL";
44 private final static String ENV_ID = "ENV_ID";
45 private final static String VNF_WORKLOAD_CONTEXT = "VNF_WORKLOAD_CONTEXT";
46 private final static String TENANT = "TENANT";
47 private final static String RESOURCE_NAME = "RESOURCE_NAME";
48 private final static String RESOURCE_TYPE = "RESOURCE_TYPE";
49 private final static String AUTH_URL = "AUTH_URL";
50 private final static String AUTH_RELM = "AUTH_RELM";
51 private final static String TOPIC_NAME = "TOPIC_NAME";
53 private final static String dateFormatPattern = "yyyy-MM-dd HH:mm:ss.SSS z";
55 private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatPattern);
57 private static DataMigration dataMigration = new DataMigration();
59 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 +
60 "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_PREV_VERSION + "\":\"" + PREV_VERSION + "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_PREV_STATE + "\":\"" + PREV_STATE +
61 "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_TYPE + "\":\"" + RESOURCE_TYPE + "\", \"" + AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID + "\":\"" + SERVICE_INSTANCE_ID +
62 "\", \"" + AuditingFieldsKey.AUDIT_INVARIANT_UUID + "\":\"" + INVARIANT_UUID + "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_CURR_VERSION + "\":\"" + CURR_VERSION +
63 "\", \"" + AuditingFieldsKey.AUDIT_RESOURCE_CURR_STATE + "\":\"" + CURR_STATE + "\", \"" + AuditingFieldsKey.AUDIT_MODIFIER_UID + "\":\"" + MODIFIER +
64 "\", \"" + AuditingFieldsKey.AUDIT_DESC + "\":\"" + DESCRIPTION + "\", \"" + AuditingFieldsKey.AUDIT_STATUS + "\":\"" + STATUS +
65 "\", \"" + AuditingFieldsKey.AUDIT_REQUEST_ID + "\":\"" + REQUEST_ID + "\", \"" + AuditingFieldsKey.AUDIT_CURR_ARTIFACT_UUID + "\":\"" + ARTIFACT_UUID +
66 "\", \"" + AuditingFieldsKey.AUDIT_PREV_ARTIFACT_UUID + "\":\"" + ARTIFACT_UUID + "\", \"" + AuditingFieldsKey.AUDIT_ARTIFACT_DATA + "\":\"" + ARTIFACT_DATA +
67 "\", \"" + AuditingFieldsKey.AUDIT_TIMESTAMP + "\":\"%s\"}";
70 private String timestampStr;
72 private HashMap<AuditingFieldsKey, String> dataMap = new HashMap<>();
76 dataMap.put(AUDIT_DESC, DESCRIPTION);
77 dataMap.put(AUDIT_STATUS, STATUS);
78 dataMap.put(AUDIT_REQUEST_ID, REQUEST_ID);
79 dataMap.put(AUDIT_SERVICE_INSTANCE_ID, SERVICE_INSTANCE_ID);
80 dataMap.put(AUDIT_MODIFIER_UID, MODIFIER);
81 dataMap.put(AUDIT_USER_BEFORE, USER_BEFORE);
82 dataMap.put(AUDIT_USER_UID, USER);
83 dataMap.put(AUDIT_USER_AFTER, USER_AFTER);
84 dataMap.put(AUDIT_AUTH_URL, AUTH_URL);
85 dataMap.put(AUDIT_AUTH_REALM, AUTH_RELM);
86 dataMap.put(AUDIT_PREV_ARTIFACT_UUID, ARTIFACT_UUID);
87 dataMap.put(AUDIT_CURR_ARTIFACT_UUID, ARTIFACT_UUID);
88 dataMap.put(AUDIT_RESOURCE_PREV_STATE, PREV_STATE);
89 dataMap.put(AUDIT_RESOURCE_PREV_VERSION, PREV_VERSION);
90 dataMap.put(AUDIT_RESOURCE_CURR_STATE, CURR_STATE);
91 dataMap.put(AUDIT_RESOURCE_CURR_VERSION, CURR_VERSION);
92 dataMap.put(AUDIT_RESOURCE_DPREV_STATUS, DPREV_STATUS);
93 dataMap.put(AUDIT_RESOURCE_DCURR_STATUS, DCURR_STATUS);
94 dataMap.put(AUDIT_INVARIANT_UUID, INVARIANT_UUID);
95 dataMap.put(AUDIT_ARTIFACT_DATA, ARTIFACT_DATA);
96 dataMap.put(AUDIT_RESOURCE_COMMENT, COMMENT);
97 dataMap.put(AUDIT_DISTRIBUTION_ID, DISTRIBUTION_ID);
98 dataMap.put(AUDIT_RESOURCE_TOSCA_NODE_TYPE, TOSCA_NODE_TYPE);
99 dataMap.put(AUDIT_DISTRIBUTION_CONSUMER_ID, CONSUMER_ID);
100 dataMap.put(AUDIT_RESOURCE_URL, RESOURCE_URL);
101 dataMap.put(AUDIT_DISTRIBUTION_ENVIRONMENT_ID, ENV_ID);
102 dataMap.put(AUDIT_DISTRIBUTION_VNF_WORKLOAD_CONTEXT, VNF_WORKLOAD_CONTEXT);
103 dataMap.put(AUDIT_DISTRIBUTION_TENANT, TENANT);
104 dataMap.put(AUDIT_RESOURCE_NAME, RESOURCE_NAME);
105 dataMap.put(AUDIT_RESOURCE_TYPE, RESOURCE_TYPE);
106 timestampStr = simpleDateFormat.format(new Date());
107 dataMap.put(AUDIT_TIMESTAMP, timestampStr);
108 dataMap.put(AUDIT_DISTRIBUTION_TOPIC_NAME, TOPIC_NAME);
113 public void createUserAdminEvent() {
114 dataMap.put(AUDIT_ACTION, AuditingActionEnum.ADD_USER.getName());
115 AuditingGenericEvent event = dataMigration.createAuditEvent(dataMap, Table.USER_ADMIN_EVENT);
116 assertThat(AuditingActionEnum.ADD_USER.getName()).isEqualTo(event.getAction());
117 verifyCommonData(event, true);
118 verifyUserAdminEvent((UserAdminEvent) event);
122 public void createResourceAdminEvent() {
123 dataMap.put(AUDIT_ACTION, AuditingActionEnum.UPDATE_RESOURCE_METADATA.getName());
124 AuditingGenericEvent event = dataMigration.createAuditEvent(dataMap, Table.RESOURCE_ADMIN_EVENT);
125 assertThat(AuditingActionEnum.UPDATE_RESOURCE_METADATA.getName()).isEqualTo(event.getAction());
126 verifyCommonData(event, true);
127 verifyResourceAdminEvent((ResourceAdminEvent)event);
131 public void createDistributionNotificationEvent() {
132 dataMap.put(AUDIT_ACTION, AuditingActionEnum.DISTRIBUTION_NOTIFY.getName());
133 AuditingGenericEvent event = dataMigration.createAuditEvent(dataMap, Table.DISTRIBUTION_NOTIFICATION_EVENT);
134 assertThat(AuditingActionEnum.DISTRIBUTION_NOTIFY.getName()).isEqualTo(event.getAction());
135 verifyCommonData(event, true);
136 verifyDistributionNotificationEvent((DistributionNotificationEvent)event);
141 public void createEventForNoneAuditTable() {
142 assertThat(dataMigration.createAuditEvent(dataMap, Table.COMPONENT_CACHE)).isNull();
147 public void createEventWhenSomeFieldValuesNotSet() {
149 dataMap.put(AUDIT_ACTION, AuditingActionEnum.AUTH_REQUEST.getName());
150 AuditingGenericEvent event = dataMigration.createAuditEvent(dataMap, Table.AUTH_EVENT);
151 assertThat(AuditingActionEnum.AUTH_REQUEST.getName()).isEqualTo(event.getAction());
152 assertThat(event.getStatus()).isNull();
153 assertThat(event.getDesc()).isNull();
154 assertThat(event.getRequestId()).isNull();
158 public void createAuthEvent() {
159 dataMap.put(AUDIT_ACTION, AuditingActionEnum.AUTH_REQUEST.getName());
160 AuditingGenericEvent event = dataMigration.createAuditEvent(dataMap, Table.AUTH_EVENT);
161 assertThat(AuditingActionEnum.AUTH_REQUEST.getName()).isEqualTo(event.getAction());
162 verifyCommonData(event, false);
163 verifyAuthEvent((AuthEvent) event);
167 public void createImportResourceEventFromEsObject() throws IOException{
168 AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.IMPORT_RESOURCE.getName(), timestampStr), Table.RESOURCE_ADMIN_EVENT);
169 assertThat(AuditingActionEnum.IMPORT_RESOURCE.getName()).isEqualTo(event.getAction());
170 verifyCommonData(event, true);
171 verifyResourceAdminEvent((ResourceAdminEvent)event);
175 public void createGetUserListEventFromEsObject() throws IOException{
176 AuditingGenericEvent event = dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, AuditingActionEnum.GET_USERS_LIST.getName(), timestampStr),
177 Table.GET_USERS_LIST_EVENT);
178 assertThat(AuditingActionEnum.GET_USERS_LIST.getName()).isEqualTo(event.getAction());
179 verifyCommonData(event, false);
180 assertThat(((GetUsersListEvent)event).getModifier()).isEqualTo(MODIFIER);
183 @Test(expected = NullPointerException.class)
184 public void createEventFromEsFailedWhenActionDoesNotExist() throws IOException {
185 dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, "WRONG", timestampStr),
186 Table.CONSUMER_EVENT);
189 @Test(expected = NullPointerException.class)
190 public void createRecordWhenJsonIsEmpty() throws IOException{
191 dataMigration.createAuditRecordForCassandra("{}",
192 Table.CONSUMER_EVENT);
195 private void verifyCommonData(AuditingGenericEvent event, boolean isServiceInstanceProvided) {
196 assertThat(STATUS).isEqualTo(event.getStatus());
197 if (isServiceInstanceProvided) {
198 assertThat(SERVICE_INSTANCE_ID).isEqualTo(event.getServiceInstanceId());
201 assertThat(event.getServiceInstanceId()).isNull();
203 assertThat(DESCRIPTION).isEqualTo(event.getDesc());
204 assertThat(REQUEST_ID).isEqualTo(event.getRequestId());
207 private void verifyUserAdminEvent(UserAdminEvent event) {
208 assertThat(USER_AFTER).isEqualTo(event.getUserAfter());
209 assertThat(USER_BEFORE).isEqualTo(event.getUserBefore());
210 verifyTimestamp(event.getTimestamp1());
213 private void verifyAuthEvent(AuthEvent event) {
214 assertThat(USER).isEqualTo(event.getUser());
215 assertThat(AUTH_URL).isEqualTo(event.getUrl());
216 assertThat(event.getAuthStatus()).isNull();
217 assertThat(AUTH_RELM).isEqualTo(event.getRealm());
220 private void verifyTimestamp(Date date) {
221 assertThat(timestampStr).isEqualTo(simpleDateFormat.format(date));
224 private void verifyResourceAdminEvent(ResourceAdminEvent event) {
225 assertThat(CURR_STATE).isEqualTo(event.getCurrState());
226 assertThat(CURR_VERSION).isEqualTo(event.getCurrVersion());
227 assertThat(ARTIFACT_UUID).isEqualTo(event.getCurrArtifactUUID());
228 assertThat(PREV_STATE).isEqualTo(event.getPrevState());
229 assertThat(PREV_VERSION).isEqualTo(event.getPrevVersion());
230 assertThat(ARTIFACT_UUID).isEqualTo(event.getPrevArtifactUUID());
231 assertThat(INVARIANT_UUID).isEqualTo(event.getInvariantUUID());
232 assertThat(ARTIFACT_DATA).isEqualTo(event.getArtifactData());
233 assertThat(RESOURCE_NAME).isEqualTo(event.getResourceName());
234 assertThat(RESOURCE_TYPE).isEqualTo(event.getResourceType());
235 verifyTimestamp(event.getTimestamp1());
236 assertThat(TOSCA_NODE_TYPE).isEqualTo( event.getToscaNodeType());
239 private void verifyDistributionNotificationEvent(DistributionNotificationEvent event) {
240 assertThat(CURR_STATE).isEqualTo(event.getCurrState());
241 assertThat(CURR_VERSION).isEqualTo(event.getCurrVersion());
242 assertThat(TOPIC_NAME).isEqualTo(event.getTopicName());
243 assertThat(DISTRIBUTION_ID).isEqualTo(event.getDid());
244 assertThat(ENV_ID).isEqualTo(event.getEnvId());
245 assertThat(VNF_WORKLOAD_CONTEXT).isEqualTo(event.getVnfWorkloadContext());
246 assertThat(TENANT).isEqualTo(event.getTenant());
247 verifyTimestamp(event.getTimestamp1());