2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 Nokia. 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.be.externalapi.servlet;
23 import fj.data.Either;
24 import org.apache.commons.text.StrSubstitutor;
25 import org.glassfish.hk2.utilities.binding.AbstractBinder;
26 import org.glassfish.jersey.server.ResourceConfig;
27 import org.glassfish.jersey.test.JerseyTest;
28 import org.junit.BeforeClass;
29 import org.junit.Test;
30 import org.mockito.Mockito;
31 import org.apache.http.HttpStatus;
32 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic;
33 import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
34 import org.openecomp.sdc.be.components.impl.ResourceBusinessLogic;
35 import org.openecomp.sdc.be.components.impl.ResourceImportManager;
36 import org.openecomp.sdc.be.components.impl.exceptions.ByResponseFormatComponentException;
37 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
38 import org.openecomp.sdc.be.config.ConfigurationManager;
39 import org.openecomp.sdc.be.config.SpringConfig;
40 import org.openecomp.sdc.be.dao.api.ActionStatus;
41 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
42 import org.openecomp.sdc.be.impl.ComponentsUtils;
43 import org.openecomp.sdc.be.impl.ServletUtils;
44 import org.openecomp.sdc.be.impl.WebAppContextWrapper;
45 import org.openecomp.sdc.be.model.ArtifactDefinition;
46 import org.openecomp.sdc.be.model.Resource;
47 import org.openecomp.sdc.be.model.User;
48 import org.openecomp.sdc.be.user.Role;
49 import org.openecomp.sdc.be.user.UserBusinessLogic;
50 import org.openecomp.sdc.common.api.ConfigurationSource;
51 import org.openecomp.sdc.common.api.Constants;
52 import org.openecomp.sdc.common.impl.ExternalConfiguration;
53 import org.openecomp.sdc.common.impl.FSConfigurationSource;
54 import org.openecomp.sdc.exception.ResponseFormat;
55 import org.springframework.context.ApplicationContext;
56 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
57 import org.springframework.web.context.WebApplicationContext;
59 import javax.servlet.ServletContext;
60 import javax.servlet.http.HttpServletRequest;
61 import javax.servlet.http.HttpSession;
62 import javax.ws.rs.client.Entity;
63 import javax.ws.rs.core.Application;
64 import javax.ws.rs.core.MediaType;
65 import javax.ws.rs.core.Response;
66 import java.io.IOException;
67 import java.util.HashMap;
70 import static org.assertj.core.api.Assertions.assertThat;
71 import static org.mockito.ArgumentMatchers.any;
72 import static org.mockito.ArgumentMatchers.anyString;
73 import static org.mockito.ArgumentMatchers.eq;
74 import static org.mockito.BDDMockito.given;
75 import static org.mockito.Mockito.when;
77 public class ArtifactExternalServletTest extends JerseyTest {
78 public static final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
79 public static final HttpSession session = Mockito.mock(HttpSession.class);
80 public static final ResourceImportManager resourceImportManager = Mockito.mock(ResourceImportManager.class);
81 public static final ResourceBusinessLogic resourceBusinessLogic = Mockito.mock(ResourceBusinessLogic.class);
82 public static final Resource resource = Mockito.mock(Resource.class);
83 public static final UserBusinessLogic userBusinessLogic = Mockito.mock(UserBusinessLogic.class);
84 public static final ComponentInstanceBusinessLogic componentInstanceBusinessLogic = Mockito.mock(ComponentInstanceBusinessLogic.class);
85 public static final ArtifactsBusinessLogic artifactsBusinessLogic = Mockito.mock(ArtifactsBusinessLogic.class);
87 private static final ServletContext servletContext = Mockito.mock(ServletContext.class);
88 public static final WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
89 private static final WebApplicationContext webApplicationContext = Mockito.mock(WebApplicationContext.class);
90 private static final ServletUtils servletUtils = Mockito.mock(ServletUtils.class);
91 private static final UserBusinessLogic userAdmin = Mockito.mock(UserBusinessLogic.class);
92 private static final ComponentsUtils componentUtils = Mockito.mock(ComponentsUtils.class);
93 private static final ResponseFormat generalErrorResponseFormat = new ResponseFormat(HttpStatus.SC_INTERNAL_SERVER_ERROR);
94 private static final ResponseFormat unauthorizedResponseFormat = Mockito.mock(ResponseFormat.class);
95 private static final ResponseFormat notFoundResponseFormat = Mockito.mock(ResponseFormat.class);
96 private static final ResponseFormat badRequestResponseFormat = Mockito.mock(ResponseFormat.class);
97 private static final String ASSET_TYPE = "assetType";
98 public static final String UUID = "uuid";
99 private static final String RESOURCE_INSTANCE_NAME = "resourceInstanceName";
100 private static final String INTERFACE_UUID = "interfaceUUID";
101 private static final String OPERATION_UUID = "operationUUID";
102 private static final String ARTIFACT_UUID = "artifactUUID";
103 private static final String EMPTY_JSON = "{}";
106 private static User designerUser = new User("designer", "designer", "designer", "designer@email.com", Role.DESIGNER.name(), System
107 .currentTimeMillis());
110 public static void setup() {
112 //Needed for User Authorization
113 when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
114 when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
115 when(webApplicationContext.getBean(ServletUtils.class)).thenReturn(servletUtils);
116 when(servletUtils.getUserAdmin()).thenReturn(userAdmin);
117 when(servletUtils.getComponentsUtils()).thenReturn(componentUtils);
118 when(componentUtils.getResponseFormat(ActionStatus.RESTRICTED_OPERATION)).thenReturn(unauthorizedResponseFormat);
119 when(unauthorizedResponseFormat.getStatus()).thenReturn(HttpStatus.SC_UNAUTHORIZED);
121 ResponseFormat okResponseFormat = new ResponseFormat(org.apache.http.HttpStatus.SC_OK);
123 when(componentUtils.getResponseFormat(ActionStatus.OK)) .thenReturn(okResponseFormat);
124 when(componentUtils.getResponseFormat(ActionStatus.INVALID_CONTENT)).thenReturn(badRequestResponseFormat);
125 when(componentUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)) .thenReturn(generalErrorResponseFormat);
126 when(componentUtils.getResponseFormat(any(ComponentException.class)))
127 .thenReturn(generalErrorResponseFormat);
129 ByResponseFormatComponentException ce = Mockito.mock(ByResponseFormatComponentException.class);
130 when(ce.getResponseFormat()).thenReturn(unauthorizedResponseFormat);
132 //Needed for error configuration
133 when(notFoundResponseFormat.getStatus()).thenReturn(HttpStatus.SC_NOT_FOUND);
134 when(badRequestResponseFormat.getStatus()).thenReturn(HttpStatus.SC_BAD_REQUEST);
135 when(componentUtils.getResponseFormat(eq(ActionStatus.RESOURCE_NOT_FOUND), any())).thenReturn(notFoundResponseFormat);
136 when(componentUtils.getResponseFormat(eq(ActionStatus.COMPONENT_VERSION_NOT_FOUND), any())).thenReturn(notFoundResponseFormat);
137 when(componentUtils.getResponseFormat(eq(ActionStatus.COMPONENT_INSTANCE_NOT_FOUND), any())).thenReturn(notFoundResponseFormat);
138 when(componentUtils.getResponseFormat(eq(ActionStatus.EXT_REF_NOT_FOUND), any())).thenReturn(notFoundResponseFormat);
139 when(componentUtils.getResponseFormat(eq(ActionStatus.MISSING_X_ECOMP_INSTANCE_ID), any())).thenReturn(badRequestResponseFormat);
141 Either<User, ActionStatus> designerEither = Either.left(designerUser);
143 when(userAdmin.getUser(designerUser.getUserId(), false)).thenReturn(designerEither);
145 String appConfigDir = "src/test/resources/config";
146 ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
147 ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
149 org.openecomp.sdc.be.config.Configuration configuration = new org.openecomp.sdc.be.config.Configuration();
150 configuration.setJanusGraphInMemoryGraph(true);
152 configurationManager.setConfiguration(configuration);
153 ExternalConfiguration.setAppName("catalog-be");
157 public void uploadInterfaceOperationArtifactNoInstanceIdHeaderTest() {
158 Map<String,String> parametersMap = new HashMap<>();
159 parametersMap.put(ASSET_TYPE, "assetType");
160 parametersMap.put(UUID, "uuid");
161 parametersMap.put(INTERFACE_UUID, "interfaceUUID");
162 parametersMap.put(OPERATION_UUID, "operationUUID");
163 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
165 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/interfaces/{interfaceUUID}/operations/{operationUUID}/artifacts/{artifactUUID}";
166 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
168 Response response = target()
171 .accept(MediaType.APPLICATION_JSON)
172 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
173 .post(Entity.json(EMPTY_JSON));
175 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_BAD_REQUEST);
179 public void uploadInterfaceOperationArtifactNoUserHeaderTest() {
180 Map<String,String> parametersMap = new HashMap<>();
181 parametersMap.put(ASSET_TYPE, "assetType");
182 parametersMap.put(UUID, "uuid");
183 parametersMap.put(INTERFACE_UUID, "interfaceUUID");
184 parametersMap.put(OPERATION_UUID, "operationUUID");
185 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
187 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/interfaces/{interfaceUUID}/operations/{operationUUID}/artifacts/{artifactUUID}";
188 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
190 Response response = target()
193 .accept(MediaType.APPLICATION_JSON)
194 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
195 .post(Entity.json(EMPTY_JSON));
197 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR);
201 public void uploadInterfaceOperationArtifactTest() {
202 Map<String,String> parametersMap = new HashMap<>();
203 parametersMap.put(ASSET_TYPE, "assetType");
204 parametersMap.put(UUID, "uuid");
205 parametersMap.put(INTERFACE_UUID, "interfaceUUID");
206 parametersMap.put(OPERATION_UUID, "operationUUID");
207 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
209 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/interfaces/{interfaceUUID}/operations/{operationUUID}/artifacts/{artifactUUID}";
210 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
212 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
213 Either<ArtifactDefinition, ResponseFormat> uploadArtifactEither = Either.left(artifactDefinition);
214 when(artifactsBusinessLogic
215 .updateArtifactOnInterfaceOperationByResourceUUID(anyString(), any(),
219 .thenReturn(uploadArtifactEither);
221 Response response = target()
224 .accept(MediaType.APPLICATION_JSON)
225 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
226 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
227 .post(Entity.json(EMPTY_JSON));
229 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
233 public void uploadInterfaceOperationArtifactFailedUploadTest() {
234 Map<String,String> parametersMap = new HashMap<>();
235 parametersMap.put(ASSET_TYPE, "assetType");
236 parametersMap.put(UUID, "uuid");
237 parametersMap.put(INTERFACE_UUID, "interfaceUUID");
238 parametersMap.put(OPERATION_UUID, "operationUUID");
239 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
241 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/interfaces/{interfaceUUID}/operations/{operationUUID}/artifacts/{artifactUUID}";
242 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
243 Either<ArtifactDefinition, ResponseFormat> uploadArtifactEither =
244 Either.right(new ResponseFormat(HttpStatus.SC_CONFLICT));
246 when(artifactsBusinessLogic
247 .updateArtifactOnInterfaceOperationByResourceUUID(anyString(), any(),
251 .thenReturn(uploadArtifactEither);
253 Response response = target()
256 .accept(MediaType.APPLICATION_JSON)
257 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
258 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
259 .post(Entity.json(EMPTY_JSON));
261 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_CONFLICT);
265 public void uploadInterfaceOperationArtifactExceptionDuringProcessingTest() {
266 String uuid = "uuidToThrow_uploadArtifact";
267 Map<String,String> parametersMap = new HashMap<>();
268 parametersMap.put(ASSET_TYPE, "assetType");
269 parametersMap.put(UUID, uuid);
270 parametersMap.put(INTERFACE_UUID, "interfaceUUID");
271 parametersMap.put(OPERATION_UUID, "operationUUID");
272 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
274 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/interfaces/{interfaceUUID}/operations/{operationUUID}/artifacts/{artifactUUID}";
275 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
277 when(artifactsBusinessLogic
278 .updateArtifactOnInterfaceOperationByResourceUUID(anyString(), any(),
282 .thenThrow(new RuntimeException("Text exception"));
284 Response response = target()
287 .accept(MediaType.APPLICATION_JSON)
288 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
289 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
290 .post(Entity.json(EMPTY_JSON));
292 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR);
296 public void uploadArtifactUnknownComponentTypeTest() {
297 Map<String,String> parametersMap = new HashMap<>();
298 parametersMap.put(ASSET_TYPE, "something_new");
299 parametersMap.put(UUID, "uuid");
301 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts";
302 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
304 Response response = target()
307 .accept(MediaType.APPLICATION_JSON)
308 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
309 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
310 .post(Entity.json(EMPTY_JSON));
312 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_BAD_REQUEST);
316 public void uploadArtifactErrorDuringUploadProcessingTest() {
317 Map<String,String> parametersMap = new HashMap<>();
318 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
319 parametersMap.put(UUID, "uuid");
321 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts";
322 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
324 Either<ArtifactDefinition, ResponseFormat> uploadArtifactEither =
325 Either.right(new ResponseFormat(HttpStatus.SC_CONFLICT));
327 when(artifactsBusinessLogic
328 .uploadArtifactToComponentByUUID(anyString(), any(), any(), any(), any(),
330 .thenReturn(uploadArtifactEither);
332 Response response = target()
335 .accept(MediaType.APPLICATION_JSON)
336 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
337 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
338 .post(Entity.json(EMPTY_JSON));
340 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_CONFLICT);
344 public void uploadArtifactExceptionDuringUploadTest() {
345 String uuid = "uuidToThrow_uploadArtifact";
346 Map<String,String> parametersMap = new HashMap<>();
347 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
348 parametersMap.put(UUID, uuid);
350 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts";
351 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
353 given(artifactsBusinessLogic.uploadArtifactToComponentByUUID(anyString(), any(),
354 any(), eq(uuid), any(), any()))
355 .willAnswer( invocation -> { throw new IOException("Test exception"); });
357 Response response = target()
360 .accept(MediaType.APPLICATION_JSON)
361 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
362 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
363 .post(Entity.json(EMPTY_JSON));
365 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR);
369 public void uploadArtifactTest() {
370 Map<String,String> parametersMap = new HashMap<>();
371 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
372 parametersMap.put(UUID, "uuid");
374 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts";
375 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
377 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
378 Either<ArtifactDefinition, ResponseFormat> uploadArtifactEither = Either.left(artifactDefinition);
379 when(artifactsBusinessLogic
380 .uploadArtifactToComponentByUUID(anyString(), any(), any(), any(), any(), any()))
381 .thenReturn(uploadArtifactEither);
383 Response response = target()
386 .accept(MediaType.APPLICATION_JSON)
387 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
388 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
389 .post(Entity.json(EMPTY_JSON));
391 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
395 public void uploadArtifactToInstanceErrorDuringUploadProcessingTest() {
396 Map<String,String> parametersMap = new HashMap<>();
397 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
398 parametersMap.put(UUID, "uuid");
399 parametersMap.put(RESOURCE_INSTANCE_NAME, "resourceInstanceName");
401 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts";
402 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
404 Either<ArtifactDefinition, ResponseFormat> uploadArtifactToRiByUUIDEither =
405 Either.right(new ResponseFormat(HttpStatus.SC_CONFLICT));
407 given(artifactsBusinessLogic.uploadArtifactToRiByUUID(anyString(), any(),
408 any(), any(), any(), any()))
409 .willAnswer( invocation -> uploadArtifactToRiByUUIDEither);
411 Response response = target()
414 .accept(MediaType.APPLICATION_JSON)
415 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
416 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
417 .post(Entity.json(EMPTY_JSON));
419 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_CONFLICT);
423 public void uploadArtifactToInstanceExceptionDuringUploadTest() {
424 String uuid = "uuidToThrow_uploadArtifactToInstance";
425 String resourceInstanceName = "resourceInstanceNameToThrow_uploadArtifactToInstance";
426 Map<String,String> parametersMap = new HashMap<>();
427 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
428 parametersMap.put(UUID, uuid);
429 parametersMap.put(RESOURCE_INSTANCE_NAME, resourceInstanceName);
431 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts";
432 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
434 given(artifactsBusinessLogic.uploadArtifactToRiByUUID(anyString(), any(),
435 any(), eq(uuid), eq(resourceInstanceName), any()))
436 .willAnswer( invocation -> { throw new IOException("Test exception"); });
438 Response response = target()
441 .accept(MediaType.APPLICATION_JSON)
442 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
443 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
444 .post(Entity.json(EMPTY_JSON));
446 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR);
450 public void uploadArtifactToInstanceTest() {
451 Map<String,String> parametersMap = new HashMap<>();
452 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
453 parametersMap.put(UUID, "uuid");
454 parametersMap.put(RESOURCE_INSTANCE_NAME, "resourceInstanceName");
456 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts";
457 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
459 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
460 Either<ArtifactDefinition, ResponseFormat> uploadArtifactToRiByUUIDEither = Either.left(artifactDefinition);
462 given(artifactsBusinessLogic.uploadArtifactToRiByUUID(anyString(), any(),
463 any(), any(), any(), any()))
464 .willAnswer( invocation -> uploadArtifactToRiByUUIDEither);
466 Response response = target()
469 .accept(MediaType.APPLICATION_JSON)
470 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
471 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
472 .post(Entity.json(EMPTY_JSON));
474 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
478 public void updateArtifactErrorDuringUpdateProcessingTest() {
479 Map<String,String> parametersMap = new HashMap<>();
480 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
481 parametersMap.put(UUID, "uuid");
482 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
484 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts/{artifactUUID}";
485 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
487 Either<ArtifactDefinition, ResponseFormat> updateArtifactEither =
488 Either.right(new ResponseFormat(HttpStatus.SC_CONFLICT));
490 given(artifactsBusinessLogic.updateArtifactOnComponentByUUID(anyString(), any(),
491 any(), any(), any(), any(), any()))
492 .willAnswer( invocation -> updateArtifactEither);
494 Response response = target()
497 .accept(MediaType.APPLICATION_JSON)
498 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
499 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
500 .post(Entity.json(EMPTY_JSON));
502 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_CONFLICT);
506 public void updateArtifactExceptionDuringUpdateTest() {
507 String uuid = "uuidToThrow_updateArtifact";
508 String artifactUUID = "artifactUUIDToThrow_updateArtifact";
509 Map<String,String> parametersMap = new HashMap<>();
510 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
511 parametersMap.put(UUID, uuid);
512 parametersMap.put(ARTIFACT_UUID, artifactUUID);
514 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts/{artifactUUID}";
515 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
517 given(artifactsBusinessLogic.updateArtifactOnComponentByUUID(anyString(), any(),
518 any(), eq(uuid), eq(artifactUUID), any(), any()))
519 .willAnswer( invocation -> { throw new IOException("Test exception"); });
521 Response response = target()
524 .accept(MediaType.APPLICATION_JSON)
525 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
526 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
527 .post(Entity.json(EMPTY_JSON));
529 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR);
533 public void updateArtifactTest() {
534 Map<String,String> parametersMap = new HashMap<>();
535 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
536 parametersMap.put(UUID, "uuid");
537 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
539 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts/{artifactUUID}";
540 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
542 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
543 Either<ArtifactDefinition, ResponseFormat> uploadArtifactToRiByUUIDEither = Either.left(artifactDefinition);
545 given(artifactsBusinessLogic.updateArtifactOnComponentByUUID(anyString(), any(),
546 any(), any(), any(), any(), any()))
547 .willAnswer( invocation -> uploadArtifactToRiByUUIDEither);
549 Response response = target()
552 .accept(MediaType.APPLICATION_JSON)
553 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
554 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
555 .post(Entity.json(EMPTY_JSON));
557 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
560 /////////////////////////
563 public void updateArtifactOnResourceInstanceErrorDuringUpdateProcessingTest() {
564 Map<String,String> parametersMap = new HashMap<>();
565 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
566 parametersMap.put(UUID, "uuid");
567 parametersMap.put(RESOURCE_INSTANCE_NAME, "resourceInstanceName");
568 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
570 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts/{artifactUUID}";
571 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
573 Either<ArtifactDefinition, ResponseFormat> updateArtifactOnResourceInstanceEither =
574 Either.right(new ResponseFormat(HttpStatus.SC_CONFLICT));
576 given(artifactsBusinessLogic.updateArtifactOnRiByUUID(anyString(), any(),
577 any(), any(), any(), any(), any()))
578 .willAnswer( invocation -> updateArtifactOnResourceInstanceEither);
580 Response response = target()
583 .accept(MediaType.APPLICATION_JSON)
584 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
585 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
586 .post(Entity.json(EMPTY_JSON));
588 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_CONFLICT);
592 public void updateArtifactOnResourceInstanceExceptionDuringUpdateTest() {
593 String uuid = "uuidToThrow_updateArtifactOnResourceInstance";
594 String resourceInstanceName = "resourceInstanceNameToThrow_updateArtifactOnResourceInstance";
595 String artifactUUID = "artifactUUIDToThrow_updateArtifactOnResourceInstance";
596 Map<String,String> parametersMap = new HashMap<>();
597 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
598 parametersMap.put(UUID, uuid);
599 parametersMap.put(RESOURCE_INSTANCE_NAME, resourceInstanceName);
600 parametersMap.put(ARTIFACT_UUID, artifactUUID);
602 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts/{artifactUUID}";
603 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
605 given(artifactsBusinessLogic.updateArtifactOnRiByUUID(anyString(), any(),
606 any(), eq(uuid), eq(resourceInstanceName), eq(artifactUUID), any()))
607 .willAnswer( invocation -> { throw new IOException("Test exception"); });
609 Response response = target()
612 .accept(MediaType.APPLICATION_JSON)
613 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
614 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
615 .post(Entity.json(EMPTY_JSON));
617 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR);
621 public void updateArtifactOnResourceInstanceTest() {
622 Map<String,String> parametersMap = new HashMap<>();
623 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
624 parametersMap.put(UUID, "uuid");
625 parametersMap.put(RESOURCE_INSTANCE_NAME, "resourceInstanceName");
626 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
628 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts/{artifactUUID}";
629 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
631 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
632 Either<ArtifactDefinition, ResponseFormat> updateArtifactOnResourceInstanceEither = Either.left(artifactDefinition);
634 given(artifactsBusinessLogic.updateArtifactOnRiByUUID(anyString(), any(),
635 any(), any(), any(), any(), any()))
636 .willAnswer( invocation -> updateArtifactOnResourceInstanceEither);
638 Response response = target()
641 .accept(MediaType.APPLICATION_JSON)
642 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
643 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
644 .post(Entity.json(EMPTY_JSON));
646 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
650 public void deleteArtifactErrorDuringDeleteProcessingTest() {
651 Map<String,String> parametersMap = new HashMap<>();
652 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
653 parametersMap.put(UUID, "uuid");
654 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
656 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts/{artifactUUID}";
657 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
659 Either<ArtifactDefinition, ResponseFormat> deleteArtifactOnComponentByUUIDEither =
660 Either.right(new ResponseFormat(HttpStatus.SC_CONFLICT));
662 given(artifactsBusinessLogic.deleteArtifactOnComponentByUUID(any(), any(), any(), any(),
664 .willAnswer( invocation -> deleteArtifactOnComponentByUUIDEither);
666 Response response = target()
669 .accept(MediaType.APPLICATION_JSON)
670 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
671 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
674 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_CONFLICT);
678 public void deleteArtifactExceptionDuringDeleteTest() {
679 String uuid = "uuidToThrow_deleteArtifact";
680 String artifactUUID = "artifactUUIDToThrow_deleteArtifact";
681 Map<String,String> parametersMap = new HashMap<>();
682 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
683 parametersMap.put(UUID, uuid);
684 parametersMap.put(ARTIFACT_UUID, artifactUUID);
686 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts/{artifactUUID}";
687 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
689 given(artifactsBusinessLogic.deleteArtifactOnComponentByUUID(any(), any(), eq(uuid),
690 eq(artifactUUID), any(), any()))
691 .willAnswer( invocation -> { throw new IOException("Test exception"); });
693 Response response = target()
696 .accept(MediaType.APPLICATION_JSON)
697 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
698 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
701 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR);
705 public void deleteArtifactTest() {
706 Map<String,String> parametersMap = new HashMap<>();
707 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
708 parametersMap.put(UUID, "uuid");
709 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
711 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts/{artifactUUID}";
712 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
714 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
715 Either<ArtifactDefinition, ResponseFormat> deleteArtifactOnComponentByUUIDEither = Either.left(artifactDefinition);
717 given(artifactsBusinessLogic.deleteArtifactOnComponentByUUID(any(), any(), any(), any(),
719 .willAnswer( invocation -> deleteArtifactOnComponentByUUIDEither);
721 Response response = target()
724 .accept(MediaType.APPLICATION_JSON)
725 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
726 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
729 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
733 public void deleteArtifactOnResourceErrorDuringDeleteProcessingTest() {
734 Map<String,String> parametersMap = new HashMap<>();
735 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
736 parametersMap.put(UUID, "uuid");
737 parametersMap.put(RESOURCE_INSTANCE_NAME, "resourceInstanceName");
738 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
740 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts/{artifactUUID}";
741 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
743 Either<ArtifactDefinition, ResponseFormat> deleteArtifactOnRiByUUIDEither =
744 Either.right(new ResponseFormat(HttpStatus.SC_CONFLICT));
746 given(artifactsBusinessLogic.deleteArtifactOnRiByUUID(any(), any(), any(), any(),
748 .willAnswer( invocation -> deleteArtifactOnRiByUUIDEither);
750 Response response = target()
753 .accept(MediaType.APPLICATION_JSON)
754 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
755 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
758 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_CONFLICT);
762 public void deleteArtifactOnResourceExceptionDuringDeleteTest() {
763 String uuid = "uuidToThrow_deleteArtifactOnResource";
764 String resourceInstanceName = "resourceInstanceNameToThrow_deleteArtifactOnResource";
765 String artifactUUID = "artifactUUIDToThrow_deleteArtifactOnResource";
766 Map<String,String> parametersMap = new HashMap<>();
767 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
768 parametersMap.put(UUID, uuid);
769 parametersMap.put(RESOURCE_INSTANCE_NAME, resourceInstanceName);
770 parametersMap.put(ARTIFACT_UUID, artifactUUID);
772 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts/{artifactUUID}";
773 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
775 given(artifactsBusinessLogic.deleteArtifactOnRiByUUID(any(), any(), eq(uuid),
776 eq(resourceInstanceName), eq(artifactUUID), any()))
777 .willAnswer( invocation -> { throw new IOException("Test exception"); });
779 Response response = target()
782 .accept(MediaType.APPLICATION_JSON)
783 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
784 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
787 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR);
791 public void deleteArtifactOnResourceTest() {
792 Map<String,String> parametersMap = new HashMap<>();
793 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
794 parametersMap.put(UUID, "uuid");
795 parametersMap.put(RESOURCE_INSTANCE_NAME, "resourceInstanceName");
796 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
798 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts/{artifactUUID}";
799 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
801 ArtifactDefinition artifactDefinition = new ArtifactDefinition();
802 Either<ArtifactDefinition, ResponseFormat> deleteArtifactOnRiByUUIDEither = Either.left(artifactDefinition);
804 given(artifactsBusinessLogic.deleteArtifactOnRiByUUID(any(), any(), any(), any(),
806 .willAnswer( invocation -> deleteArtifactOnRiByUUIDEither);
808 Response response = target()
811 .accept(MediaType.APPLICATION_JSON)
812 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
813 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
816 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
820 public void downloadComponentArtifactErrorDuringDownloadProcessingTest() {
821 Map<String,String> parametersMap = new HashMap<>();
822 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
823 parametersMap.put(UUID, "uuid");
824 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
826 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts/{artifactUUID}";
827 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
829 Either<byte[], ResponseFormat> downloadComponentArtifactByUUIDsEither =
830 Either.right(new ResponseFormat(HttpStatus.SC_SERVICE_UNAVAILABLE));
832 given(artifactsBusinessLogic.downloadComponentArtifactByUUIDs(any(), any(), any(), any()))
833 .willAnswer( invocation -> downloadComponentArtifactByUUIDsEither);
835 Response response = target()
838 .accept(MediaType.APPLICATION_OCTET_STREAM)
839 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
840 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
843 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_SERVICE_UNAVAILABLE);
847 public void downloadComponentArtifactExceptionDuringUploadTest() {
848 String uuid = "uuidToThrow_downloadComponentArtifact";
849 String artifactUUID = "artifactUUIDToThrow_downloadComponentArtifact";
850 Map<String,String> parametersMap = new HashMap<>();
851 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
852 parametersMap.put(UUID, uuid);
853 parametersMap.put(ARTIFACT_UUID, artifactUUID);
855 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts/{artifactUUID}";
856 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
858 given(artifactsBusinessLogic.downloadComponentArtifactByUUIDs(any(), eq(uuid),
859 eq(artifactUUID), any()))
860 .willAnswer( invocation -> { throw new IOException("Test exception"); });
862 Response response = target()
865 .accept(MediaType.APPLICATION_OCTET_STREAM)
866 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
867 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
870 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR);
874 public void downloadComponentArtifactTest() {
875 Map<String,String> parametersMap = new HashMap<>();
876 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
877 parametersMap.put(UUID, "uuid");
878 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
880 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/artifacts/{artifactUUID}";
881 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
883 byte[] responsePayload = {0xA, 0xB, 0xC, 0xD};
884 Either<byte[], ResponseFormat> downloadComponentArtifactByUUIDsEither = Either.left(responsePayload);
886 given(artifactsBusinessLogic.downloadComponentArtifactByUUIDs(any(), any(), any(), any()))
887 .willAnswer( invocation -> downloadComponentArtifactByUUIDsEither);
889 Response response = target()
892 .accept(MediaType.APPLICATION_OCTET_STREAM)
893 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
894 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
897 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
901 public void downloadResourceInstanceArtifactErrorDuringDownloadProcessingTest() {
902 Map<String,String> parametersMap = new HashMap<>();
903 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
904 parametersMap.put(UUID, "uuid");
905 parametersMap.put(RESOURCE_INSTANCE_NAME, "resourceInstanceName");
906 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
908 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts/{artifactUUID}";
909 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
911 Either<byte[], ResponseFormat> downloadResourceInstanceArtifactByUUIDsEither =
912 Either.right(new ResponseFormat(HttpStatus.SC_SERVICE_UNAVAILABLE));
914 given(artifactsBusinessLogic.downloadResourceInstanceArtifactByUUIDs(any(), any(), any(),
916 .willAnswer( invocation -> downloadResourceInstanceArtifactByUUIDsEither);
918 Response response = target()
921 .accept(MediaType.APPLICATION_OCTET_STREAM)
922 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
923 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
926 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_SERVICE_UNAVAILABLE);
930 public void downloadResourceInstanceArtifactExceptionDuringUploadTest() {
931 String uuid = "uuidToThrow_downloadResourceInstanceArtifact";
932 String resourceInstanceName = "resourceInstanceNameToThrow_downloadResourceInstanceArtifact";
933 String artifactUUID = "artifactUUIDToThrow_downloadResourceInstanceArtifact";
934 Map<String,String> parametersMap = new HashMap<>();
935 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
936 parametersMap.put(UUID, uuid);
937 parametersMap.put(RESOURCE_INSTANCE_NAME, resourceInstanceName);
938 parametersMap.put(ARTIFACT_UUID, artifactUUID);
940 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts/{artifactUUID}";
941 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
943 when(artifactsBusinessLogic.downloadResourceInstanceArtifactByUUIDs(any(), eq(uuid),
944 eq(resourceInstanceName), eq(artifactUUID)))
945 .thenThrow(new ByResponseFormatComponentException(generalErrorResponseFormat));
947 Response response = target()
950 .accept(MediaType.APPLICATION_OCTET_STREAM)
951 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
952 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
955 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR);
959 public void downloadResourceInstanceArtifactTest() {
960 Map<String,String> parametersMap = new HashMap<>();
961 parametersMap.put(ASSET_TYPE, ComponentTypeEnum.SERVICE_PARAM_NAME);
962 parametersMap.put(UUID, "uuid");
963 parametersMap.put(RESOURCE_INSTANCE_NAME, "resourceInstanceName");
964 parametersMap.put(ARTIFACT_UUID, "artifactUUID");
966 String formatEndpoint = "/v1/catalog/{assetType}/{uuid}/resourceInstances/{resourceInstanceName}/artifacts/{artifactUUID}";
967 String path = StrSubstitutor.replace(formatEndpoint, parametersMap, "{","}");
969 byte[] responsePayload = {0xA, 0xB, 0xC, 0xD};
970 Either<byte[], ResponseFormat> downloadResourceInstanceArtifactByUUIDsEither = Either.left(responsePayload);
972 given(artifactsBusinessLogic.downloadResourceInstanceArtifactByUUIDs(any(), any(), any(),
974 .willAnswer( invocation -> downloadResourceInstanceArtifactByUUIDsEither);
976 Response response = target()
979 .accept(MediaType.APPLICATION_OCTET_STREAM)
980 .header(Constants.X_ECOMP_INSTANCE_ID_HEADER, "mockXEcompInstanceId")
981 .header(Constants.USER_ID_HEADER, designerUser.getUserId())
984 assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
988 protected Application configure() {
989 ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
990 return new ResourceConfig(ArtifactExternalServlet.class)
991 .register(new AbstractBinder() {
994 protected void configure() {
995 bind(request).to(HttpServletRequest.class);
996 bind(userBusinessLogic).to(UserBusinessLogic.class);
997 bind(componentInstanceBusinessLogic).to(ComponentInstanceBusinessLogic.class);
998 bind(componentUtils).to(ComponentsUtils.class);
999 bind(servletUtils).to(ServletUtils.class);
1000 bind(resourceImportManager).to(ResourceImportManager.class);
1001 bind(artifactsBusinessLogic).to(ArtifactsBusinessLogic.class);
1004 .property("contextConfig", context);