Implementing download service CSAR endpoint 46/117346/1
authorwaqas.ikram <waqas.ikram@est.tech>
Tue, 2 Feb 2021 10:03:58 +0000 (10:03 +0000)
committerwaqas.ikram <waqas.ikram@est.tech>
Tue, 2 Feb 2021 10:24:29 +0000 (10:24 +0000)
Change-Id: If0de06835d0bfc2a1531fddba0b0298a4bc15af8
Issue-ID: INT-1839
Signed-off-by: waqas.ikram <waqas.ikram@est.tech>
plans/so/integration-etsi-testing/so-simulators/sdc-simulator/src/main/java/org/onap/so/sdcsimulator/controller/CatalogController.java
plans/so/integration-etsi-testing/so-simulators/sdc-simulator/src/main/java/org/onap/so/sdcsimulator/providers/AssetProviderImpl.java
plans/so/integration-etsi-testing/so-simulators/sdc-simulator/src/test/java/org/onap/so/sdcsimulator/controller/CatalogControllerTest.java
plans/so/integration-etsi-testing/so-simulators/sdc-simulator/src/test/java/org/onap/so/sdcsimulator/providers/AssetProviderImplTest.java

index f22bcf6..eebc08c 100644 (file)
@@ -44,23 +44,23 @@ import org.springframework.web.bind.annotation.RequestMapping;
 public class CatalogController {
     private static final Logger LOGGER = LoggerFactory.getLogger(CatalogController.class);
 
-    private AssetProvider resourceProvider;
+    private final AssetProvider assetProvider;
 
     @Autowired
-    public CatalogController(final AssetProvider resourceProvider) {
-        this.resourceProvider = resourceProvider;
+    public CatalogController(final AssetProvider assetProvider) {
+        this.assetProvider = assetProvider;
     }
 
     @GetMapping(value = "/resources", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
     public ResponseEntity<?> getResources() {
         LOGGER.info("Running getResources ...");
-        return ResponseEntity.ok().body(resourceProvider.getAssetInfo(AssetType.RESOURCES));
+        return ResponseEntity.ok().body(assetProvider.getAssetInfo(AssetType.RESOURCES));
     }
 
     @GetMapping(value = "/resources/{csarId}/toscaModel", produces = MediaType.APPLICATION_OCTET_STREAM)
-    public ResponseEntity<byte[]> getCsar(@PathVariable("csarId") final String csarId) {
+    public ResponseEntity<byte[]> getResourceCsar(@PathVariable("csarId") final String csarId) {
         LOGGER.info("Running getCsar for {} ...", csarId);
-        final Optional<byte[]> resource = resourceProvider.getAsset(csarId, AssetType.RESOURCES);
+        final Optional<byte[]> resource = assetProvider.getAsset(csarId, AssetType.RESOURCES);
         if (resource.isPresent()) {
             return new ResponseEntity<>(resource.get(), HttpStatus.OK);
         }
@@ -73,7 +73,7 @@ public class CatalogController {
             produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
     public ResponseEntity<Metadata> getResourceMetadata(@PathVariable("csarId") final String csarId) {
         LOGGER.info("Running getResourceMetadata for {} ...", csarId);
-        final Optional<Metadata> resource = resourceProvider.getMetadata(csarId, AssetType.RESOURCES);
+        final Optional<Metadata> resource = assetProvider.getMetadata(csarId, AssetType.RESOURCES);
         if (resource.isPresent()) {
             return new ResponseEntity<>(resource.get(), HttpStatus.OK);
         }
@@ -86,14 +86,27 @@ public class CatalogController {
     @GetMapping(value = "/services", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
     public ResponseEntity<?> getServices() {
         LOGGER.info("Running getServices ...");
-        return ResponseEntity.ok().body(resourceProvider.getAssetInfo(AssetType.SERVICES));
+        return ResponseEntity.ok().body(assetProvider.getAssetInfo(AssetType.SERVICES));
     }
 
+    @GetMapping(value = "/services/{csarId}/toscaModel", produces = MediaType.APPLICATION_OCTET_STREAM)
+    public ResponseEntity<byte[]> getServiceCsar(@PathVariable("csarId") final String csarId) {
+        LOGGER.info("Running getServiceCsar for {} ...", csarId);
+        final Optional<byte[]> resource = assetProvider.getAsset(csarId, AssetType.SERVICES);
+        if (resource.isPresent()) {
+            return new ResponseEntity<>(resource.get(), HttpStatus.OK);
+        }
+        LOGGER.error("Unable to find csar: {}", csarId);
+
+        return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+    }
+
+
     @GetMapping(value = "/services/{csarId}/metadata",
             produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
     public ResponseEntity<Metadata> getServiceMetadata(@PathVariable("csarId") final String csarId) {
         LOGGER.info("Running getServiceMetadata for {} ...", csarId);
-        final Optional<Metadata> resource = resourceProvider.getMetadata(csarId, AssetType.SERVICES);
+        final Optional<Metadata> resource = assetProvider.getMetadata(csarId, AssetType.SERVICES);
         if (resource.isPresent()) {
             return new ResponseEntity<>(resource.get(), HttpStatus.OK);
         }
index 28800b5..8996d24 100644 (file)
@@ -191,7 +191,7 @@ public class AssetProviderImpl implements AssetProvider {
     }
 
     private Optional<InputStream> getInputStream(final String csarId, final AssetType assetType) throws IOException {
-        final Path filePath = Paths.get(resourceLocation, csarId + DOT_CSAR);
+        final Path filePath = Paths.get(resourceLocation, assetType.toString(), csarId + DOT_CSAR);
         if (Files.exists(filePath)) {
             LOGGER.info("Found csar on file system using path: {}", filePath);
             return Optional.of(Files.newInputStream(filePath));
index 57db74c..e3d040d 100644 (file)
@@ -27,7 +27,6 @@ import java.util.Set;
 import java.util.UUID;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.so.sdcsimulator.models.Metadata;
 import org.onap.so.sdcsimulator.models.ResourceAssetInfo;
 import org.onap.so.sdcsimulator.models.ResourceMetadata;
 import org.onap.so.sdcsimulator.models.ServiceAssetInfo;
@@ -80,7 +79,7 @@ public class CatalogControllerTest {
     private UserCredentials userCredentials;
 
     @Test
-    public void test_getCsar_validCsarId_matchContent() {
+    public void test_getResourceCsar_validCsarId_matchContent() {
 
         final String url = getBaseUrl() + "/resources/" + RESOURCE_ID + "/toscaModel";
 
@@ -93,6 +92,20 @@ public class CatalogControllerTest {
 
     }
 
+    @Test
+    public void test_getServiceCsar_validCsarId_matchContent() {
+
+        final String url = getBaseUrl() + "/services/" + SERVICE_ID + "/toscaModel";
+
+        final ResponseEntity<byte[]> response =
+                restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<>(getHttpHeaders()), byte[].class);
+
+        assertEquals(HttpStatus.OK, response.getStatusCode());
+        assertTrue(response.hasBody());
+        assertEquals(147743, response.getBody().length);
+
+    }
+
     @Test
     public void test_getResources_validResourcesFromClassPath() {
 
index 293d70d..24f5c75 100644 (file)
@@ -62,7 +62,7 @@ public class AssetProviderImplTest {
 
         Files.write(file, DUMMY_CONTENT.getBytes());
 
-        final AssetProviderImpl objUnderTest = new AssetProviderImpl(folder.getPath(), resourcePatternResolver);
+        final AssetProviderImpl objUnderTest = new AssetProviderImpl(folder.getParent(), resourcePatternResolver);
 
         assertArrayEquals(DUMMY_CONTENT.getBytes(), objUnderTest.getAsset(uuid, RESOURCES).get());
     }