1. fix the url of links in VNF
[modeling/etsicatalog.git] / catalog / packages / tests / test_vnf_package.py
index 5422361..289b600 100644 (file)
@@ -26,6 +26,7 @@ from rest_framework.test import APIClient
 from catalog.packages.biz.vnf_package import VnfPackage, VnfPkgUploadThread
 from catalog.packages.const import PKG_STATUS
 from catalog.packages.tests.const import vnfd_data
+from catalog.pub.config import config
 from catalog.pub.config.config import CATALOG_ROOT_PATH
 from catalog.pub.database.models import VnfPackageModel
 from catalog.pub.utils import toscaparser
@@ -150,7 +151,12 @@ class TestVnfPackage(TestCase):
             "operationalState": "DISABLED",
             "usageState": "NOT_IN_USE",
             "userDefinedData": {"a": "A"},
-            "_links": None
+            "_links": {'self': {'href': config.MSB_BASE_URL + '/api/vnfpkgm/v1/vnf_packages/222'},
+                       'vnfd': {
+                           'href': config.MSB_BASE_URL + '/api/vnfpkgm/v1/vnf_packages/222/vnfd'},
+                       'packageContent': {
+                           'href': config.MSB_BASE_URL + '/api/vnfpkgm/v1/vnf_packages/222/package_content'}
+                       }
         }
         self.assertEqual(response.data, expect_data)
         self.assertEqual(response.status_code, status.HTTP_200_OK)
@@ -201,7 +207,17 @@ class TestVnfPackage(TestCase):
                 "operationalState": "DISABLED",
                 "usageState": "NOT_IN_USE",
                 "userDefinedData": {"a": "A"},
-                "_links": None
+                "_links": {
+                    "self": {
+                        "href": config.MSB_BASE_URL + "/api/vnfpkgm/v1/vnf_packages/111"
+                    },
+                    "vnfd": {
+                        "href": config.MSB_BASE_URL + "/api/vnfpkgm/v1/vnf_packages/111/vnfd"
+                    },
+                    "packageContent": {
+                        "href": config.MSB_BASE_URL + "/api/vnfpkgm/v1/vnf_packages/111/package_content"
+                    }
+                }
             },
             {
                 "id": "222",
@@ -216,7 +232,10 @@ class TestVnfPackage(TestCase):
                 "operationalState": "DISABLED",
                 "usageState": "NOT_IN_USE",
                 "userDefinedData": {"a": "A"},
-                "_links": None
+                "_links": {'self': {'href': config.MSB_BASE_URL + '/api/vnfpkgm/v1/vnf_packages/222'},
+                           'vnfd': {'href': config.MSB_BASE_URL + '/api/vnfpkgm/v1/vnf_packages/222/vnfd'},
+                           'packageContent': {
+                               'href': config.MSB_BASE_URL + '/api/vnfpkgm/v1/vnf_packages/222/package_content'}}
             }
         ]
         self.assertEqual(response.data, expect_data)
@@ -423,3 +442,49 @@ class TestVnfPackage(TestCase):
         self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
         response = self.client.get(VNF_BASE_URL + "/222/artifacts/image1")
         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
+
+    def test_upload_vnf_pkg_with_artifacts(self):
+        data = {'file': open(os.path.join(CATALOG_ROOT_PATH, "vgw.csar"), "rb")}
+        VnfPackageModel.objects.create(
+            vnfPackageId="222",
+            onboardingState="CREATED"
+        )
+        response = self.client.put("%s/222/package_content" % VNF_BASE_URL, data=data)
+        vnf_pkg = VnfPackageModel.objects.filter(vnfPackageId="222")
+        self.assertEqual(PKG_STATUS.ONBOARDED, vnf_pkg[0].onboardingState)
+        self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
+        response = self.client.get("%s/222" % VNF_BASE_URL)
+        print(response.data)
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        expact_response_data = {
+            "id": "222",
+            "vnfdId": "b1bb0ce7-2222-4fa7-95ed-4840d70a1177",
+            "vnfProductName": "vcpe_vgw",
+            "vnfSoftwareVersion": "1.0",
+            "vnfdVersion": "1.0",
+            "softwareImages": None,
+            "additionalArtifacts": [
+                {
+                    "artifactPath": "MainServiceTemplate.yaml",
+                    "checksum": {
+                        "algorithm": "Null",
+                        "hash": "Null"
+                    }
+                }
+            ],
+            "onboardingState": "ONBOARDED",
+            "operationalState": "ENABLED",
+            "usageState": "NOT_IN_USE",
+            "_links": {
+                "self": {
+                    "href": config.MSB_BASE_URL + "/api/vnfpkgm/v1/vnf_packages/222"
+                },
+                "vnfd": {
+                    "href": config.MSB_BASE_URL + "/api/vnfpkgm/v1/vnf_packages/222/vnfd"
+                },
+                "packageContent": {
+                    "href": config.MSB_BASE_URL + "/api/vnfpkgm/v1/vnf_packages/222/package_content"
+                }
+            }
+        }
+        self.assertEqual(response.data, expact_response_data)