re base code
[sdc.git] / asdctool / src / test / java / org / openecomp / sdc / asdctool / impl / DataMigrationTest.java
1 package org.openecomp.sdc.asdctool.impl;
2
3 import org.junit.Before;
4 import org.junit.Test;
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;
10
11 import java.io.IOException;
12 import java.text.SimpleDateFormat;
13 import java.util.Date;
14 import java.util.HashMap;
15
16 import static org.assertj.core.api.Assertions.assertThat;
17 import static org.openecomp.sdc.common.datastructure.AuditingFieldsKey.*;
18
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";
30
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";
52
53     private final static String dateFormatPattern = "yyyy-MM-dd HH:mm:ss.SSS z";
54
55     private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatPattern);
56
57     private static DataMigration dataMigration = new DataMigration();
58
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\"}";
68
69
70     private String timestampStr;
71
72     private HashMap<AuditingFieldsKey, String> dataMap = new HashMap<>();
73
74     @Before
75     public void setUp() {
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);
109
110     }
111
112     @Test
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);
119     }
120
121     @Test
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);
128     }
129
130     @Test
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);
137     }
138
139
140     @Test
141     public void createEventForNoneAuditTable() {
142         assertThat(dataMigration.createAuditEvent(dataMap, Table.COMPONENT_CACHE)).isNull();
143
144     }
145
146     @Test
147     public void createEventWhenSomeFieldValuesNotSet() {
148         dataMap.clear();
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();
155     }
156
157     @Test
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);
164     }
165
166     @Test
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);
172     }
173
174     @Test
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);
181     }
182
183     @Test(expected = NullPointerException.class)
184     public void createEventFromEsFailedWhenActionDoesNotExist() throws IOException {
185         dataMigration.createAuditRecordForCassandra(String.format(ES_STRING, "WRONG", timestampStr),
186                 Table.CONSUMER_EVENT);
187     }
188
189     @Test(expected = NullPointerException.class)
190     public void createRecordWhenJsonIsEmpty() throws IOException{
191         dataMigration.createAuditRecordForCassandra("{}",
192                 Table.CONSUMER_EVENT);
193     }
194
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());
199         }
200         else {
201             assertThat(event.getServiceInstanceId()).isNull();
202         }
203         assertThat(DESCRIPTION).isEqualTo(event.getDesc());
204         assertThat(REQUEST_ID).isEqualTo(event.getRequestId());
205     }
206
207     private void verifyUserAdminEvent(UserAdminEvent event) {
208         assertThat(USER_AFTER).isEqualTo(event.getUserAfter());
209         assertThat(USER_BEFORE).isEqualTo(event.getUserBefore());
210         verifyTimestamp(event.getTimestamp1());
211     }
212
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());
218     }
219
220     private void verifyTimestamp(Date date) {
221         assertThat(timestampStr).isEqualTo(simpleDateFormat.format(date));
222     }
223
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());
237     }
238
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());
248     }
249
250 }