Fix bug for miss check callbackurl in subscription post request.
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / tests / test_subscribe_notification.py
index 66389a5..70a309b 100644 (file)
@@ -15,7 +15,7 @@
 import mock
 from django.test import TestCase
 from rest_framework.test import APIClient
-import uuid
+import uuid
 
 
 class TestSubscription(TestCase):
@@ -25,51 +25,51 @@ class TestSubscription(TestCase):
     def tearDown(self):
         pass
 
-    @mock.patch("requests.get")
-    @mock.patch.object(uuid, 'uuid4')
-    def test_subscribe_notification_simple(self, mock_uuid4, mock_requests):
-        temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
-        dummy_subscription = {
-            "callbackUri": "http://aurl.com"
-        }
-        mock_requests.return_value.status_code = 204
-        mock_requests.get.status_code = 204
-        mock_uuid4.return_value = temp_uuid
-        response = self.client.post("/api/vnflcm/v1/subscriptions", data=dummy_subscription, format='json')
-        self.assertEqual(201, response.status_code)
-        self.assertEqual(dummy_subscription["callbackUri"], response.data["callbackUri"])
-        self.assertEqual(temp_uuid, response.data["id"])
+    @mock.patch("requests.get")
+    @mock.patch.object(uuid, 'uuid4')
+    def test_subscribe_notification_simple(self, mock_uuid4, mock_requests):
+        temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
+        dummy_subscription = {
+            "callbackUri": "http://aurl.com"
+        }
+        mock_requests.return_value.status_code = 204
+        mock_requests.get.status_code = 204
+        mock_uuid4.return_value = temp_uuid
+        response = self.client.post("/api/vnflcm/v1/subscriptions", data=dummy_subscription, format='json')
+        self.assertEqual(201, response.status_code)
+        self.assertEqual(dummy_subscription["callbackUri"], response.data["callbackUri"])
+        self.assertEqual(temp_uuid, response.data["id"])
 
-    @mock.patch("requests.get")
-    @mock.patch.object(uuid, 'uuid4')
-    def test_subscribe_notification(self, mock_uuid4, mock_requests):
-        temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
-        dummy_subscription = {
-            "callbackUri": "http://aurl.com",
-            "authentication": {
-                "authType": ["BASIC"],
-                "paramsBasic": {
-                    "username": "username",
-                    "password": "password"
-                }
-            },
-            "filter": {
-                "notificationTypes": ["VnfLcmOperationOccurrenceNotification"],
-                "operationTypes": [
-                    "INSTANTIATE"
-                ],
-                "operationStates": [
-                    "STARTING"
-                ],
-            }
-        }
-        mock_requests.return_value.status_code = 204
-        mock_requests.get.return_value.status_code = 204
-        mock_uuid4.return_value = temp_uuid
-        response = self.client.post("/api/vnflcm/v1/subscriptions", data=dummy_subscription, format='json')
-        self.assertEqual(201, response.status_code)
-        self.assertEqual(dummy_subscription["callbackUri"], response.data["callbackUri"])
-        self.assertEqual(temp_uuid, response.data["id"])
+    @mock.patch("requests.get")
+    @mock.patch.object(uuid, 'uuid4')
+    def test_subscribe_notification(self, mock_uuid4, mock_requests):
+        temp_uuid = "99442b18-a5c7-11e8-998c-bf1755941f13"
+        dummy_subscription = {
+            "callbackUri": "http://aurl.com",
+            "authentication": {
+                "authType": ["BASIC"],
+                "paramsBasic": {
+                    "username": "username",
+                    "password": "password"
+                }
+            },
+            "filter": {
+                "notificationTypes": ["VnfLcmOperationOccurrenceNotification"],
+                "operationTypes": [
+                    "INSTANTIATE"
+                ],
+                "operationStates": [
+                    "STARTING"
+                ],
+            }
+        }
+        mock_requests.return_value.status_code = 204
+        mock_requests.get.return_value.status_code = 204
+        mock_uuid4.return_value = temp_uuid
+        response = self.client.post("/api/vnflcm/v1/subscriptions", data=dummy_subscription, format='json')
+        self.assertEqual(201, response.status_code)
+        self.assertEqual(dummy_subscription["callbackUri"], response.data["callbackUri"])
+        self.assertEqual(temp_uuid, response.data["id"])
 
     @mock.patch("requests.get")
     def test_invalid_auth_subscription(self, mock_requests):
@@ -95,7 +95,8 @@ class TestSubscription(TestCase):
         mock_requests.return_value.status_code = 204
         mock_requests.get.return_value.status_code = 204
         expected_data = {
-            'error': 'Auth type should be BASIC'
+            'detail': 'Auth type should be BASIC',
+            'status': 500
         }
         response = self.client.post("/api/vnflcm/v1/subscriptions", data=dummy_subscription, format='json')
         self.assertEqual(500, response.status_code)
@@ -118,39 +119,58 @@ class TestSubscription(TestCase):
         mock_requests.return_value.status_code = 204
         mock_requests.get.return_value.status_code = 204
         expected_data = {
-            'error': 'If you are setting operationTypes,then ' +
-            'notificationTypes must be VnfLcmOperationOccurrenceNotification'
+            'detail': 'If you are setting operationTypes,then ' +
+            'notificationTypes must be VnfLcmOperationOccurrenceNotification',
+            'status': 500
         }
         response = self.client.post("/api/vnflcm/v1/subscriptions", data=dummy_subscription, format='json')
         self.assertEqual(500, response.status_code)
         self.assertEqual(expected_data, response.data)
 
-    # @mock.patch("requests.get")
-    # @mock.patch.object(uuid, 'uuid4')
-    # def test_duplicate_subscription(self, mock_uuid4, mock_requests):
-    #     temp_uuid = str(uuid.uuid4())
-    #     dummy_subscription = {
-    #         "callbackUri": "http://aurl.com",
-    #         "filter": {
-    #             "notificationTypes": ["VnfLcmOperationOccurrenceNotification"],
-    #             "operationTypes": [
-    #                 "INSTANTIATE"
-    #             ],
-    #             "operationStates": [
-    #                 "STARTING"
-    #             ]
-    #         }
-    #     }
-    #     mock_requests.return_value.status_code = 204
-    #     mock_requests.get.return_value.status_code = 204
-    #     mock_uuid4.return_value = temp_uuid
-    #     response = self.client.post("/api/vnflcm/v1/subscriptions", data=dummy_subscription, format='json')
-    #     self.assertEqual(201, response.status_code)
-    #     self.assertEqual(dummy_subscription["callbackUri"], response.data["callbackUri"])
-    #     self.assertEqual(temp_uuid, response.data["id"])
-    #     response = self.client.post("/api/vnflcm/v1/subscriptions", data=dummy_subscription, format='json')
-    #     self.assertEqual(303, response.status_code)
-    #     expected_data = {
-    #         "error": "Already Subscription exists with the same callbackUri and filter"
-    #     }
-    #     self.assertEqual(expected_data, response.data)
+    @mock.patch("requests.get")
+    @mock.patch.object(uuid, 'uuid4')
+    def test_duplicate_subscription(self, mock_uuid4, mock_requests):
+        temp_uuid = str(uuid.uuid4())
+        dummy_subscription = {
+            "callbackUri": "http://aurl.com",
+            "filter": {
+                "notificationTypes": ["VnfLcmOperationOccurrenceNotification"],
+                "operationTypes": [
+                    "INSTANTIATE"
+                ],
+                "operationStates": [
+                    "STARTING"
+                ]
+            }
+        }
+        mock_requests.return_value.status_code = 204
+        mock_requests.get.return_value.status_code = 204
+        mock_uuid4.return_value = temp_uuid
+        response = self.client.post("/api/vnflcm/v1/subscriptions", data=dummy_subscription, format='json')
+        self.assertEqual(201, response.status_code)
+        self.assertEqual(dummy_subscription["callbackUri"], response.data["callbackUri"])
+        self.assertEqual(temp_uuid, response.data["id"])
+        response = self.client.post("/api/vnflcm/v1/subscriptions", data=dummy_subscription, format='json')
+        self.assertEqual(303, response.status_code)
+
+    @mock.patch("requests.get")
+    @mock.patch.object(uuid, 'uuid4')
+    def test_badreq_subscription(self, mock_uuid4, mock_requests):
+        temp_uuid = str(uuid.uuid4())
+        miss_callbackUri_subscription = {
+            "filter": {
+                "notificationTypes": ["VnfLcmOperationOccurrenceNotification"],
+                "operationTypes": [
+                    "INSTANTIATE"
+                ],
+                "operationStates": [
+                    "STARTING"
+                ]
+            }
+        }
+        mock_requests.return_value.status_code = 204
+        mock_requests.get.return_value.status_code = 204
+        mock_uuid4.return_value = temp_uuid
+        response = self.client.post("/api/vnflcm/v1/subscriptions", data=miss_callbackUri_subscription, format='json')
+        self.assertEqual(400, response.status_code)
+        self.assertEqual({'callbackUri': ['This field is required.']}, response.data['detail'])