add NS create exception usecase 27/83427/2
authormaopengzhang <zhang.maopeng1@zte.com.cn>
Wed, 27 Mar 2019 02:22:27 +0000 (10:22 +0800)
committermaopengzhang <zhang.maopeng1@zte.com.cn>
Wed, 27 Mar 2019 02:48:46 +0000 (10:48 +0800)
add NS create exception usecase

Change-Id: I7014fa9c4eb7ae729824dcf23ab508b24c5fdc81
Issue-ID: VFC-1211
Signed-off-by: maopengzhang <zhang.maopeng1@zte.com.cn>
lcm/ns/serializers/sol/create_ns_serializers.py
lcm/ns/tests/test_sol_ns_instances_api.py
lcm/ns/views/sol/ns_instances_views.py

index c335ee2..d3f7832 100644 (file)
@@ -17,5 +17,5 @@ from rest_framework import serializers
 
 class CreateNsRequestSerializer(serializers.Serializer):
     nsdId = serializers.CharField(help_text="Identifier of the NSD that defines the NS instance to be created.", required=True, allow_null=False)
-    nsName = serializers.CharField(help_text="Name of NS", required=False, allow_null=True)
-    nsDescription = serializers.CharField(help_text="Description of NS", required=False, allow_null=True)
+    nsName = serializers.CharField(help_text="Name of NS", required=True, allow_null=True)
+    nsDescription = serializers.CharField(help_text="Description of NS", required=True, allow_null=True)
index 94d60bb..bf20770 100644 (file)
@@ -21,6 +21,8 @@ from rest_framework import status
 from rest_framework.test import APIClient
 from lcm.pub.database.models import NSInstModel
 from lcm.pub.utils import restcall
+from lcm.ns.biz.ns_create import CreateNSService
+from lcm.pub.exceptions import NSLCMException
 
 
 class TestNsInstanceApi(TestCase):
@@ -62,6 +64,82 @@ class TestNsInstanceApi(TestCase):
         self.failUnlessEqual(status.HTTP_201_CREATED, response.status_code)
         return response.data['id']
 
+    @mock.patch.object(restcall, 'call_req')
+    def test_create_ns_when_ns_name_exist(self, mock_call_req):
+        NSInstModel.objects.all().delete()
+        NSInstModel(id="1", name="ns").save()
+        nspackage_info = json.JSONEncoder().encode({
+            "csarId": self.ns_package_id,
+            "packageInfo": {}
+        })
+        mock_call_req.return_value = [0, nspackage_info, '200']
+        header = {
+            'HTTP_GLOBALCUSTOMERID': 'global-customer-id-test1',
+            'HTTP_SERVICETYPE': 'service-type-test1'
+        }
+
+        data = {
+            "nsdId": self.nsd_id,
+            "nsName": "ns",
+            "nsDescription": "description"
+        }
+        response = self.apiClient.post(self.ns_instances_url, data=data, format=self.format, **header)
+        self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
+
+    @mock.patch.object(CreateNSService, "do_biz")
+    def test_create_ns_empty_data(self, mock_do_biz):
+        mock_do_biz.side_effect = Exception("Exception in CreateNS.")
+        data = {
+            'nsdId': 'nsdId'
+        }
+        header = {
+            'HTTP_GLOBALCUSTOMERID': 'global-customer-id-test1',
+            'HTTP_SERVICETYPE': 'service-type-test1'
+        }
+        response = self.apiClient.post(self.ns_instances_url, data=data, format=self.format, **header)
+        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
+
+    @mock.patch.object(CreateNSService, "do_biz")
+    def test_create_ns_no_header(self, mock_do_biz):
+        mock_do_biz.side_effect = Exception("Exception in CreateNS.")
+        data = {
+            "nsdId": self.nsd_id,
+            "nsName": "ns",
+            "nsDescription": "description"
+        }
+        response = self.apiClient.post(self.ns_instances_url, data=data, format=self.format)
+        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
+
+    @mock.patch.object(CreateNSService, "do_biz")
+    def test_create_ns_non_existing_nsd(self, mock_do_biz):
+        mock_do_biz.side_effect = NSLCMException("nsd not exists.")
+        data = {
+            "nsdId": self.nsd_id,
+            "nsName": "ns",
+            "nsDescription": "description"
+        }
+        header = {
+            'HTTP_GLOBALCUSTOMERID': 'global-customer-id-test1',
+            'HTTP_SERVICETYPE': 'service-type-test1'
+        }
+        response = self.apiClient.post(self.ns_instances_url, data=data, format=self.format, **header)
+        self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
+
+    @mock.patch.object(restcall, 'call_req')
+    def test_create_ns_when_fail_to_get_nsd(self, mock_call_req):
+        mock_call_req.return_value = [1, "Failed to get nsd.", '500']
+        data = {
+            "nsdId": self.nsd_id,
+            "nsName": "ns",
+            "nsDescription": "description"
+        }
+        header = {
+            'HTTP_GLOBALCUSTOMERID': 'global-customer-id-test1',
+            'HTTP_SERVICETYPE': 'service-type-test1'
+        }
+        response = self.apiClient.post(self.ns_instances_url, data=data, format=self.format, **header)
+        self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
+
     def test_ns_instances_method_not_allowed(self):
         header = {
             'HTTP_GLOBALCUSTOMERID': 'global-customer-id-test1',
index dbbdbb5..a81e20f 100644 (file)
@@ -95,7 +95,6 @@ class NSInstancesView(APIView):
             response = Response(data=resp_serializer.data, status=status.HTTP_201_CREATED)
             response["Location"] = NS_INSTANCE_BASE_URI % nsInstance['id']
             return response
-
         except BadRequestException as e:
             logger.error("Exception in CreateNS: %s", e.message)
             data = {'status': status.HTTP_400_BAD_REQUEST, 'detail': e.message}