f1ee0d4c6c795362be1903f0ff3f9413f8552324
[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(componentsUtils);
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     final InputsBusinessLogic inputsBusinessLogic = Mockito.mock(InputsBusinessLogic.class);
144
145     public ServiceBusinessLogicBaseTestSetup() {
146
147     }
148
149     protected ServiceValidator createServiceValidator() {
150         List<ComponentFieldValidator> componentFieldValidators = Arrays.asList(componentContactIdValidator,
151             componentDescriptionValidator,
152             componentIconValidator, componentNameValidator,
153             new ComponentProjectCodeValidator(componentsUtils),
154             componentTagsValidator);
155
156         List<ServiceFieldValidator> serviceFieldValidators = Arrays.asList(serviceCategoryValidator, new ServiceEnvironmentContextValidator(),
157             serviceInstantiationTypeValidator, new ServiceNamingPolicyValidator(componentsUtils),
158             serviceRoleValidator, serviceTypeValidator);
159         return new ServiceValidator(componentsUtils, componentFieldValidators, serviceFieldValidators);
160     }
161
162     @BeforeEach
163     public void setup() {
164
165         // Elements
166         IElementOperation mockElementDao = new ElementOperationMock();
167
168         // User data and management
169         user = new User();
170         user.setUserId("jh0003");
171         user.setFirstName("Jimmi");
172         user.setLastName("Hendrix");
173         user.setRole(Role.ADMIN.name());
174
175         when(mockUserAdmin.getUser("jh0003", false)).thenReturn(user);
176         when(userValidations.validateUserExists("jh0003")).thenReturn(user);
177         when(userValidations.validateUserNotEmpty(eq(user), anyString())).thenReturn(user);
178         when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).thenReturn(configurationManager);
179         when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
180         when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webAppContext);
181         when(webAppContext.getBean(IElementOperation.class)).thenReturn(mockElementDao);
182         when(graphLockOperation.lockComponent(Mockito.anyString(), Mockito.eq(NodeTypeEnum.Service))).thenReturn(StorageOperationStatus.OK);
183         when(graphLockOperation.lockComponentByName(Mockito.anyString(), Mockito.eq(NodeTypeEnum.Service))).thenReturn(StorageOperationStatus.OK);
184         when(catalogOperation.updateCatalog(Mockito.any(), Mockito.any())).thenReturn(ActionStatus.OK);
185         // artifact bussinesslogic
186         ArtifactDefinition artifactDef = new ArtifactDefinition();
187         when(artifactBl.createArtifactPlaceHolderInfo(Mockito.any(), Mockito.anyString(), Mockito.anyMap(), Mockito.any(User.class),
188             Mockito.any(ArtifactGroupTypeEnum.class))).thenReturn(artifactDef);
189
190         // createService
191         Service serviceResponse = createServiceObject(true);
192         Either<Component, StorageOperationStatus> eitherCreate = Either.left(serviceResponse);
193         when(toscaOperationFacade.createToscaComponent(Mockito.any(Component.class))).thenReturn(eitherCreate);
194         Either<Boolean, StorageOperationStatus> eitherCount = Either.left(false);
195         when(toscaOperationFacade.validateComponentNameExists("Service", null, ComponentTypeEnum.SERVICE)).thenReturn(eitherCount);
196         Either<Boolean, StorageOperationStatus> eitherCountExist = Either.left(true);
197         when(toscaOperationFacade.validateComponentNameExists("alreadyExist", null, ComponentTypeEnum.SERVICE)).thenReturn(eitherCountExist);
198         when(userValidations.validateUserExists(user)).thenReturn(user);
199
200         genericService = setupGenericServiceMock();
201         Either<Resource, StorageOperationStatus> findLatestGeneric = Either.left(genericService);
202         when(toscaOperationFacade.getLatestCertifiedNodeTypeByToscaResourceName(GENERIC_SERVICE_NAME)).thenReturn(findLatestGeneric);
203
204         bl = new ServiceBusinessLogic(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, groupBusinessLogic, interfaceOperation,
205             interfaceLifecycleTypeOperation, artifactBl, distributionEngine, componentInstanceBusinessLogic, serviceDistributionValidation,
206             forwardingPathValidator, uiComponentDataConverter, artifactToscaOperation, componentContactIdValidator, componentNameValidator,
207             componentTagsValidator, componentValidator, componentIconValidator, componentProjectCodeValidator, componentDescriptionValidator,
208             modelOperation, serviceRoleValidator, serviceInstantiationTypeValidator, serviceCategoryValidator, serviceValidator, inputsBusinessLogic);
209         bl.setComponentContactIdValidator(componentContactIdValidator);
210         bl.setComponentIconValidator(componentIconValidator);
211         bl.setComponentTagsValidator(componentTagsValidator);
212         bl.setComponentNameValidator(componentNameValidator);
213         bl.setComponentDescriptionValidator(componentDescriptionValidator);
214         bl.setComponentProjectCodeValidator(componentProjectCodeValidator);
215         bl.setServiceTypeValidator(serviceTypeValidator);
216         bl.setServiceFunctionValidator(serviceFunctionValidator);
217         bl.setElementDao(mockElementDao);
218         bl.setUserAdmin(mockUserAdmin);
219         bl.setArtifactBl(artifactBl);
220         bl.setGraphLockOperation(graphLockOperation);
221         bl.setJanusGraphDao(mockJanusGraphDao);
222         bl.setToscaOperationFacade(toscaOperationFacade);
223         bl.setGenericTypeBusinessLogic(genericTypeBusinessLogic);
224         bl.setComponentsUtils(componentsUtils);
225         bl.setCassandraAuditingDao(auditingDao);
226         bl.setUserValidations(userValidations);
227         bl.setCatalogOperations(catalogOperation);
228
229         mockAuditingDaoLogic();
230
231         responseManager = ResponseFormatManager.getInstance();
232
233
234     }
235
236     protected Resource setupGenericServiceMock() {
237         Resource genericService = new Resource();
238         genericService.setVersion("1.0");
239         genericService.setToscaResourceName(GENERIC_SERVICE_NAME);
240         return genericService;
241     }
242
243     protected Service createServiceObject(boolean afterCreate) {
244         Service service = new Service();
245         service.setUniqueId("sid");
246         service.setName("Service");
247         CategoryDefinition category = new CategoryDefinition();
248         category.setName(SERVICE_CATEGORY);
249         category.setIcons(Collections.singletonList("defaulticon"));
250         List<CategoryDefinition> categories = new ArrayList<>();
251         categories.add(category);
252         service.setCategories(categories);
253         service.setInstantiationType(INSTANTIATION_TYPE);
254
255         service.setDescription("description");
256         List<String> tgs = new ArrayList<>();
257         tgs.add(service.getName());
258         service.setTags(tgs);
259         service.setIcon("defaulticon");
260         service.setContactId("aa1234");
261         service.setProjectCode("12345");
262         service.setEcompGeneratedNaming(true);
263
264         if (afterCreate) {
265             service.setVersion("0.1");
266             service.setUniqueId(service.getName() + ":" + service.getVersion());
267             service.setCreatorUserId(user.getUserId());
268             service.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
269         }
270         return service;
271     }
272
273     private void mockAuditingDaoLogic() {
274         final ResourceAdminEvent createResourceAudit = new ResourceAdminEvent();
275         createResourceAudit.setModifier("Carlos Santana(cs0008)");
276         createResourceAudit.setCurrState("NOT_CERTIFIED_CHECKOUT");
277         createResourceAudit.setCurrVersion("0.1");
278         createResourceAudit.setServiceInstanceId("82eddd99-0bd9-4742-ab0a-1bdb5e262a05");
279         createResourceAudit.setRequestId("3e65cea1-7403-4bc7-b461-e2544d83799f");
280         createResourceAudit.setDesc("OK");
281         createResourceAudit.setResourceType("Resource");
282         createResourceAudit.setStatus("201");
283         createResourceAudit.setPrevVersion("");
284         createResourceAudit.setAction("Create");
285         createResourceAudit.setPrevState("");
286         createResourceAudit.setResourceName("MyTestResource");
287
288         final ResourceAdminEvent checkInResourceAudit = new ResourceAdminEvent();
289         checkInResourceAudit.setModifier("Carlos Santana(cs0008)");
290         checkInResourceAudit.setCurrState("NOT_CERTIFIED_CHECKIN");
291         checkInResourceAudit.setCurrVersion("0.1");
292         checkInResourceAudit.setServiceInstanceId("82eddd99-0bd9-4742-ab0a-1bdb5e262a05");
293         checkInResourceAudit.setRequestId("ffacbf5d-eeb1-43c6-a310-37fe7e1cc091");
294         checkInResourceAudit.setDesc("OK");
295         checkInResourceAudit.setComment("Stam");
296         checkInResourceAudit.setResourceType("Resource");
297         checkInResourceAudit.setStatus("200");
298         checkInResourceAudit.setPrevVersion("0.1");
299         checkInResourceAudit.setAction("Checkin");
300         checkInResourceAudit.setPrevState("NOT_CERTIFIED_CHECKOUT");
301         checkInResourceAudit.setResourceName("MyTestResource");
302
303         final ResourceAdminEvent checkOutResourceAudit = new ResourceAdminEvent();
304         checkOutResourceAudit.setModifier("Carlos Santana(cs0008)");
305         checkOutResourceAudit.setCurrState("NOT_CERTIFIED_CHECKOUT");
306         checkOutResourceAudit.setCurrVersion("0.2");
307         checkOutResourceAudit.setServiceInstanceId("82eddd99-0bd9-4742-ab0a-1bdb5e262a05");
308         checkOutResourceAudit.setRequestId("7add5078-4c16-4d74-9691-cc150e3c96b8");
309         checkOutResourceAudit.setDesc("OK");
310         checkOutResourceAudit.setComment("");
311         checkOutResourceAudit.setResourceType("Resource");
312         checkOutResourceAudit.setStatus("200");
313         checkOutResourceAudit.setPrevVersion("0.1");
314         checkOutResourceAudit.setAction("Checkout");
315         checkOutResourceAudit.setPrevState("NOT_CERTIFIED_CHECKIN");
316         checkOutResourceAudit.setResourceName("MyTestResource");
317         List<ResourceAdminEvent> list = new ArrayList<>() {
318             {
319                 add(createResourceAudit);
320                 add(checkInResourceAudit);
321                 add(checkOutResourceAudit);
322             }
323         };
324         Either<List<ResourceAdminEvent>, ActionStatus> result = Either.left(list);
325         Mockito.when(auditingDao.getByServiceInstanceId(Mockito.anyString())).thenReturn(result);
326
327         List<ResourceAdminEvent> listPrev = new ArrayList<>();
328         Either<List<ResourceAdminEvent>, ActionStatus> resultPrev = Either.left(listPrev);
329         Mockito.when(auditingDao.getAuditByServiceIdAndPrevVersion(Mockito.anyString(), Mockito.anyString())).thenReturn(resultPrev);
330
331         List<ResourceAdminEvent> listCurr = new ArrayList<>() {
332             {
333                 add(checkOutResourceAudit);
334             }
335         };
336         Either<List<ResourceAdminEvent>, ActionStatus> resultCurr = Either.left(listCurr);
337         Mockito.when(auditingDao.getAuditByServiceIdAndCurrVersion(Mockito.anyString(), Mockito.anyString())).thenReturn(resultCurr);
338
339         Either<List<ResourceAdminEvent>, ActionStatus> archiveAuditList = Either.left(Arrays.asList(auditArchive1, auditArchive2));
340         when(auditingDao.getArchiveAuditByServiceInstanceId(anyString())).thenReturn(archiveAuditList);
341
342         Either<List<ResourceAdminEvent>, ActionStatus> restoreAuditList = Either.left(Collections.singletonList(auditRestore));
343         when(auditingDao.getRestoreAuditByServiceInstanceId(anyString())).thenReturn(restoreAuditList);
344
345     }
346
347     protected void setupBeforeDeploy(String notifyAction, String requestAction, String did) {
348
349         DistributionNotificationEvent notifyEvent = new DistributionNotificationEvent();
350         notifyEvent.setAction(notifyAction);
351         notifyEvent.setDid(did);
352         notifyEvent.setStatus("200");
353
354         ResourceAdminEvent requestEvent = new ResourceAdminEvent();
355         requestEvent.setAction(requestAction);
356         requestEvent.setDid(did);
357         requestEvent.setStatus("200");
358
359         List<DistributionNotificationEvent> notifyResults = Collections.singletonList(notifyEvent);
360         Either<List<DistributionNotificationEvent>, ActionStatus> eitherNotify = Either.left(notifyResults);
361
362         Mockito.when(auditingDao.getDistributionNotify(Mockito.anyString(), Mockito.eq(notifyAction))).thenReturn(eitherNotify);
363
364         List<ResourceAdminEvent> requestResults = Collections.singletonList(requestEvent);
365         Either<List<ResourceAdminEvent>, ActionStatus> eitherRequest = Either.left(requestResults);
366         Mockito.when(auditingDao.getDistributionRequest(Mockito.anyString(), Mockito.eq(requestAction))).thenReturn(eitherRequest);
367
368         Either<Component, StorageOperationStatus> eitherService = Either.left(createServiceObject(true));
369         Mockito.when(toscaOperationFacade.getToscaElement(Mockito.anyString())).thenReturn(eitherService);
370
371         Either<List<DistributionDeployEvent>, ActionStatus> emptyEventList = Either.left(Collections.emptyList());
372         Mockito.when(auditingDao.getDistributionDeployByStatus(Mockito.anyString(), Mockito.eq("DResult"), Mockito.anyString()))
373             .thenReturn(emptyEventList);
374     }
375
376     private void assertResponse(Either<Service, ResponseFormat> createResponse, ActionStatus expectedStatus, String... variables) {
377         assertResponse(createResponse.right().value(), expectedStatus, variables);
378     }
379
380     protected void assertComponentException(ComponentException e, ActionStatus expectedStatus, String... variables) {
381         ResponseFormat actualResponse = e.getResponseFormat() != null ?
382             e.getResponseFormat() : componentsUtils.getResponseFormat(e.getActionStatus(), e.getParams());
383         assertResponse(actualResponse, expectedStatus, variables);
384     }
385
386     protected void assertResponse(ResponseFormat actualResponse, ActionStatus expectedStatus, String... variables) {
387         ResponseFormat expectedResponse = responseManager.getResponseFormat(expectedStatus, variables);
388         assertEquals(expectedResponse.getStatus(), actualResponse.getStatus());
389         assertEquals(expectedResponse.getFormattedMessage(), actualResponse.getFormattedMessage(), "assert error description");
390     }
391
392 }