blob: e10a7a1e1ecab5d9a5abc0612c1bde1dc4d8217f [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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 sys
import unittest
from unittest.mock import Mock, patch
from libcloud.common.base import LibcloudConnection
from libcloud.common.openstack import OpenStackBaseConnection
class OpenStackBaseConnectionTest(unittest.TestCase):
def setUp(self):
self.timeout = 10
OpenStackBaseConnection.conn_class = Mock()
self.connection = OpenStackBaseConnection(
"foo", "bar", timeout=self.timeout, ex_force_auth_url="https://127.0.0.1"
)
self.connection.driver = Mock()
self.connection.driver.name = "OpenStackDriver"
def tearDown(self):
OpenStackBaseConnection.conn_class = LibcloudConnection
def test_base_connection_timeout(self):
self.connection.connect()
self.assertEqual(self.connection.timeout, self.timeout)
self.connection.conn_class.assert_called_with(
host="127.0.0.1", secure=1, port=443, timeout=10
)
def test_set_microversion(self):
self.connection.service_type = "compute"
self.connection._ex_force_microversion = "2.67"
headers = self.connection.add_default_headers({})
self.assertEqual(headers["OpenStack-API-Version"], "compute 2.67")
self.connection.service_type = "compute"
self.connection._ex_force_microversion = "volume 2.67"
headers = self.connection.add_default_headers({})
self.assertNotIn("OpenStack-API-Version", headers)
self.connection.service_type = "volume"
self.connection._ex_force_microversion = "volume 2.67"
headers = self.connection.add_default_headers({})
self.assertEqual(headers["OpenStack-API-Version"], "volume 2.67")
@patch("libcloud.common.base.ConnectionUserAndKey.request")
def test_request(self, mock_request):
OpenStackBaseConnection.conn_class._raw_data = ""
OpenStackBaseConnection.default_content_type = "application/json"
expected_response = Mock()
mock_request.return_value = expected_response
response = self.connection.request(
"/path", data="somedata", headers={"h1": "v1"}, method="POST"
)
self.assertEqual(response, expected_response)
mock_request.assert_called_with(
action="/path",
params={},
data="somedata",
method="POST",
headers={"h1": "v1", "Content-Type": "application/json"},
raw=False,
)
if __name__ == "__main__":
sys.exit(unittest.main())