Fix bug for status code when subscription post request body invalid what client inputs. 57/89857/2
authorhongyuzhao <zhao.hongyu@zte.com.cn>
Fri, 14 Jun 2019 08:15:04 +0000 (16:15 +0800)
committerFu Jinhua <fu.jinhua@zte.com.cn>
Fri, 14 Jun 2019 08:48:57 +0000 (08:48 +0000)
Issue-ID: VFC-1417
Signed-off-by: hongyuzhao <zhao.hongyu@zte.com.cn>
Change-Id: Id18312e77a6d93ac1afd8c5b8307f44f51a744cd

lcm/lcm/nf/tests/test_subscribe_notification.py
lcm/lcm/nf/views/subscriptions_view.py

index 73463ef..94c2ff7 100644 (file)
@@ -152,3 +152,28 @@ class TestSubscription(TestCase):
         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'])
+        # 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)
index a9ffed9..c549627 100644 (file)
@@ -27,7 +27,7 @@ from lcm.nf.serializers.lccn_subscription_request import LccnSubscriptionRequest
 from lcm.nf.serializers.lccn_subscription import LccnSubscriptionSerializer\r
 from lcm.nf.serializers.lccn_subscriptions import LccnSubscriptionsSerializer\r
 from lcm.nf.serializers.response import ProblemDetailsSerializer\r
-from lcm.pub.exceptions import NFLCMException\r
+from lcm.pub.exceptions import NFLCMException, NFLCMExceptionBadRequest\r
 from .common import view_safe_call_with_log\r
 \r
 logger = logging.getLogger(__name__)\r
@@ -50,6 +50,7 @@ class SubscriptionsView(APIView):
         responses={\r
             status.HTTP_201_CREATED: LccnSubscriptionSerializer(),\r
             status.HTTP_303_SEE_OTHER: ProblemDetailsSerializer(),\r
+            status.HTTP_400_BAD_REQUEST: ProblemDetailsSerializer(),\r
             status.HTTP_500_INTERNAL_SERVER_ERROR: ProblemDetailsSerializer()\r
         }\r
     )\r
@@ -59,7 +60,7 @@ class SubscriptionsView(APIView):
 \r
         lccn_subscription_request_serializer = LccnSubscriptionRequestSerializer(data=request.data)\r
         if not lccn_subscription_request_serializer.is_valid():\r
-            raise NFLCMException(lccn_subscription_request_serializer.errors)\r
+            raise NFLCMExceptionBadRequest(lccn_subscription_request_serializer.errors)\r
         subscription = CreateSubscription(\r
             lccn_subscription_request_serializer.data).do_biz()\r
         lccn_notifications_filter = {\r