Improve handling 'empty'/null string in Service fields
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / impl / ServiceBusinessLogicBaseTestSetup.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2020 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.be.components.impl;
22
23 import static org.junit.jupiter.api.Assertions.assertEquals;
24 import static org.mockito.ArgumentMatchers.anyString;
25 import static org.mockito.ArgumentMatchers.eq;
26 import static org.mockito.Mockito.when;
27
28 import fj.data.Either;
29 import java.util.ArrayList;
30 import java.util.Arrays;
31 import java.util.Collections;
32 import java.util.List;
33 import javax.servlet.ServletContext;
34 import org.junit.jupiter.api.BeforeEach;
35 import org.mockito.Mockito;
36 import org.openecomp.sdc.ElementOperationMock;
37 import org.openecomp.sdc.be.auditing.impl.AuditingManager;
38 import org.openecomp.sdc.be.components.distribution.engine.DistributionEngine;
39 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
40 import org.openecomp.sdc.be.components.impl.generic.GenericTypeBusinessLogic;
41 import org.openecomp.sdc.be.components.path.ForwardingPathValidator;
42 import org.openecomp.sdc.be.components.validation.ServiceDistributionValidation;
43 import org.openecomp.sdc.be.components.validation.UserValidations;
44 import org.openecomp.sdc.be.components.validation.component.ComponentContactIdValidator;
45 import org.openecomp.sdc.be.components.validation.component.ComponentDescriptionValidator;
46 import org.openecomp.sdc.be.components.validation.component.ComponentFieldValidator;
47 import org.openecomp.sdc.be.components.validation.component.ComponentIconValidator;
48 import org.openecomp.sdc.be.components.validation.component.ComponentNameValidator;
49 import org.openecomp.sdc.be.components.validation.component.ComponentProjectCodeValidator;
50 import org.openecomp.sdc.be.components.validation.component.ComponentTagsValidator;
51 import org.openecomp.sdc.be.components.validation.component.ComponentValidator;
52 import org.openecomp.sdc.be.components.validation.service.ServiceCategoryValidator;
53 import org.openecomp.sdc.be.components.validation.service.ServiceEnvironmentContextValidator;
54 import org.openecomp.sdc.be.components.validation.service.ServiceFieldValidator;
55 import org.openecomp.sdc.be.components.validation.service.ServiceFunctionValidator;
56 import org.openecomp.sdc.be.components.validation.service.ServiceInstantiationTypeValidator;
57 import org.openecomp.sdc.be.components.validation.service.ServiceNamingPolicyValidator;
58 import org.openecomp.sdc.be.components.validation.service.ServiceRoleValidator;
59 import org.openecomp.sdc.be.components.validation.service.ServiceTypeValidator;
60 import org.openecomp.sdc.be.components.validation.service.ServiceValidator;
61 import org.openecomp.sdc.be.dao.api.ActionStatus;
62 import org.openecomp.sdc.be.dao.cassandra.AuditCassandraDao;
63 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
64 import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
65 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
66 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
67 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
68 import org.openecomp.sdc.be.facade.operations.CatalogOperation;
69 import org.openecomp.sdc.be.impl.ComponentsUtils;
70 import org.openecomp.sdc.be.impl.WebAppContextWrapper;
71 import org.openecomp.sdc.be.model.ArtifactDefinition;
72 import org.openecomp.sdc.be.model.Component;
73 import org.openecomp.sdc.be.model.Resource;
74 import org.openecomp.sdc.be.model.Service;
75 import org.openecomp.sdc.be.model.User;
76 import org.openecomp.sdc.be.model.category.CategoryDefinition;
77 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
78 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
79 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
80 import org.openecomp.sdc.be.model.operations.impl.GraphLockOperation;
81 import org.openecomp.sdc.be.model.operations.impl.ModelOperation;
82 import org.openecomp.sdc.be.resources.data.auditing.DistributionDeployEvent;
83 import org.openecomp.sdc.be.resources.data.auditing.DistributionNotificationEvent;
84 import org.openecomp.sdc.be.resources.data.auditing.ResourceAdminEvent;
85 import org.openecomp.sdc.be.user.Role;
86 import org.openecomp.sdc.be.user.UserBusinessLogic;
87 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
88 import org.openecomp.sdc.common.api.Constants;
89 import org.openecomp.sdc.exception.ResponseFormat;
90 import org.springframework.web.context.WebApplicationContext;
91
92 class ServiceBusinessLogicBaseTestSetup extends BaseBusinessLogicMock {
93
94     protected static final String SERVICE_CATEGORY = "Mobility";
95     protected static final String INSTANTIATION_TYPE = "A-la-carte";
96     protected static final String CERTIFIED_VERSION = "1.0";
97     protected static final String UNCERTIFIED_VERSION = "0.2";
98     protected static final String COMPONNET_ID = "myUniqueId";
99     protected static final String GENERIC_SERVICE_NAME = "org.openecomp.resource.abstract.nodes.service";
100     protected static final String SERVICE_ROLE = JsonPresentationFields.SERVICE_ROLE.getPresentation();
101     protected static final String SERVICE_TYPE = JsonPresentationFields.SERVICE_TYPE.getPresentation();
102     protected static final String SERVICE_FUNCTION = JsonPresentationFields.SERVICE_FUNCTION.getPresentation();
103     protected final ServletContext servletContext = Mockito.mock(ServletContext.class);
104     protected final ComponentValidator componentValidator = Mockito.mock(ComponentValidator.class);
105     protected ServiceBusinessLogic bl;
106     protected UserBusinessLogic mockUserAdmin = Mockito.mock(UserBusinessLogic.class);
107     protected WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
108     protected WebApplicationContext webAppContext = Mockito.mock(WebApplicationContext.class);
109     protected ResponseFormatManager responseManager = null;
110     protected ComponentsUtils componentsUtils = new ComponentsUtils(Mockito.mock(AuditingManager.class));
111     protected AuditCassandraDao auditingDao = Mockito.mock(AuditCassandraDao.class);
112     protected ArtifactsBusinessLogic artifactBl = Mockito.mock(ArtifactsBusinessLogic.class);
113     protected GraphLockOperation graphLockOperation = Mockito.mock(GraphLockOperation.class);
114     protected JanusGraphDao mockJanusGraphDao = Mockito.mock(JanusGraphDao.class);
115     protected ToscaOperationFacade toscaOperationFacade = Mockito.mock(ToscaOperationFacade.class);
116     protected GenericTypeBusinessLogic genericTypeBusinessLogic = Mockito.mock(GenericTypeBusinessLogic.class);
117     protected UserValidations userValidations = Mockito.mock(UserValidations.class);
118     protected ResourceAdminEvent auditArchive1 = Mockito.mock(ResourceAdminEvent.class);
119     protected CatalogOperation catalogOperation = Mockito.mock(CatalogOperation.class);
120     protected ResourceAdminEvent auditArchive2 = Mockito.mock(ResourceAdminEvent.class);
121     protected ResourceAdminEvent auditRestore = Mockito.mock(ResourceAdminEvent.class);
122     protected ModelOperation modelOperation = Mockito.mock(ModelOperation.class);
123     protected ServiceTypeValidator serviceTypeValidator = new ServiceTypeValidator();
124     protected ServiceRoleValidator serviceRoleValidator = new ServiceRoleValidator(componentsUtils);
125     protected ServiceFunctionValidator serviceFunctionValidator = new ServiceFunctionValidator(componentsUtils);
126     protected ServiceInstantiationTypeValidator serviceInstantiationTypeValidator = new ServiceInstantiationTypeValidator(componentsUtils);
127     protected ComponentDescriptionValidator componentDescriptionValidator = new ComponentDescriptionValidator(componentsUtils);
128     protected ComponentProjectCodeValidator componentProjectCodeValidator = new ComponentProjectCodeValidator(componentsUtils);
129     protected ComponentIconValidator componentIconValidator = new ComponentIconValidator(componentsUtils);
130     protected ComponentContactIdValidator componentContactIdValidator = new ComponentContactIdValidator(componentsUtils);
131     protected ComponentTagsValidator componentTagsValidator = new ComponentTagsValidator(componentsUtils);
132     protected ComponentNameValidator componentNameValidator = new ComponentNameValidator(componentsUtils, toscaOperationFacade);
133     protected User user = null;
134     protected Resource genericService = null;
135     IElementOperation mockElementDao = new ElementOperationMock();
136     protected ServiceCategoryValidator serviceCategoryValidator = new ServiceCategoryValidator(componentsUtils, mockElementDao);
137     protected ServiceValidator serviceValidator = createServiceValidator();
138     DistributionEngine distributionEngine = Mockito.mock(DistributionEngine.class);
139     ServiceDistributionValidation serviceDistributionValidation = Mockito.mock(ServiceDistributionValidation.class);
140     ComponentInstanceBusinessLogic componentInstanceBusinessLogic = Mockito.mock(ComponentInstanceBusinessLogic.class);
141     ForwardingPathValidator forwardingPathValidator = Mockito.mock(ForwardingPathValidator.class);
142     UiComponentDataConverter uiComponentDataConverter = Mockito.mock(UiComponentDataConverter.class);
143
144     public ServiceBusinessLogicBaseTestSetup() {
145
146     }
147
148     protected ServiceValidator createServiceValidator() {
149         List<ComponentFieldValidator> componentFieldValidators = Arrays.asList(componentContactIdValidator,
150             componentDescriptionValidator,
151             componentIconValidator, componentNameValidator,
152             new ComponentProjectCodeValidator(componentsUtils),
153             componentTagsValidator);
154
155         List<ServiceFieldValidator> serviceFieldValidators = Arrays.asList(serviceCategoryValidator, new ServiceEnvironmentContextValidator(),
156             serviceInstantiationTypeValidator, new ServiceNamingPolicyValidator(componentsUtils),
157             serviceRoleValidator, serviceTypeValidator);
158         return new ServiceValidator(componentsUtils, componentFieldValidators, serviceFieldValidators);
159     }
160
161     @BeforeEach
162     public void setup() {
163
164         // Elements
165         IElementOperation mockElementDao = new ElementOperationMock();
166
167         // User data and management
168         user = new User();
169         user.setUserId("jh0003");
170         user.setFirstName("Jimmi");
171         user.setLastName("Hendrix");
172         user.setRole(Role.ADMIN.name());
173
174         when(mockUserAdmin.getUser("jh0003", false)).thenReturn(user);
175         when(userValidations.validateUserExists(eq("jh0003"))).thenReturn(user);
176         when(userValidations.validateUserNotEmpty(eq(user), anyString())).thenReturn(user);
177         when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).thenReturn(configurationManager);
178         when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
179         when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webAppContext);
180         when(webAppContext.getBean(IElementOperation.class)).thenReturn(mockElementDao);
181         when(graphLockOperation.lockComponent(Mockito.anyString(), Mockito.eq(NodeTypeEnum.Service))).thenReturn(StorageOperationStatus.OK);
182         when(graphLockOperation.lockComponentByName(Mockito.anyString(), Mockito.eq(NodeTypeEnum.Service))).thenReturn(StorageOperationStatus.OK);
183         when(catalogOperation.updateCatalog(Mockito.any(), Mockito.any())).thenReturn(ActionStatus.OK);
184         // artifact bussinesslogic
185         ArtifactDefinition artifactDef = new ArtifactDefinition();
186         when(artifactBl.createArtifactPlaceHolderInfo(Mockito.any(), Mockito.anyString(), Mockito.anyMap(), Mockito.any(User.class),
187             Mockito.any(ArtifactGroupTypeEnum.class))).thenReturn(artifactDef);
188
189         // createService
190         Service serviceResponse = createServiceObject(true);
191         Either<Component, StorageOperationStatus> eitherCreate = Either.left(serviceResponse);
192         when(toscaOperationFacade.createToscaComponent(Mockito.any(Component.class))).thenReturn(eitherCreate);
193         Either<Boolean, StorageOperationStatus> eitherCount = Either.left(false);
194         when(toscaOperationFacade.validateComponentNameExists("Service", null, ComponentTypeEnum.SERVICE)).thenReturn(eitherCount);
195         Either<Boolean, StorageOperationStatus> eitherCountExist = Either.left(true);
196         when(toscaOperationFacade.validateComponentNameExists("alreadyExist", null, ComponentTypeEnum.SERVICE)).thenReturn(eitherCountExist);
197         when(userValidations.validateUserExists(user)).thenReturn(user);
198
199         genericService = setupGenericServiceMock();
200         Either<Resource, StorageOperationStatus> findLatestGeneric = Either.left(genericService);
201         when(toscaOperationFacade.getLatestCertifiedNodeTypeByToscaResourceName(GENERIC_SERVICE_NAME)).thenReturn(findLatestGeneric);
202
203         bl = new ServiceBusinessLogic(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, groupBusinessLogic, interfaceOperation,
204             interfaceLifecycleTypeOperation, artifactBl, distributionEngine, componentInstanceBusinessLogic, serviceDistributionValidation,
205             forwardingPathValidator, uiComponentDataConverter, artifactToscaOperation, componentContactIdValidator, componentNameValidator,
206             componentTagsValidator, componentValidator, componentIconValidator, componentProjectCodeValidator, componentDescriptionValidator,
207             modelOperation, serviceRoleValidator, serviceInstantiationTypeValidator, serviceCategoryValidator, serviceValidator, null);
208         bl.setComponentContactIdValidator(componentContactIdValidator);
209         bl.setComponentIconValidator(componentIconValidator);
210         bl.setComponentTagsValidator(componentTagsValidator);
211         bl.setComponentNameValidator(componentNameValidator);
212         bl.setComponentDescriptionValidator(componentDescriptionValidator);
213         bl.setComponentProjectCodeValidator(componentProjectCodeValidator);
214         bl.setServiceTypeValidator(serviceTypeValidator);
215         bl.setServiceFunctionValidator(serviceFunctionValidator);
216         bl.setElementDao(mockElementDao);
217         bl.setUserAdmin(mockUserAdmin);
218         bl.setArtifactBl(artifactBl);
219         bl.setGraphLockOperation(graphLockOperation);
220         bl.setJanusGraphDao(mockJanusGraphDao);
221         bl.setToscaOperationFacade(toscaOperationFacade);
222         bl.setGenericTypeBusinessLogic(genericTypeBusinessLogic);
223         bl.setComponentsUtils(componentsUtils);
224         bl.setCassandraAuditingDao(auditingDao);
225         bl.setUserValidations(userValidations);
226         bl.setCatalogOperations(catalogOperation);
227
228         mockAuditingDaoLogic();
229
230         responseManager = ResponseFormatManager.getInstance();
231
232
233     }
234
235     protected Resource setupGenericServiceMock() {
236         Resource genericService = new Resource();
237         genericService.setVersion("1.0");
238         genericService.setToscaResourceName(GENERIC_SERVICE_NAME);
239         return genericService;
240     }
241
242     protected Service createServiceObject(boolean afterCreate) {
243         Service service = new Service();
244         service.setUniqueId("sid");
245         service.setName("Service");
246         CategoryDefinition category = new CategoryDefinition();
247         category.setName(SERVICE_CATEGORY);
248         category.setIcons(Collections.singletonList("defaulticon"));
249         List<CategoryDefinition> categories = new ArrayList<>();
250         categories.add(category);
251         service.setCategories(categories);
252         service.setInstantiationType(INSTANTIATION_TYPE);
253
254         service.setDescription("description");
255         List<String> tgs = new ArrayList<>();
256         tgs.add(service.getName());
257         service.setTags(tgs);
258         service.setIcon("defaulticon");
259         service.setContactId("aa1234");
260         service.setProjectCode("12345");
261         service.setEcompGeneratedNaming(true);
262
263         if (afterCreate) {
264             service.setVersion("0.1");
265             service.setUniqueId(service.getName() + ":" + service.getVersion());
266             service.setCreatorUserId(user.getUserId());
267             service.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
268         }
269         return service;
270     }
271
272     private void mockAuditingDaoLogic() {
273         final ResourceAdminEvent createResourceAudit = new ResourceAdminEvent();
274         createResourceAudit.setModifier("Carlos Santana(cs0008)");
275         createResourceAudit.setCurrState("NOT_CERTIFIED_CHECKOUT");
276         createResourceAudit.setCurrVersion("0.1");
277         createResourceAudit.setServiceInstanceId("82eddd99-0bd9-4742-ab0a-1bdb5e262a05");
278         createResourceAudit.setRequestId("3e65cea1-7403-4bc7-b461-e2544d83799f");
279         createResourceAudit.setDesc("OK");
280         createResourceAudit.setResourceType("Resource");
281         createResourceAudit.setStatus("201");
282         createResourceAudit.setPrevVersion("");
283         createResourceAudit.setAction("Create");
284         createResourceAudit.setPrevState("");
285         createResourceAudit.setResourceName("MyTestResource");
286
287         final ResourceAdminEvent checkInResourceAudit = new ResourceAdminEvent();
288         checkInResourceAudit.setModifier("Carlos Santana(cs0008)");
289         checkInResourceAudit.setCurrState("NOT_CERTIFIED_CHECKIN");
290         checkInResourceAudit.setCurrVersion("0.1");
291         checkInResourceAudit.setServiceInstanceId("82eddd99-0bd9-4742-ab0a-1bdb5e262a05");
292         checkInResourceAudit.setRequestId("ffacbf5d-eeb1-43c6-a310-37fe7e1cc091");
293         checkInResourceAudit.setDesc("OK");
294         checkInResourceAudit.setComment("Stam");
295         checkInResourceAudit.setResourceType("Resource");
296         checkInResourceAudit.setStatus("200");
297         checkInResourceAudit.setPrevVersion("0.1");
298         checkInResourceAudit.setAction("Checkin");
299         checkInResourceAudit.setPrevState("NOT_CERTIFIED_CHECKOUT");
300         checkInResourceAudit.setResourceName("MyTestResource");
301
302         final ResourceAdminEvent checkOutResourceAudit = new ResourceAdminEvent();
303         checkOutResourceAudit.setModifier("Carlos Santana(cs0008)");
304         checkOutResourceAudit.setCurrState("NOT_CERTIFIED_CHECKOUT");
305         checkOutResourceAudit.setCurrVersion("0.2");
306         checkOutResourceAudit.setServiceInstanceId("82eddd99-0bd9-4742-ab0a-1bdb5e262a05");
307         checkOutResourceAudit.setRequestId("7add5078-4c16-4d74-9691-cc150e3c96b8");
308         checkOutResourceAudit.setDesc("OK");
309         checkOutResourceAudit.setComment("");
310         checkOutResourceAudit.setResourceType("Resource");
311         checkOutResourceAudit.setStatus("200");
312         checkOutResourceAudit.setPrevVersion("0.1");
313         checkOutResourceAudit.setAction("Checkout");
314         checkOutResourceAudit.setPrevState("NOT_CERTIFIED_CHECKIN");
315         checkOutResourceAudit.setResourceName("MyTestResource");
316         List<ResourceAdminEvent> list = new ArrayList<>() {
317             {
318                 add(createResourceAudit);
319                 add(checkInResourceAudit);
320                 add(checkOutResourceAudit);
321             }
322         };
323         Either<List<ResourceAdminEvent>, ActionStatus> result = Either.left(list);
324         Mockito.when(auditingDao.getByServiceInstanceId(Mockito.anyString())).thenReturn(result);
325
326         List<ResourceAdminEvent> listPrev = new ArrayList<>();
327         Either<List<ResourceAdminEvent>, ActionStatus> resultPrev = Either.left(listPrev);
328         Mockito.when(auditingDao.getAuditByServiceIdAndPrevVersion(Mockito.anyString(), Mockito.anyString())).thenReturn(resultPrev);
329
330         List<ResourceAdminEvent> listCurr = new ArrayList<>() {
331             {
332                 add(checkOutResourceAudit);
333             }
334         };
335         Either<List<ResourceAdminEvent>, ActionStatus> resultCurr = Either.left(listCurr);
336         Mockito.when(auditingDao.getAuditByServiceIdAndCurrVersion(Mockito.anyString(), Mockito.anyString())).thenReturn(resultCurr);
337
338         Either<List<ResourceAdminEvent>, ActionStatus> archiveAuditList = Either.left(Arrays.asList(auditArchive1, auditArchive2));
339         when(auditingDao.getArchiveAuditByServiceInstanceId(anyString())).thenReturn(archiveAuditList);
340
341         Either<List<ResourceAdminEvent>, ActionStatus> restoreAuditList = Either.left(Collections.singletonList(auditRestore));
342         when(auditingDao.getRestoreAuditByServiceInstanceId(anyString())).thenReturn(restoreAuditList);
343
344     }
345
346     protected void setupBeforeDeploy(String notifyAction, String requestAction, String did) {
347
348         DistributionNotificationEvent notifyEvent = new DistributionNotificationEvent();
349         notifyEvent.setAction(notifyAction);
350         notifyEvent.setDid(did);
351         notifyEvent.setStatus("200");
352
353         ResourceAdminEvent requestEvent = new ResourceAdminEvent();
354         requestEvent.setAction(requestAction);
355         requestEvent.setDid(did);
356         requestEvent.setStatus("200");
357
358         List<DistributionNotificationEvent> notifyResults = Collections.singletonList(notifyEvent);
359         Either<List<DistributionNotificationEvent>, ActionStatus> eitherNotify = Either.left(notifyResults);
360
361         Mockito.when(auditingDao.getDistributionNotify(Mockito.anyString(), Mockito.eq(notifyAction))).thenReturn(eitherNotify);
362
363         List<ResourceAdminEvent> requestResults = Collections.singletonList(requestEvent);
364         Either<List<ResourceAdminEvent>, ActionStatus> eitherRequest = Either.left(requestResults);
365         Mockito.when(auditingDao.getDistributionRequest(Mockito.anyString(), Mockito.eq(requestAction))).thenReturn(eitherRequest);
366
367         Either<Component, StorageOperationStatus> eitherService = Either.left(createServiceObject(true));
368         Mockito.when(toscaOperationFacade.getToscaElement(Mockito.anyString())).thenReturn(eitherService);
369
370         Either<List<DistributionDeployEvent>, ActionStatus> emptyEventList = Either.left(Collections.emptyList());
371         Mockito.when(auditingDao.getDistributionDeployByStatus(Mockito.anyString(), Mockito.eq("DResult"), Mockito.anyString()))
372             .thenReturn(emptyEventList);
373     }
374
375     private void assertResponse(Either<Service, ResponseFormat> createResponse, ActionStatus expectedStatus, String... variables) {
376         assertResponse(createResponse.right().value(), expectedStatus, variables);
377     }
378
379     protected void assertComponentException(ComponentException e, ActionStatus expectedStatus, String... variables) {
380         ResponseFormat actualResponse = e.getResponseFormat() != null ?
381             e.getResponseFormat() : componentsUtils.getResponseFormat(e.getActionStatus(), e.getParams());
382         assertResponse(actualResponse, expectedStatus, variables);
383     }
384
385     protected void assertResponse(ResponseFormat actualResponse, ActionStatus expectedStatus, String... variables) {
386         ResponseFormat expectedResponse = responseManager.getResponseFormat(expectedStatus, variables);
387         assertEquals(expectedResponse.getStatus(), actualResponse.getStatus());
388         assertEquals(expectedResponse.getFormattedMessage(), actualResponse.getFormattedMessage(), "assert error description");
389     }
390
391 }