summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXiaohua Zhang <xiaohua.zhang@windriver.com>2019-04-09 05:03:14 +0000
committerXiaohua Zhang <xiaohua.zhang@windriver.com>2019-04-09 06:09:30 +0000
commit12d213721a7ecb6fb4604cdd3190035acf46458d (patch)
treec6601639e19e9000e94ce7fee3d6354bb4fdfa84
parentacbf18f98440e52e55cfe85ff75845081b7c9165 (diff)
Add UT for apiV1 capcity_check
Change-Id: If5ea7521fd613083e82a83506370e37a6f49e02c Issue-ID: MULTICLOUD-563 Signed-off-by: Xiaohua Zhang <xiaohua.zhang@windriver.com>
-rw-r--r--multivimbroker/multivimbroker/tests/test_v1_check_capacity.py103
1 files changed, 103 insertions, 0 deletions
diff --git a/multivimbroker/multivimbroker/tests/test_v1_check_capacity.py b/multivimbroker/multivimbroker/tests/test_v1_check_capacity.py
new file mode 100644
index 0000000..71ba911
--- /dev/null
+++ b/multivimbroker/multivimbroker/tests/test_v1_check_capacity.py
@@ -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)