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