summaryrefslogtreecommitdiffstats
path: root/newton/newton/pub/tests/test_restcall.py
diff options
context:
space:
mode:
Diffstat (limited to 'newton/newton/pub/tests/test_restcall.py')
-rw-r--r--newton/newton/pub/tests/test_restcall.py110
1 files changed, 110 insertions, 0 deletions
diff --git a/newton/newton/pub/tests/test_restcall.py b/newton/newton/pub/tests/test_restcall.py
new file mode 100644
index 00000000..28def73f
--- /dev/null
+++ b/newton/newton/pub/tests/test_restcall.py
@@ -0,0 +1,110 @@
+# Copyright (c) 2017 Intel Corporation.
+#
+# 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.
+
+from httplib2 import Http
+import mock
+from rest_framework import status
+import unittest
+
+from newton.pub.utils import restcall
+
+
+class TestRestCall(unittest.TestCase):
+ base_url = "http://localhost"
+ resource = "compute"
+
+ @mock.patch.object(Http, 'request')
+ def test_unknown_failure_call_req(self, mock_http):
+ mock_http.raiseError.side_effect = mock.Mock(
+ side_effect=Exception('Test'))
+ args = [
+ self.base_url, "user", "password", "auth_type",
+ self.resource, "get", {"extra": "test"}
+ ]
+
+ ret = restcall._call_req(*args)
+ self.assertEquals(3, ret[0])
+ self.assertEquals(status.HTTP_500_INTERNAL_SERVER_ERROR, ret[2])
+
+
+ @mock.patch.object(Http, 'request')
+ def test_invalid_output_call_req(self, mock_http):
+ args = [
+ self.base_url, "user", "password", "auth_type",
+ self.resource, "get", {"extra": "test"}
+ ]
+
+ mock_http.return_value = ({'status': None},
+ str.encode("test", 'utf-8'))
+
+ ret = restcall._call_req(*args)
+ self.assertEquals(1, ret[0])
+ self.assertEquals("test", ret[1])
+ self.assertIsNone(ret[2])
+
+ @mock.patch.object(Http, 'request')
+ def test_req_by_msb(self, mock_http):
+ resp_body = "test_body"
+ resp_status=status.HTTP_200_OK
+ mock_http.return_value = (
+ {'status': resp_status},
+ str.encode(resp_body, 'utf-8'))
+
+
+ ret = restcall.req_by_msb(self.resource, "delete")
+ self.assertEquals(0, ret[0])
+ self.assertEquals(resp_body, ret[1])
+ self.assertEquals(resp_status, ret[2])
+
+ @mock.patch.object(Http, 'request')
+ def test_req_to_vim(self, mock_http):
+ resp_body = "test_body"
+ resp_status=status.HTTP_200_OK
+ mock_http.return_value = (
+ {'status': resp_status},
+ str.encode(resp_body, 'utf-8'))
+
+ ret = restcall.req_to_vim(self.base_url, self.resource, "get")
+ self.assertEquals(0, ret[0])
+ self.assertEquals(resp_body, ret[1])
+ self.assertEquals(resp_status, ret[2])
+
+ @mock.patch.object(Http, 'request')
+ def test_req_to_aai(self, mock_http):
+ resp_body = "test_body"
+ resp_status=status.HTTP_200_OK
+ mock_http.return_value = (
+ {'status': resp_status},
+ str.encode(resp_body, 'utf-8'))
+
+ ret = restcall.req_to_aai(self.resource, "post")
+ self.assertEquals(0, ret[0])
+ self.assertEquals(resp_body, ret[1])
+ self.assertEquals(resp_status, ret[2])
+
+ def test_combine_url(self):
+ self.assertEquals(self.base_url,
+ restcall._combine_url(self.base_url, ""))
+ self.assertEquals(self.base_url + "/" + self.resource,
+ restcall._combine_url(self.base_url + "/",
+ "/" + self.resource))
+ self.assertEquals(self.base_url + "/" + self.resource,
+ restcall._combine_url(self.base_url + "/",
+ self.resource))
+ self.assertEquals(self.base_url + "/" + self.resource,
+ restcall._combine_url(self.base_url,
+ "/" + self.resource))
+ self.assertEquals(self.base_url + "/" + self.resource,
+ restcall._combine_url(self.base_url,
+ self.resource))