re base code
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / ci / tests / utils / validation / AuditValidationUtils.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 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 package org.openecomp.sdc.ci.tests.utils.validation;
22
23 import com.datastax.driver.core.ColumnDefinitions;
24 import com.datastax.driver.core.Row;
25 import org.apache.log4j.Logger;
26 import org.codehaus.jettison.json.JSONArray;
27 import org.codehaus.jettison.json.JSONException;
28 import org.codehaus.jettison.json.JSONObject;
29 import org.javatuples.Pair;
30 import org.openecomp.sdc.be.dao.api.ActionStatus;
31 import org.openecomp.sdc.be.datatypes.elements.ConsumerDataDefinition;
32 import org.openecomp.sdc.be.model.ArtifactDefinition;
33 import org.openecomp.sdc.be.model.LifecycleStateEnum;
34 import org.openecomp.sdc.be.model.User;
35 import org.openecomp.sdc.be.model.category.CategoryDefinition;
36 import org.openecomp.sdc.be.model.category.GroupingDefinition;
37 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
38 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
39 import org.openecomp.sdc.ci.tests.api.Urls;
40 import org.openecomp.sdc.ci.tests.config.Config;
41 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
42 import org.openecomp.sdc.ci.tests.datatypes.enums.AuditEnum;
43 import org.openecomp.sdc.ci.tests.datatypes.enums.AuditJsonKeysEnum;
44 import org.openecomp.sdc.ci.tests.datatypes.enums.ComponentType;
45 import org.openecomp.sdc.ci.tests.datatypes.enums.ErrorInfo;
46 import org.openecomp.sdc.ci.tests.datatypes.expected.*;
47 import org.openecomp.sdc.ci.tests.datatypes.http.HttpRequest;
48 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
49 import org.openecomp.sdc.ci.tests.run.StartTest;
50 import org.openecomp.sdc.ci.tests.utils.Utils;
51 import org.openecomp.sdc.ci.tests.utils.cassandra.CassandraUtils;
52 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
53 import org.openecomp.sdc.ci.tests.utils.rest.CategoryRestUtils.CategoryAuditJsonKeysEnum;
54 import org.openecomp.sdc.ci.tests.utils.rest.ConsumerRestUtils.EcompConsumerAuditJsonKeysEnum;
55 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
56 import org.openecomp.sdc.common.api.Constants;
57 import org.openecomp.sdc.common.datastructure.AuditingFieldsKey;
58
59 import java.io.FileNotFoundException;
60 import java.io.IOException;
61 import java.util.*;
62
63 import static org.testng.AssertJUnit.assertEquals;
64 import static org.testng.AssertJUnit.assertTrue;
65
66 public class AuditValidationUtils {
67         protected static Logger logger = Logger.getLogger(AuditValidationUtils.class.getName());
68         private static final String auditKeySpaceName = "sdcaudit";
69
70         public AuditValidationUtils() {
71                 super();
72
73                 StartTest.enableLogger();
74                 logger = Logger.getLogger(AuditValidationUtils.class.getName());
75
76         }
77
78         public static String buildAuditDescription(ErrorInfo errorInfo, List<String> errorVariablesList) {
79                 String auditDesc;
80                 if(errorInfo.getMessageId() != null){
81                         auditDesc = errorInfo.getMessageId() + ": " + errorInfo.getMessage();
82                         }else{
83                                 auditDesc = errorInfo.getMessage();
84                         }
85                 
86 //              if(! variables.isEmpty() && variables.get(0) != null && ! variables.get(0).isEmpty()){
87 //                      for (int i = 0; i < variables.size(); i++) {
88 //                              if (auditDesc.contains("%" + (i + 1))) {
89 //                                      auditDesc = auditDesc.replace("%" + (i + 1), variables.get(i));
90 //                              }
91 //                      }
92 //              }
93                 if(errorVariablesList != null && ! errorVariablesList.isEmpty() && errorVariablesList.get(0) != null){
94                         for (int i = 0; i < errorVariablesList.size(); i++) {
95                                 if (auditDesc.contains("%" + (i + 1))) {
96                                         auditDesc = auditDesc.replace("%" + (i + 1), errorVariablesList.get(i));
97                                 }
98                         }
99                 }
100                 return auditDesc;
101         }
102
103         public static String getModifierString(String userName, String uid) {
104
105                 if (userName.isEmpty() && uid.isEmpty())
106                         return "(UNKNOWN)";
107
108                 StringBuilder sb = new StringBuilder();
109                 sb.append(userName).append("(").append(uid).append(")");
110                 return sb.toString();
111
112         }
113
114         public static void validateAuditDownloadExternalAPI(ExpectedResourceAuditJavaObject resourceAuditJavaObject,
115                         String action, String body, boolean checkAllFields) throws Exception {
116                 Map<String, Object> actualAuditRecords = parseAuditResourceByAction(action, null);
117
118                 validateField(actualAuditRecords, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
119                 validateField(actualAuditRecords, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceName());
120                 validateField(actualAuditRecords, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceType());
121                 validateField(actualAuditRecords, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getStatus());
122                 validateField(actualAuditRecords, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), resourceAuditJavaObject.getDesc());
123
124         }
125
126         public static void validateAudit(ExpectedResourceAuditJavaObject resourceAuditJavaObject, String action, String body, boolean checkAllFields) throws Exception {
127                 Map<String, Object> actualAuditRecords = parseAuditResourceByAction(action, null);
128
129                 if ((resourceAuditJavaObject.getModifierName() != null) && (resourceAuditJavaObject.getModifierUid() != null)) {
130                         resourceAuditJavaObject.setModifierUid(getModifierString(resourceAuditJavaObject.getModifierName(),
131                                         resourceAuditJavaObject.getModifierUid()));
132                 }
133
134                 validateField(actualAuditRecords, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
135                 validateField(actualAuditRecords, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceName());
136                 validateField(actualAuditRecords, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceType());
137                 validateField(actualAuditRecords, AuditJsonKeysEnum.PREV_VERSION.getAuditJsonKeyName(), resourceAuditJavaObject.getPrevVersion());
138                 validateField(actualAuditRecords, AuditJsonKeysEnum.CURR_VERSION.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrVersion());
139
140                 validateField(actualAuditRecords, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), resourceAuditJavaObject.getModifierUid());
141                 validateField(actualAuditRecords, AuditJsonKeysEnum.PREV_STATE.getAuditJsonKeyName(), resourceAuditJavaObject.getPrevState());
142                 validateField(actualAuditRecords, AuditJsonKeysEnum.CURR_STATE.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrState());
143                 validateField(actualAuditRecords, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getStatus());
144                 validateField(actualAuditRecords, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), resourceAuditJavaObject.getDesc());
145                 validateField(actualAuditRecords, AuditJsonKeysEnum.COMMENT.getAuditJsonKeyName(), resourceAuditJavaObject.getComment());
146                 validateField(actualAuditRecords, AuditJsonKeysEnum.TOSCA_NODE_TYPE.getAuditJsonKeyName(), resourceAuditJavaObject.getToscaNodeType());
147                 validateField(actualAuditRecords, AuditJsonKeysEnum.CURR_ARTIFACT_UUID.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrArtifactUuid());
148                 validateField(actualAuditRecords, AuditJsonKeysEnum.PREV_ARTIFACT_UUID.getAuditJsonKeyName(), resourceAuditJavaObject.getPrevArtifactUuid());
149
150                 validateAtifactDataField(actualAuditRecords, AuditJsonKeysEnum.ARTIFACT_DATA.getAuditJsonKeyName(), resourceAuditJavaObject.getArtifactData(), checkAllFields);
151         }
152
153         public static void validateExternalAudit(ExpectedExternalAudit externalAuditObject, String action, Map<AuditingFieldsKey, String> body) throws Exception {
154
155                 Map<String, Object> actualAuditRecord = parseAuditResourceByAction(action, body);
156
157                 validateField(actualAuditRecord, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
158                 validateField(actualAuditRecord, AuditJsonKeysEnum.CONSUMER_ID.getAuditJsonKeyName(), externalAuditObject.getCONSUMER_ID());
159                 // TODO
160                 validateField(actualAuditRecord, AuditJsonKeysEnum.RESOURCE_URL.getAuditJsonKeyName(), externalAuditObject.getRESOURCE_URL());
161                 //TODO
162                 validateField(actualAuditRecord, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), externalAuditObject.getRESOURCE_NAME());
163                 validateField(actualAuditRecord, AuditJsonKeysEnum.SERVICE_INSTANCE_ID.getAuditJsonKeyName(), externalAuditObject.getSERVICE_INSTANCE_ID());
164                 //TODO
165                 validateField(actualAuditRecord, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), externalAuditObject.getRESOURCE_TYPE());
166                 validateField(actualAuditRecord, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), externalAuditObject.getSTATUS());
167                 validateField(actualAuditRecord, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), externalAuditObject.getDESC());
168                 //TODO
169 //              validateField(actualAuditRecord, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), externalAuditObject.getMODIFIER());
170                 validateField(actualAuditRecord, AuditJsonKeysEnum.PREV_ARTIFACT_UUID.getAuditJsonKeyName(), externalAuditObject.getPREV_ARTIFACT_UUID());
171                 validateField(actualAuditRecord, AuditJsonKeysEnum.CURR_ARTIFACT_UUID.getAuditJsonKeyName(), externalAuditObject.getCURR_ARTIFACT_UUID());
172                 //TODO
173                 validateField(actualAuditRecord, AuditJsonKeysEnum.ARTIFACT_DATA.getAuditJsonKeyName(), externalAuditObject.getARTIFACT_DATA());
174
175         }
176
177         public enum ArtifactDataFieldEnum {
178                 attGroup, artLable, artType, artName, artTimeout, artPayloadUUID, artVersion, artUUID
179         }
180
181         private static void validateAtifactDataField(Map<String, Object> map, String auditJsonKeyName,
182                         String expectedArtifactData, boolean checkAllFields) {
183                 Map<ArtifactDataFieldEnum, String> expectedArtifactDataFileds = new HashMap<ArtifactDataFieldEnum, String>();
184                 Map<ArtifactDataFieldEnum, String> actualAtifactDataFileds = new HashMap<ArtifactDataFieldEnum, String>();
185                 if (expectedArtifactData != null) {
186                         String[] expected = expectedArtifactData.split(",");
187
188                         assertTrue("Audit field " + auditJsonKeyName + " not found", map.containsKey(auditJsonKeyName));
189                         String actualValue = (String) map.get(auditJsonKeyName);
190                         String[] actual = actualValue.split(",");
191
192                         if (expected.length == 1 && actual.length == 1) {
193                                 assertEquals(expectedArtifactData, actualValue);
194                                 return;
195                         }
196
197                         assertEquals(ArtifactDataFieldEnum.values().length, expected.length);
198                         assertEquals(ArtifactDataFieldEnum.values().length, actual.length);
199
200                         for (ArtifactDataFieldEnum field : ArtifactDataFieldEnum.values()) {
201
202                                 expectedArtifactDataFileds.put(field, expected[field.ordinal()]);
203                                 actualAtifactDataFileds.put(field, actual[field.ordinal()]);
204                         }
205                         for (Map.Entry<ArtifactDataFieldEnum, String> entry : expectedArtifactDataFileds.entrySet()) {
206                                 ArtifactDataFieldEnum field = entry.getKey();
207                                 if (checkAllFields || (!field.equals(ArtifactDataFieldEnum.artVersion)
208                                                 && !field.equals(ArtifactDataFieldEnum.artUUID))) {
209                                         assertTrue("Audit field ArtifactData dosn't containt " + field,
210                                                         actualAtifactDataFileds.containsKey(field));
211                                         assertEquals("Audit field ArtifactData dosn't equal " + field,
212                                                         expectedArtifactDataFileds.get(field), actualAtifactDataFileds.get(field));
213                                 }
214
215                         }
216                 }
217         }
218
219         // //Benny
220         public static void validateEcompConsumerAudit(ExpectedEcomConsumerAudit ecompConsumerAuditJavaObject, String action) throws Exception {
221
222                 String fixedAction = BaseRestUtils.encodeUrlForDownload(action);
223                 Map<String, Object> map2 = parseAuditResourceByAction(fixedAction, null);
224
225                 validateField(map2, EcompConsumerAuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), ecompConsumerAuditJavaObject.getModifier());
226                 validateField(map2, EcompConsumerAuditJsonKeysEnum.ECOMP_USER.getAuditJsonKeyName(), ecompConsumerAuditJavaObject.getEcomUser());
227                 validateField(map2, EcompConsumerAuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), ecompConsumerAuditJavaObject.getStatus());
228                 validateField(map2, EcompConsumerAuditJsonKeysEnum.DESC.getAuditJsonKeyName(), ecompConsumerAuditJavaObject.getDesc());
229                 validateField(map2, EcompConsumerAuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
230         }
231
232         public static void ecompConsumerAuditSuccess(String action, ConsumerDataDefinition consumerDataDefinition, User user, int status) throws Exception {
233                 ExpectedEcomConsumerAudit expectedEcomConsumerAuditJavaObject = new ExpectedEcomConsumerAudit();
234                 expectedEcomConsumerAuditJavaObject.setAction(action);
235                 expectedEcomConsumerAuditJavaObject.setEcomUser(
236                                 consumerDataDefinition.getConsumerName() + "," + consumerDataDefinition.getConsumerSalt().toLowerCase()
237                                                 + "," + consumerDataDefinition.getConsumerPassword().toLowerCase());
238                 expectedEcomConsumerAuditJavaObject.setStatus(String.valueOf(status));
239                 expectedEcomConsumerAuditJavaObject.setDesc("OK");
240                 expectedEcomConsumerAuditJavaObject.setModifier(user.getFullName() + "(" + user.getUserId() + ")");
241                 AuditValidationUtils.validateEcompConsumerAudit(expectedEcomConsumerAuditJavaObject, action);
242         }
243
244         public static void createEcompConsumerAuditFailure(String action, ConsumerDataDefinition consumerDataDefinition,
245                         User user, ActionStatus errorMessage, Object... variables) throws Exception {
246                 // validate audit
247                 ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(errorMessage.name());
248                 ExpectedEcomConsumerAudit expectedEcomConsumerAuditJavaObject = new ExpectedEcomConsumerAudit();
249                 expectedEcomConsumerAuditJavaObject.setAction(action);
250                 expectedEcomConsumerAuditJavaObject.setEcomUser(
251                                 consumerDataDefinition.getConsumerName() + "," + consumerDataDefinition.getConsumerSalt().toLowerCase()
252                                                 + "," + consumerDataDefinition.getConsumerPassword().toLowerCase());
253                 expectedEcomConsumerAuditJavaObject.setStatus(errorInfo.getCode().toString());
254                 expectedEcomConsumerAuditJavaObject.setDesc(errorInfo.getAuditDesc(variables));
255                 expectedEcomConsumerAuditJavaObject.setModifier(user.getFullName() + "(" + user.getUserId() + ")");
256                 AuditValidationUtils.validateEcompConsumerAudit(expectedEcomConsumerAuditJavaObject, action);
257         }
258
259         public static void deleteEcompConsumerAuditFailure(String action, ConsumerDataDefinition consumerDataDefinition,
260                         User user, ActionStatus errorMessage, Object... variables) throws Exception {
261                 // validate audit
262                 ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(errorMessage.name());
263                 ExpectedEcomConsumerAudit expectedEcomConsumerAuditJavaObject = new ExpectedEcomConsumerAudit();
264                 // String auditAction = ADD_ECOMP_USER_CREDENTIALS_AUDIT_ACTION;
265                 expectedEcomConsumerAuditJavaObject.setAction(action);
266                 expectedEcomConsumerAuditJavaObject.setEcomUser(consumerDataDefinition.getConsumerName());
267                 expectedEcomConsumerAuditJavaObject.setStatus(errorInfo.getCode().toString());
268                 expectedEcomConsumerAuditJavaObject.setDesc(errorInfo.getAuditDesc(variables));
269                 expectedEcomConsumerAuditJavaObject.setModifier(user.getFullName() + "(" + user.getUserId() + ")");
270                 AuditValidationUtils.validateEcompConsumerAudit(expectedEcomConsumerAuditJavaObject, action);
271         }
272
273         ////////////////////// US571255
274         public static void GetListOfUsersByRolesAuditFailure(String action, String roles, int status, User userModifier,
275                         ActionStatus errorMessage, Object... variables) throws Exception {
276                 ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(errorMessage.name());
277                 ExpectedGetUserListAudit expectedGetListOfUsersAuditJavaObject = new ExpectedGetUserListAudit(); // String
278                                                                                                                                                                                                                         // auditAction
279                                                                                                                                                                                                                         // =
280                                                                                                                                                                                                                         // ADD_ECOMP_USER_CREDENTIALS_AUDIT_ACTION;
281                 expectedGetListOfUsersAuditJavaObject.setAction(action);
282                 expectedGetListOfUsersAuditJavaObject.setStatus(String.valueOf(status));
283                 expectedGetListOfUsersAuditJavaObject.setDesc(errorInfo.getAuditDesc(variables));
284
285                 expectedGetListOfUsersAuditJavaObject.setDetails(roles);
286                 if (errorMessage == ActionStatus.USER_INACTIVE || errorMessage == ActionStatus.MISSING_INFORMATION) {
287                         expectedGetListOfUsersAuditJavaObject.setModifier("(UNKNOWN)");
288                 } else {
289                         expectedGetListOfUsersAuditJavaObject
290                                         .setModifier(userModifier.getFullName() + "(" + userModifier.getUserId() + ")");
291                 }
292                 AuditValidationUtils.validateAuditGetListOfUsersByRoles(expectedGetListOfUsersAuditJavaObject, action);
293         }
294
295         public static void GetListOfUsersByRolesAuditSuccess(String action, String roles, User user, int status)
296                         throws Exception {
297                 ExpectedGetUserListAudit expectedGetListOfUsersAuditJavaObject = new ExpectedGetUserListAudit();
298                 expectedGetListOfUsersAuditJavaObject.setAction(action);
299                 expectedGetListOfUsersAuditJavaObject.setStatus(String.valueOf(status));
300                 expectedGetListOfUsersAuditJavaObject.setDesc("OK");
301                 expectedGetListOfUsersAuditJavaObject.setModifier(user.getFullName() + "(" + user.getUserId() + ")");
302                 expectedGetListOfUsersAuditJavaObject.setDetails(roles);
303                 validateAuditGetListOfUsersByRoles(expectedGetListOfUsersAuditJavaObject, action);
304         }
305
306         public static void validateAuditGetListOfUsersByRoles(ExpectedGetUserListAudit GetListOfUsersAuditJavaObject,
307                         String action) throws Exception {
308
309                 Map<String, Object> map2 = parseAuditResourceByAction(action, null);
310                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
311                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), GetListOfUsersAuditJavaObject.getStatus());
312                 validateField(map2, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), GetListOfUsersAuditJavaObject.getModifier());
313                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), GetListOfUsersAuditJavaObject.getDesc());
314                 validateField(map2, AuditJsonKeysEnum.DETAILS.getAuditJsonKeyName(), GetListOfUsersAuditJavaObject.getDetails());
315         }
316
317         public static void validateAuditImport(ExpectedResourceAuditJavaObject resourceAuditJavaObject, String action) throws Exception {
318
319                 Map<String, Object> map2 = parseAuditResourceByAction(action, null);
320
321                 resourceAuditJavaObject.setModifierUid(getModifierString(resourceAuditJavaObject.getModifierName(), resourceAuditJavaObject.getModifierUid()));
322
323                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
324                 validateField(map2, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceType());
325                 validateField(map2, AuditJsonKeysEnum.PREV_VERSION.getAuditJsonKeyName(), resourceAuditJavaObject.getPrevVersion());
326                 validateField(map2, AuditJsonKeysEnum.CURR_VERSION.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrVersion());
327                 validateField(map2, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), resourceAuditJavaObject.getModifierUid());
328                 validateField(map2, AuditJsonKeysEnum.PREV_STATE.getAuditJsonKeyName(), resourceAuditJavaObject.getPrevState());
329                 validateField(map2, AuditJsonKeysEnum.CURR_STATE.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrState());
330                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getStatus());
331                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), resourceAuditJavaObject.getDesc());
332
333         }
334
335         public static void validateAuditDistribution(ExpectedResourceAuditJavaObject resourceAuditJavaObject, String action) throws Exception {
336
337                 Map<String, Object> map2 = parseAuditResourceByAction(action, null);
338
339                 resourceAuditJavaObject.setModifierUid(getModifierString(resourceAuditJavaObject.getModifierName(), resourceAuditJavaObject.getModifierUid()));
340
341                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
342                 validateField(map2, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceName());
343                 validateField(map2, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceType());
344                 validateField(map2, AuditJsonKeysEnum.CURR_VERSION.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrVersion());
345                 validateField(map2, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), resourceAuditJavaObject.getModifierUid());
346                 validateField(map2, AuditJsonKeysEnum.CURR_STATE.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrState());
347                 validateField(map2, AuditJsonKeysEnum.DPREV_STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getDprevStatus());
348                 validateField(map2, AuditJsonKeysEnum.DCURR_STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getDcurrStatus());
349                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getStatus());
350                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), resourceAuditJavaObject.getDesc());
351                 validateField(map2, AuditJsonKeysEnum.COMMENT.getAuditJsonKeyName(), resourceAuditJavaObject.getComment());
352                 validateField(map2, AuditJsonKeysEnum.DID.getAuditJsonKeyName(), resourceAuditJavaObject.getDistributionId());
353
354         }
355
356         // Benny
357         public static void validateAudit_Distribution(ExpectedResourceAuditJavaObject resourceAuditJavaObject, String action) throws Exception {
358
359                 List<Map<String, Object>> actionToList = getAuditListByAction(resourceAuditJavaObject.getAction(), 1);
360                 Map<String, Object> map2 = actionToList.get(0);
361                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
362                 validateField(map2, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceName());
363                 validateField(map2, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceType());
364                 validateField(map2, AuditJsonKeysEnum.CURR_VERSION.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrVersion());
365                 validateField(map2, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), resourceAuditJavaObject.getMODIFIER());
366                 validateField(map2, AuditJsonKeysEnum.CURR_STATE.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrState());
367                 validateField(map2, AuditJsonKeysEnum.DPREV_STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getDprevStatus());
368                 validateField(map2, AuditJsonKeysEnum.DCURR_STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getDcurrStatus());
369                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getStatus());
370                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), resourceAuditJavaObject.getDesc());
371                 validateField(map2, AuditJsonKeysEnum.COMMENT.getAuditJsonKeyName(), resourceAuditJavaObject.getComment());
372
373         }
374
375         public void validateAuditNotification(ExpectedResourceAuditJavaObject resourceAuditJavaObject, String action) throws Exception {
376
377                 Map<String, Object> map2 = parseAuditResourceByAction(action, null);
378
379                 resourceAuditJavaObject.setModifierUid(getModifierString(resourceAuditJavaObject.getModifierName(), resourceAuditJavaObject.getModifierUid()));
380
381                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
382                 validateField(map2, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceName());
383                 validateField(map2, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceType());
384                 validateField(map2, AuditJsonKeysEnum.CURR_VERSION.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrVersion());
385                 validateField(map2, AuditJsonKeysEnum.CURR_STATE.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrState());
386                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getStatus());
387                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), resourceAuditJavaObject.getDesc());
388                 validateField(map2, AuditJsonKeysEnum.DID.getAuditJsonKeyName(), resourceAuditJavaObject.getDistributionId());
389                 validateField(map2, AuditJsonKeysEnum.TOPIC_NAME.getAuditJsonKeyName(), resourceAuditJavaObject.getTopicName());
390
391         }
392
393         public static void validateAudit(ExpectedDistDownloadAudit expectedDistDownloadAudit, String action) throws Exception {
394
395                 Map<String, Object> map2 = parseAuditResourceByAction(action, null);
396
397                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
398                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), expectedDistDownloadAudit.getStatus());
399                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), expectedDistDownloadAudit.getDesc());
400                 validateField(map2, AuditJsonKeysEnum.CONSUMER_ID.getAuditJsonKeyName(), expectedDistDownloadAudit.getConsumerId());
401                 validateField(map2, AuditJsonKeysEnum.RESOURCE_URL.getAuditJsonKeyName(), expectedDistDownloadAudit.getResourceUrl());
402         }
403         
404         public static void validateAuditExternalSearchAPI(ExpectedExternalAudit expectedDistDownloadAudit, String action, Map<AuditingFieldsKey, String> body)
405                         throws Exception {
406
407                 Map<String, Object> map2 = parseAuditResourceByAction(action, body);
408
409                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
410                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), expectedDistDownloadAudit.getSTATUS());
411                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), expectedDistDownloadAudit.getDESC());
412                 validateField(map2, AuditJsonKeysEnum.CONSUMER_ID.getAuditJsonKeyName(), expectedDistDownloadAudit.getCONSUMER_ID());
413                 validateField(map2, AuditJsonKeysEnum.RESOURCE_URL.getAuditJsonKeyName(), expectedDistDownloadAudit.getRESOURCE_URL());
414         }
415         
416         public static void validateAuditExternalCreateResource(ExpectedResourceAuditJavaObject expectedExternalAudit, String action, Map<AuditingFieldsKey, String> body) throws Exception {
417         Map<String, Object>     map2 = parseAuditResourceByAction(action, body);
418
419                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
420                 validateField(map2, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), expectedExternalAudit.getResourceName());
421                 validateField(map2, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), expectedExternalAudit.getResourceType());
422                 validateField(map2, AuditJsonKeysEnum.CONSUMER_ID.getAuditJsonKeyName(), expectedExternalAudit.getCONSUMER_ID());
423                 validateField(map2, AuditJsonKeysEnum.RESOURCE_URL.getAuditJsonKeyName(), expectedExternalAudit.getRESOURCE_URL());
424                 validateField(map2, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), expectedExternalAudit.getMODIFIER());
425                 
426                 validateField(map2, AuditJsonKeysEnum.PREV_VERSION.getAuditJsonKeyName(), expectedExternalAudit.getPrevVersion());
427                 validateField(map2, AuditJsonKeysEnum.CURR_VERSION.getAuditJsonKeyName(), expectedExternalAudit.getCurrVersion());
428                 validateField(map2, AuditJsonKeysEnum.PREV_STATE.getAuditJsonKeyName(), expectedExternalAudit.getPrevState());
429                 validateField(map2, AuditJsonKeysEnum.CURR_STATE.getAuditJsonKeyName(), expectedExternalAudit.getCurrState());
430                 
431                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), expectedExternalAudit.getStatus());
432                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), expectedExternalAudit.getDesc());
433         }
434         
435         public static void validateAuditExternalChangeAssetLifeCycle(ExpectedResourceAuditJavaObject expectedExternalAudit, String action, Map<AuditingFieldsKey, String> body) throws Exception {
436                 Map<String, Object> map2 = parseAuditResourceByAction(action, body);
437
438                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
439                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), expectedExternalAudit.getDesc());
440                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), expectedExternalAudit.getStatus());
441
442                 validateField(map2, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), expectedExternalAudit.getResourceType());
443                 validateField(map2, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), expectedExternalAudit.getResourceName());
444                 validateField(map2, AuditJsonKeysEnum.CONSUMER_ID.getAuditJsonKeyName(), expectedExternalAudit.getCONSUMER_ID());
445                 validateField(map2, AuditJsonKeysEnum.RESOURCE_URL.getAuditJsonKeyName(), expectedExternalAudit.getRESOURCE_URL());
446                 validateField(map2, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), expectedExternalAudit.getMODIFIER());
447                 
448                 validateField(map2, AuditJsonKeysEnum.PREV_VERSION.getAuditJsonKeyName(), expectedExternalAudit.getPrevVersion());
449                 validateField(map2, AuditJsonKeysEnum.CURR_VERSION.getAuditJsonKeyName(), expectedExternalAudit.getCurrVersion());
450                 validateField(map2, AuditJsonKeysEnum.PREV_STATE.getAuditJsonKeyName(), expectedExternalAudit.getPrevState());
451                 validateField(map2, AuditJsonKeysEnum.CURR_STATE.getAuditJsonKeyName(), expectedExternalAudit.getCurrState());
452
453         }
454
455         public void validateAuditDeploy(ExpectedResourceAuditJavaObject resourceAuditJavaObject, String action)
456                         throws Exception {
457
458                 Map<String, Object> map2 = parseAuditResourceByAction(action, null);
459
460                 resourceAuditJavaObject.setModifierUid(getModifierString(resourceAuditJavaObject.getModifierName(), resourceAuditJavaObject.getModifierUid()));
461
462                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
463                 validateField(map2, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceName());
464                 validateField(map2, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceType());
465                 validateField(map2, AuditJsonKeysEnum.CURR_VERSION.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrVersion());
466                 validateField(map2, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), resourceAuditJavaObject.getModifierUid());
467                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getStatus());
468                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), resourceAuditJavaObject.getDesc());
469                 validateField(map2, AuditJsonKeysEnum.DID.getAuditJsonKeyName(), resourceAuditJavaObject.getDistributionId());
470
471         }
472
473         public static void validateAuditProduct(ExpectedProductAudit productExpectedAudit, String action,
474                         AuditJsonKeysEnum... additionalFields) throws Exception {
475
476                 Map<String, Object> map2 = parseAuditResourceByAction(action, null);
477
478                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
479                 validateField(map2, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), productExpectedAudit.getRESOURCE_NAME());
480                 validateField(map2, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), productExpectedAudit.getRESOURCE_TYPE());
481                 validateField(map2, AuditJsonKeysEnum.PREV_VERSION.getAuditJsonKeyName(), productExpectedAudit.getPREV_VERSION());
482                 validateField(map2, AuditJsonKeysEnum.CURR_VERSION.getAuditJsonKeyName(), productExpectedAudit.getCURR_VERSION());
483                 validateField(map2, AuditJsonKeysEnum.PREV_STATE.getAuditJsonKeyName(), productExpectedAudit.getPREV_STATE());
484                 validateField(map2, AuditJsonKeysEnum.CURR_STATE.getAuditJsonKeyName(), productExpectedAudit.getCURR_STATE());
485                 validateField(map2, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), productExpectedAudit.getMODIFIER());
486                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), productExpectedAudit.getSTATUS());
487                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), productExpectedAudit.getDESC());
488                 validateField(map2, AuditJsonKeysEnum.SERVICE_INSTANCE_ID.getAuditJsonKeyName(), productExpectedAudit.getSERVICE_INSTANCE_ID());
489                 if (additionalFields != null) {
490                         List<AuditJsonKeysEnum> fieldsList = Arrays.asList(additionalFields);
491                         if (fieldsList.contains(AuditJsonKeysEnum.COMMENT)) {
492                                 validateField(map2, AuditJsonKeysEnum.COMMENT.getAuditJsonKeyName(), productExpectedAudit.getCOMMENT());
493                         }
494                 }
495         }
496
497         private static List<Map<String, Object>> getAuditListByAction(String action, int expectedNumOfAudit)
498                         throws Exception {
499                 List<Map<String, Object>> actionToList = parseAuditResourceByActionToList(action, null);
500                 assertEquals("recieved different audits number than expected", expectedNumOfAudit, actionToList.size());
501                 return actionToList;
502         }
503
504         public static void validateAuthenticationAudit(ExpectedAuthenticationAudit expectedAudit) throws Exception {
505                 List<Map<String, Object>> actionToList = getAuditListByAction(expectedAudit.getAction(), 1);
506                 assertEquals("expected number of ES action is 1", 1, actionToList.size());
507
508                 Map<String, Object> map = actionToList.get(0);
509                 validateField(map, AuditEnum.ACTION.getValue(), expectedAudit.getAction());
510                 validateField(map, AuditEnum.URL.getValue(), expectedAudit.getUrl());
511                 validateField(map, AuditEnum.USER.getValue(), expectedAudit.getUser());
512                 validateField(map, AuditEnum.AUTH_STATUS.getValue(), expectedAudit.getAuthStatus());
513                 validateField(map, AuditEnum.REALM.getValue(), expectedAudit.getRealm());
514
515         }
516
517         private static void validateField(Map<String, Object> actualAuditRecord, String jsonField, Object expectedValue) {
518                 if (expectedValue == null) {
519                         // || changed to &&
520                         if (actualAuditRecord.containsKey(jsonField)) {
521                                 assertTrue("Audit field " + jsonField + ": expected null, actual " + actualAuditRecord.get(jsonField),
522                                                 actualAuditRecord.get(jsonField).toString().equals("null")
523                                                                 || actualAuditRecord.get(jsonField).toString().equals(Constants.EMPTY_STRING));
524                         }
525
526                 } else {
527                         assertTrue("Audit field " + jsonField + " not found in actual", actualAuditRecord.containsKey(jsonField));
528                         Object foundValue = actualAuditRecord.get(jsonField);
529                         compareElements(expectedValue, foundValue);
530                 }
531         }
532
533         public static void compareElements(Object expectedValue, Object foundValue) {
534                 if (expectedValue instanceof String) {
535                         assertTrue("Actual value " + foundValue + " is not string", foundValue instanceof String);
536                         assertTrue("Expected " + "[" + expectedValue +"]" + " not equal to actual [" + foundValue + "]", foundValue.equals(expectedValue));
537                 }
538                 /*
539                  * else if( expectedValue instanceof Number){ assertTrue(foundValue
540                  * instanceof Number); assertTrue(foundValue == expectedValue); }
541                  */
542                 else if (expectedValue instanceof Boolean) {
543                         assertTrue(foundValue instanceof Boolean);
544                         assertTrue(foundValue == expectedValue);
545                 } else if (expectedValue instanceof Map) {
546                         assertTrue(foundValue instanceof Map);
547                         Map<String, Object> foundMap = (Map<String, Object>) foundValue;
548                         Map<String, Object> excpectedMap = (Map<String, Object>) expectedValue;
549                         assertTrue("size of maps is not equel", foundMap.size() == excpectedMap.size());
550                         Iterator<String> foundkeyItr = foundMap.keySet().iterator();
551                         while (foundkeyItr.hasNext()) {
552                                 String foundKey = foundkeyItr.next();
553                                 assertTrue(excpectedMap.containsKey(foundKey));
554                                 compareElements(excpectedMap.get(foundKey), foundMap.get(foundKey));
555                         }
556
557                 } else if (expectedValue instanceof List) {
558                         assertTrue(foundValue instanceof List);
559                         List<Object> foundList = (List<Object>) foundValue;
560                         List<Object> excpectedList = (List<Object>) expectedValue;
561                         assertTrue("size of maps is not equel", foundList.size() == excpectedList.size());
562             if( foundList.size() > 0 ){
563                 final Object elementInList = foundList.get(0);
564                 if( !(elementInList instanceof List || elementInList instanceof Map) ){
565                        List<Object> tempList = new ArrayList<>();
566                        tempList.addAll(foundList);
567                        for(Object expectedObj : excpectedList){
568                               if( tempList.contains(expectedObj)){
569                                      tempList.remove(expectedObj);
570                               }
571                               else{
572                                   assertTrue(false);
573                               }
574                        }
575                        assertTrue("Lists are not equel", tempList.isEmpty());
576                 }
577             }
578
579                 } else {
580                         assertTrue(foundValue.equals(expectedValue));
581                 }
582         }
583
584         // public static Map<String, Object> parseAuditResourceByAction(String
585         // action, String body) throws Exception {
586         //
587         // Map auditingMessage = null;
588         // auditingMessage = retrieveAuditMessagesByPattern(action, null);
589         //
590         // return auditingMessage;
591         //
592         // }
593
594         public static Map<String, Object> parseAuditResourceByAction(String action, Map<AuditingFieldsKey, String> body) throws Exception {
595
596                 Map auditingMessage = null;
597                 auditingMessage = retrieveAuditMessagesByPattern(action, body, false);
598                 return auditingMessage;
599
600         }
601
602         public static List<Map<String, Object>> parseAuditResourceByActionToList(String action,
603                         Map<AuditingFieldsKey, String> body) throws Exception {
604
605                 Map auditingMessage = null;
606
607                 if (body == null || body.isEmpty()) {
608                         auditingMessage = retrieveAuditMessagesByPattern(action, null, false);
609                 } else {
610                         auditingMessage = retrieveAuditMessagesByPattern(action, body, false);
611                 }
612
613                 return ResponseParser.getAuditFromMessage(auditingMessage);
614         }
615
616         public JSONObject buildElasticQueryStringObject(String defaultField, String queryValue) throws JSONException {
617
618                 JSONObject query_string = new JSONObject();
619                 JSONObject jSONObject = new JSONObject();
620                 jSONObject.put("default_field", defaultField);
621                 jSONObject.put("query", queryValue);
622
623                 query_string.put("query_string", jSONObject);
624
625                 return query_string;
626         }
627
628         public static JSONObject buildElasticQueryBody(List<JSONObject> listObjects) throws JSONException {
629
630                 JSONObject query = new JSONObject();
631                 JSONObject bool = new JSONObject();
632                 JSONObject must = new JSONObject();
633                 JSONArray mustA = new JSONArray();
634
635                 for (int i = 0; i < listObjects.size(); i++) {
636                         JSONObject match = new JSONObject();
637                         match.put("match", listObjects.get(i));
638                         mustA.put(match);
639
640                 }
641
642                 must.put("must", mustA);
643                 bool.put("bool", must);
644                 query.put("query", bool);
645
646                 return query;
647         }
648
649         public static String retrieveAuditMessagesUsingBody(String query_string) throws IOException {
650
651                 Config config = Utils.getConfig();
652                 HttpRequest getAuditingMessage = new HttpRequest();
653                 Map<String, String> headersMap = new HashMap<String, String>();
654                 String body = query_string;
655
656                 String url = String.format(Urls.GET_SEARCH_DATA_FROM_ES, config.getEsHost(), config.getEsPort(), "_search");
657                 RestResponse restResponse = getAuditingMessage.httpSendPost(url, body, headersMap);
658
659                 return restResponse.getResponse();
660         }
661
662         public static Map<String, String> retrieveAuditMessagesByPattern(String action, Map<AuditingFieldsKey, String> body, Boolean retryFlag)
663                         throws IOException {
664
665                 // get cassandra table name by action
666                 String esType = AuditingActionEnum.fromName(action).getAuditingEsType();
667                 Map<String, String> resultsMap = new HashMap<String, String>();
668
669                 List<Pair<AuditingFieldsKey, String>> myFields = new ArrayList<Pair<AuditingFieldsKey, String>>();
670                 Pair<AuditingFieldsKey, String> myPair = new Pair<AuditingFieldsKey, String>(
671                                 AuditingFieldsKey.AUDIT_ACTION, action);
672                 myFields.add(0, myPair);
673                 if (body != null && !body.isEmpty()) {
674                         for (Map.Entry<AuditingFieldsKey, String> mapElement : body.entrySet()) {
675                                 myFields.add(new Pair<AuditingFieldsKey, String>(mapElement.getKey(), mapElement.getValue()));
676                         }
677                 }
678
679                 List<Row> fetchFromTable = CassandraUtils.fetchFromTable(auditKeySpaceName, esType, myFields);
680                 if(retryFlag){
681                         if(fetchFromTable.size() == 0){
682                                 return resultsMap;
683                         }
684                 }
685 //              assertTrue("expected on fetching from data base one record only, actual: " + fetchFromTable.size(), fetchFromTable.size() == 1);
686                 
687                 
688                 
689                 
690                 Row row =null;
691                 
692                 if (fetchFromTable.size() > 1){
693                         List<Row> fetchFromTable2 = fetchFromTable;
694                         fetchFromTable2.sort((p1, p2) -> p1.getTimestamp(1).compareTo(p2.getTimestamp(1)));
695                         row = fetchFromTable2.get(fetchFromTable2.size() - 1);
696                 }
697                 else {row = fetchFromTable.get(0);}
698
699                 ColumnDefinitions columnDefinitions = row.getColumnDefinitions();
700
701                 for (int i = 0; i < columnDefinitions.size(); i++) {
702                         resultsMap.put(columnDefinitions.getName(i), row.getObject(columnDefinitions.getName(i)) == null ? "null"
703                                         : row.getObject(columnDefinitions.getName(i)).toString());
704                 }
705
706                 return resultsMap;
707         }
708
709         public static void categoryAuditSuccess(String action, CategoryDefinition categoryDefinition, User user, int status,
710                         String resourceType) throws Exception {
711                 categoryAuditSuccessInternal(action, categoryDefinition, null, null, user, status, resourceType);
712         }
713
714         public static void categoryAuditFailure(String action, CategoryDefinition categoryDataDefinition, User user,
715                         ActionStatus errorMessage, int status, String resourceType, Object... variables) throws Exception {
716                 categoryAuditFailureInternal(action, categoryDataDefinition, null, null, user, errorMessage, status,
717                                 resourceType, variables);
718         }
719
720         public static void subCategoryAuditSuccess(String action, CategoryDefinition categoryDefinition,
721                         SubCategoryDefinition subCategoryDefinition, User user, int status, String resourceType) throws Exception {
722                 categoryAuditSuccessInternal(action, categoryDefinition, subCategoryDefinition, null, user, status,
723                                 resourceType);
724         }
725
726         public static void groupingAuditSuccess(String action, CategoryDefinition categoryDefinition,
727                         SubCategoryDefinition subCategoryDefinition, GroupingDefinition groupingDefinition, User user, int status,
728                         String resourceType) throws Exception {
729                 categoryAuditSuccessInternal(action, categoryDefinition, subCategoryDefinition, groupingDefinition, user,
730                                 status, resourceType);
731         }
732
733         public static void subCategoryAuditFailure(String action, CategoryDefinition categoryDataDefinition,
734                         SubCategoryDefinition subCategoryDefinition, User user, ActionStatus errorMessage, int status,
735                         String resourceType, Object... variables) throws Exception {
736                 categoryAuditFailureInternal(action, categoryDataDefinition, subCategoryDefinition, null, user, errorMessage,
737                                 status, resourceType, variables);
738         }
739
740         // NEW Benny
741         public static void groupingAuditFailure(String action, CategoryDefinition categoryDefinition,
742                         SubCategoryDefinition subCategoryDefinition, GroupingDefinition groupingDefinition, User user,
743                         ActionStatus errorMessage, int status, String resourceType, Object... variables) throws Exception {
744                 groupingAuditFailureInternal(action, categoryDefinition, subCategoryDefinition, groupingDefinition, user,
745                                 errorMessage, status, resourceType, variables);
746         }
747
748         private static void groupingAuditFailureInternal(String action, CategoryDefinition categoryDataDefinition,
749                         SubCategoryDefinition subCategoryDefinition, GroupingDefinition groupingDefinition, User user,
750                         ActionStatus errorMessage, int status, String resourceType, Object... variables) throws Exception {
751                 // validate audit
752                 ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(errorMessage.name());
753                 ExpectedCategoryAudit expectedCatrgoryAuditJavaObject = new ExpectedCategoryAudit();
754                 expectedCatrgoryAuditJavaObject.setAction(action);
755                 expectedCatrgoryAuditJavaObject.setModifier(user.getFullName() + "(" + user.getUserId() + ")");
756                 expectedCatrgoryAuditJavaObject.setCategoryName(categoryDataDefinition.getName());
757                 String subCategoryName = (subCategoryDefinition != null ? subCategoryDefinition.getName() : Constants.EMPTY_STRING);
758                 expectedCatrgoryAuditJavaObject.setSubCategoryName(subCategoryName);
759                 String groupingName = (groupingDefinition != null ? groupingDefinition.getName() : Constants.EMPTY_STRING);
760                 expectedCatrgoryAuditJavaObject.setGroupingName(groupingName);
761                 expectedCatrgoryAuditJavaObject.setResourceType(resourceType);
762                 expectedCatrgoryAuditJavaObject.setStatus(String.valueOf(status));
763                 expectedCatrgoryAuditJavaObject.setDesc(errorInfo.getAuditDesc(variables));
764                 AuditValidationUtils.validateCategoryAudit(expectedCatrgoryAuditJavaObject, action);
765         }
766
767         ///
768         private static void categoryAuditSuccessInternal(String action, CategoryDefinition categoryDefinition,
769                         SubCategoryDefinition subCategoryDefinition, GroupingDefinition groupingDefinition, User user, int status,
770                         String resourceType) throws Exception {
771                 // resourceType = Service/Resource/Product
772                 ExpectedCategoryAudit expectedCatrgoryAuditJavaObject = new ExpectedCategoryAudit();
773                 expectedCatrgoryAuditJavaObject.setAction(action);
774                 expectedCatrgoryAuditJavaObject.setModifier(user.getFullName() + "(" + user.getUserId() + ")");
775                 expectedCatrgoryAuditJavaObject.setCategoryName(categoryDefinition.getName());
776                 String subCategoryName = (subCategoryDefinition != null ? subCategoryDefinition.getName()
777                                 : Constants.EMPTY_STRING);
778                 expectedCatrgoryAuditJavaObject.setSubCategoryName(subCategoryName);
779                 String groupingName = (groupingDefinition != null ? groupingDefinition.getName() : Constants.EMPTY_STRING);
780                 expectedCatrgoryAuditJavaObject.setGroupingName(groupingName);
781                 expectedCatrgoryAuditJavaObject.setResourceType(resourceType);
782                 expectedCatrgoryAuditJavaObject.setStatus(String.valueOf(status));
783                 expectedCatrgoryAuditJavaObject.setDesc("OK");
784                 AuditValidationUtils.validateCategoryAudit(expectedCatrgoryAuditJavaObject, action);
785         }
786
787         ///////////////////////////
788         ///// BENNNNNNNNY
789         public enum UserAuditJsonKeysEnum {
790                 ACTION("ACTION"), MODIFIER("MODIFIER"), STATUS("STATUS"), DESC("DESCRIPTION"), USER_AFTER("USER_AFTER"), USER_BEFORE("USER_BEFORE");
791                 private String auditJsonKeyName;
792
793                 private UserAuditJsonKeysEnum(String auditJsonKeyName) {
794                         this.auditJsonKeyName = auditJsonKeyName;
795                 }
796
797                 public String getAuditJsonKeyName() {
798                         return auditJsonKeyName.toLowerCase();
799                 }
800         }
801
802         public static void validateAddUserAudit(ExpectedUserCRUDAudit expectedAddUserAuditJavaObject, String action) throws Exception {
803
804                 List<Map<String, Object>> actionToList = getAuditListByAction(expectedAddUserAuditJavaObject.getAction(), 1);
805                 Map<String, Object> map = actionToList.get(0);
806                 validateField(map, UserAuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
807                 validateField(map, UserAuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), expectedAddUserAuditJavaObject.getModifier());
808                 validateField(map, UserAuditJsonKeysEnum.USER_AFTER.getAuditJsonKeyName(), expectedAddUserAuditJavaObject.getUserAfter());
809                 validateField(map, UserAuditJsonKeysEnum.USER_BEFORE.getAuditJsonKeyName(), expectedAddUserAuditJavaObject.getUserBefore());
810                 validateField(map, UserAuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), expectedAddUserAuditJavaObject.getStatus());
811                 validateField(map, UserAuditJsonKeysEnum.DESC.getAuditJsonKeyName(), expectedAddUserAuditJavaObject.getDesc());
812
813         }
814
815         private static void categoryAuditFailureInternal(String action, CategoryDefinition categoryDataDefinition,
816                         SubCategoryDefinition subCategoryDefinition, GroupingDefinition groupingDefinition, User user,
817                         ActionStatus errorMessage, int status, String resourceType, Object... variables) throws Exception {
818                 // validate audit
819                 ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(errorMessage.name());
820                 ExpectedCategoryAudit expectedCatrgoryAuditJavaObject = new ExpectedCategoryAudit();
821                 expectedCatrgoryAuditJavaObject.setAction(action);
822                 expectedCatrgoryAuditJavaObject.setModifier(user.getFullName() + "(" + user.getUserId() + ")");
823                 expectedCatrgoryAuditJavaObject.setCategoryName(categoryDataDefinition.getName());
824                 String subCategoryName = (subCategoryDefinition != null ? subCategoryDefinition.getName() : Constants.EMPTY_STRING);
825                 expectedCatrgoryAuditJavaObject.setSubCategoryName(subCategoryName);
826                 String groupingName = (groupingDefinition != null ? groupingDefinition.getName() : Constants.EMPTY_STRING);
827                 expectedCatrgoryAuditJavaObject.setGroupingName(groupingName);
828                 expectedCatrgoryAuditJavaObject.setResourceType(resourceType);
829                 expectedCatrgoryAuditJavaObject.setStatus(String.valueOf(status));
830                 expectedCatrgoryAuditJavaObject.setDesc(errorInfo.getAuditDesc(variables));
831                 AuditValidationUtils.validateCategoryAudit(expectedCatrgoryAuditJavaObject, action);
832         }
833
834         public static void validateGetCategoryHirarchy(ExpectedCategoryAudit expectedCatrgoryAuditJavaObject, String action)
835                         throws Exception {
836
837                 List<Map<String, Object>> actionToList = getAuditListByAction(expectedCatrgoryAuditJavaObject.getAction(), 1);
838                 Map<String, Object> map = actionToList.get(0);
839
840                 expectedCatrgoryAuditJavaObject.setModifier(getModifierString(expectedCatrgoryAuditJavaObject.getModifierName(),
841                                 expectedCatrgoryAuditJavaObject.getModifierUid()));
842                 validateField(map, CategoryAuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
843                 validateField(map, CategoryAuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getModifier());
844                 validateField(map, CategoryAuditJsonKeysEnum.DETAILS.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getDetails());
845                 validateField(map, CategoryAuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getStatus());
846                 validateField(map, CategoryAuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getDesc());
847
848         }
849
850         public static void validateCategoryAudit(ExpectedCategoryAudit expectedCatrgoryAuditJavaObject, String action)
851                         throws Exception {
852
853                 List<Map<String, Object>> actionToList = getAuditListByAction(expectedCatrgoryAuditJavaObject.getAction(), 1);
854                 Map<String, Object> map = actionToList.get(0);
855                 validateField(map, CategoryAuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
856                 validateField(map, CategoryAuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getModifier());
857                 validateField(map, CategoryAuditJsonKeysEnum.CATEGORY_NAME.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getCategoryName());
858                 validateField(map, CategoryAuditJsonKeysEnum.SUB_CATEGORY_NAME.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getSubCategoryName());
859                 validateField(map, CategoryAuditJsonKeysEnum.GROUPING_NAME.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getGroupingName());
860                 validateField(map, CategoryAuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getResourceType());
861                 validateField(map, CategoryAuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getStatus());
862                 validateField(map, CategoryAuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), expectedCatrgoryAuditJavaObject.getDesc());
863         }
864
865         public static void GetCategoryHierarchyAuditSuccess(String action, String componentType, User user, int status)
866                         throws Exception {
867                 ExpectedGetUserListAudit expectedGetListOfUsersAuditJavaObject = new ExpectedGetUserListAudit();
868                 expectedGetListOfUsersAuditJavaObject.setAction(action);
869                 expectedGetListOfUsersAuditJavaObject.setStatus(String.valueOf(status));
870                 expectedGetListOfUsersAuditJavaObject.setDesc("OK");
871                 expectedGetListOfUsersAuditJavaObject.setModifier(user.getFullName() + "(" + user.getUserId() + ")");
872                 expectedGetListOfUsersAuditJavaObject.setDetails(componentType.toLowerCase());
873                 validateAuditGetListOfUsersByRoles(expectedGetListOfUsersAuditJavaObject, action);
874         }
875
876         public static String buildArtifactDataAudit(ArtifactDefinition artifactDefinition) {
877                 StringBuilder sb = new StringBuilder();
878                 if (artifactDefinition.getTimeout() == null) {
879                         artifactDefinition.setTimeout(0);
880                 }
881                 if (artifactDefinition != null) {
882                         sb.append(artifactDefinition.getArtifactGroupType() == null ? null
883                                         : artifactDefinition.getArtifactGroupType().getType()).append(",").append("'")
884                                         .append(artifactDefinition.getArtifactLabel()).append("'").append(",")
885                                         .append(artifactDefinition.getArtifactType()).append(",")
886                                         .append(artifactDefinition.getArtifactName()).append(",").append(artifactDefinition.getTimeout())
887                                         .append(",").append(artifactDefinition.getEsId());
888                         sb.append(",");
889                         if (artifactDefinition.getArtifactVersion() != null) {
890                                 sb.append(artifactDefinition.getArtifactVersion());
891                         } else {
892                                 sb.append(" ");
893                         }
894                         sb.append(",");
895                         if (artifactDefinition.getArtifactUUID() != null) {
896                                 sb.append(artifactDefinition.getArtifactUUID());
897                         } else {
898                                 sb.append(" ");
899                         }
900                 }
901
902                 return sb.toString();
903         }
904
905
906         public static ExpectedResourceAuditJavaObject expectedArtifactNotFoundAuditObject(String Action, String resourceUid,
907                         ComponentType resourceType, String artifactUid, User user, String currState, String currVersion)
908                         throws FileNotFoundException {
909                 String desc = null;
910
911                 ExpectedResourceAuditJavaObject expectedAudit = new ExpectedResourceAuditJavaObject();
912                 expectedAudit.setAction(Action);
913                 expectedAudit.setResourceName(resourceUid);
914                 expectedAudit.setResourceType(resourceType.getValue());
915                 expectedAudit.setPrevVersion("");
916                 expectedAudit.setCurrVersion(currVersion);
917                 expectedAudit.setModifierName(user.getFirstName() + " " + user.getLastName());
918                 expectedAudit.setModifierUid(user.getUserId());
919                 expectedAudit.setPrevState("");
920                 expectedAudit.setCurrState(currState);
921                 expectedAudit.setPrevArtifactUuid("");
922                 expectedAudit.setCurrArtifactUuid(artifactUid);
923                 expectedAudit.setArtifactData("");
924                 expectedAudit.setStatus("404");
925
926                 desc = buildAuditDescription(
927                                 new ErrorValidationUtils().parseErrorConfigYaml(ActionStatus.ARTIFACT_NOT_FOUND.name()),
928                                 Arrays.asList(""));
929
930                 expectedAudit.setDesc(desc);
931                 return expectedAudit;
932         }
933
934         public static JSONObject filterAuditByUuid(String action, String uuid) throws Exception {
935                 Map<String, String> actionMap = new HashMap<>();
936                 actionMap.put("ACTION", action);
937                 JSONObject actionJsonObject = new JSONObject(actionMap);
938                 Map<String, String> uuidMap = new HashMap<>();
939                 uuidMap.put("SERVICE_INSTANCE_ID", uuid);
940                 JSONObject uuidJsonObject = new JSONObject(uuidMap);
941
942                 List<JSONObject> filters = new ArrayList<>(Arrays.asList(actionJsonObject, uuidJsonObject));
943                 JSONObject body = buildElasticQueryBody(filters);
944                 return body;
945         }
946
947         public static void validateAudit(ExpectedResourceAuditJavaObject resourceAuditJavaObject, String action) throws Exception {
948                 List<Map<String, Object>> actionToList = getAuditListByAction(resourceAuditJavaObject.getAction(), 1);
949                 Map<String, Object> map2 = actionToList.get(0);
950                 validateField(map2, AuditJsonKeysEnum.ACTION.getAuditJsonKeyName(), action);
951                 validateField(map2, AuditJsonKeysEnum.RESOURCE_NAME.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceName());
952                 validateField(map2, AuditJsonKeysEnum.RESOURCE_TYPE.getAuditJsonKeyName(), resourceAuditJavaObject.getResourceType());
953                 validateField(map2, AuditJsonKeysEnum.PREV_VERSION.getAuditJsonKeyName(), resourceAuditJavaObject.getPrevVersion());
954                 validateField(map2, AuditJsonKeysEnum.CURR_VERSION.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrVersion());
955                 validateField(map2, AuditJsonKeysEnum.MODIFIER.getAuditJsonKeyName(), resourceAuditJavaObject.getMODIFIER());
956                 validateField(map2, AuditJsonKeysEnum.PREV_STATE.getAuditJsonKeyName(), resourceAuditJavaObject.getPrevState());
957                 validateField(map2, AuditJsonKeysEnum.CURR_STATE.getAuditJsonKeyName(), resourceAuditJavaObject.getCurrState());
958                 validateField(map2, AuditJsonKeysEnum.STATUS.getAuditJsonKeyName(), resourceAuditJavaObject.getStatus());
959                 validateField(map2, AuditJsonKeysEnum.DESCRIPTION.getAuditJsonKeyName(), resourceAuditJavaObject.getDesc());
960                 validateField(map2, AuditJsonKeysEnum.COMMENT.getAuditJsonKeyName(), resourceAuditJavaObject.getComment());
961         }
962
963         ////// service audit validation/////////////////////
964
965         public static ExpectedResourceAuditJavaObject constructFieldsForAuditValidation(ServiceReqDetails serviceReqDetails,
966                         String serviceVersion, User sdncUserDetails) {
967
968                 ExpectedResourceAuditJavaObject expectedResourceAuditJavaObject = new ExpectedResourceAuditJavaObject();
969
970                 expectedResourceAuditJavaObject.setAction("Create");
971                 expectedResourceAuditJavaObject.setModifierUid(sdncUserDetails.getUserId());
972                 String userFirstLastName = sdncUserDetails.getFirstName() + " " + sdncUserDetails.getLastName();
973                 expectedResourceAuditJavaObject.setModifierName(userFirstLastName);
974                 expectedResourceAuditJavaObject.setStatus("200");
975                 expectedResourceAuditJavaObject.setDesc("OK");
976                 expectedResourceAuditJavaObject.setResourceName(serviceReqDetails.getName());
977                 expectedResourceAuditJavaObject.setResourceType("Service");
978                 expectedResourceAuditJavaObject.setPrevVersion(String.valueOf(Float.parseFloat(serviceVersion) - 0.1f));
979                 expectedResourceAuditJavaObject.setCurrVersion(serviceVersion);
980                 expectedResourceAuditJavaObject.setPrevState((LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT).toString());
981                 expectedResourceAuditJavaObject.setCurrState((LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT).toString());
982                 expectedResourceAuditJavaObject.setComment(null);
983
984                 return expectedResourceAuditJavaObject;
985
986         }
987
988         public static ExpectedResourceAuditJavaObject constructFieldsForAuditValidation(ServiceReqDetails serviceReqDetails,
989                         String serviceVersion, User sdncUserDetails, ActionStatus errorStatus, List<String> variables)
990                         throws FileNotFoundException {
991
992                 ExpectedResourceAuditJavaObject expectedResourceAuditJavaObject = constructFieldsForAuditValidation(
993                                 serviceReqDetails, serviceVersion, sdncUserDetails);
994                 ErrorInfo errorInfo = ErrorValidationUtils.parseErrorConfigYaml(errorStatus.name());
995
996                 expectedResourceAuditJavaObject.setStatus(errorInfo.getCode().toString());
997                 String auditDesc = AuditValidationUtils.buildAuditDescription(errorInfo, variables);
998                 expectedResourceAuditJavaObject.setDesc(auditDesc);
999
1000                 return expectedResourceAuditJavaObject;
1001
1002         }
1003
1004 }