Merge "Fix sonar issue of artifactbroker"
authorBin Yang <bin.yang@windriver.com>
Wed, 10 Apr 2019 12:57:25 +0000 (12:57 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 10 Apr 2019 12:57:25 +0000 (12:57 +0000)
multivimbroker/multivimbroker/tests/test_v1_check_capacity.py [new file with mode: 0644]

diff --git a/multivimbroker/multivimbroker/tests/test_v1_check_capacity.py b/multivimbroker/multivimbroker/tests/test_v1_check_capacity.py
new file mode 100644 (file)
index 0000000..71ba911
--- /dev/null
@@ -0,0 +1,103 @@
+# Copyright (c) 2019 Wind River Systems, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import mock
+import unittest
+
+from rest_framework import status
+
+from multivimbroker.forwarder.views import APIv1CheckCapacity
+
+
+class V1CheckCapacityTest(unittest.TestCase):
+
+    def setUp(self):
+        self.view = APIv1CheckCapacity()
+        super(V1CheckCapacityTest, self).setUp()
+
+    def tearDown(self):
+        pass
+
+    def test_check_capacity_success(self):
+        req = mock.Mock()
+        req.body = """
+        {
+            "vCPU": 1,
+            "Memory": 1,
+            "Storage": 500,
+            "VIMs": [{"cloud-owner": "openstack",
+             "cloud-region-id": "RegionOne"}]
+        }"""
+        req.get_full_path.return_value = ("http://msb.onap.org/api/multicloud"
+                                          "/v1/check_vim_capacity")
+        req.META.items.return_value = [("Project", "projectname1")]
+        with mock.patch.object(self.view, "send") as send:
+            plugin_resp = mock.Mock()
+            plugin_resp.content = """{
+                "result": true
+            }"""
+            plugin_resp.status_code = str(status.HTTP_200_OK)
+            send.return_value = plugin_resp
+
+            resp = self.view.post(req)
+            expect_body = {
+                "VIMs": [{"cloud-owner": "openstack",
+                          "cloud-region-id": "RegionOne",
+                          "AZs": []}]
+            }
+            self.assertEqual(status.HTTP_200_OK, resp.status_code)
+            self.assertDictEqual(expect_body, resp.data)
+
+    def test_check_capacity_no_suitable_vim(self):
+        req = mock.Mock()
+        req.body = """
+        {
+            "vCPU": 1,
+            "Memory": 1,
+            "Storage": 500,
+            "VIMs": [{"cloud-owner": "openstack",
+             "cloud-region-id": "RegionOne"}]
+        }"""
+        req.get_full_path.return_value = ("http://msb.onap.org/api/multicloud"
+                                          "/v1/check_vim_capacity")
+        req.META.items.return_value = [("Project", "projectname1")]
+
+        with mock.patch.object(self.view, "send") as send:
+            plugin_resp = mock.Mock()
+            plugin_resp.content = """{
+                "result": false
+            }"""
+            plugin_resp.status_code = str(status.HTTP_200_OK)
+            send.return_value = plugin_resp
+
+            resp = self.view.post(req)
+            expect_body = {
+                "VIMs": []
+            }
+            self.assertEqual(status.HTTP_200_OK, resp.status_code)
+            self.assertDictEqual(expect_body, resp.data)
+
+    def test_check_capacity_invalid_input(self):
+        req = mock.Mock()
+        req.body = "hello world"
+        req.get_full_path.return_value = ("http://msb.onap.org/api/multicloud"
+                                          "/v1/check_vim_capacity")
+        req.META.items.return_value = [("Project", "projectname1")]
+        expect_body = {
+            "error": ("Invalidate request body "
+                      "No JSON object could be decoded.")
+        }
+        resp = self.view.post(req)
+        self.assertEqual(status.HTTP_400_BAD_REQUEST, resp.status_code)
+        self.assertDictEqual(expect_body, resp.data)