summaryrefslogtreecommitdiff
path: root/ironicclient/tests/unit
diff options
context:
space:
mode:
authorVladyslav Drok <vdrok@mirantis.com>2020-05-15 16:36:56 +0200
committerVladyslav Drok <vdrok@mirantis.com>2020-05-15 16:57:55 +0200
commit9f2d080c898dde703569c4661bde9c735071affc (patch)
treea9cdda62903af42fb512902dfd6260b296906202 /ironicclient/tests/unit
parentf01c1d6714d1772393f20884ef2e259fe4d66567 (diff)
downloadpython-ironicclient-9f2d080c898dde703569c4661bde9c735071affc.tar.gz
Allow to pass additional arguments into adapter
This change allows to pass additional_headers and global_request_id to keystoneauth's Adapter constructor. Also SessionClient now makes use of them while doing HTTP requests (apart from version negotitaion requests). Story: 2007611 Task: 39602 Change-Id: I75cb9311bf44cbf7f6f8737d1d37b2be503be3f9
Diffstat (limited to 'ironicclient/tests/unit')
-rw-r--r--ironicclient/tests/unit/common/test_http.py26
-rw-r--r--ironicclient/tests/unit/test_client.py21
2 files changed, 45 insertions, 2 deletions
diff --git a/ironicclient/tests/unit/common/test_http.py b/ironicclient/tests/unit/common/test_http.py
index 483f3c1..dd105a0 100644
--- a/ironicclient/tests/unit/common/test_http.py
+++ b/ironicclient/tests/unit/common/test_http.py
@@ -409,6 +409,32 @@ class SessionClientTest(utils.BaseTestCase):
self.assertRaises(exc.EndpointNotFound, _session_client,
session=utils.mockSession({}))
+ def test_json_request(self):
+ session = utils.mockSession({}, status_code=200)
+ req_id = "req-7b081d28-8272-45f4-9cf6-89649c1c7a1a"
+ client = _session_client(
+ session=session, additional_headers={"foo": "bar"},
+ global_request_id=req_id)
+ client.json_request('GET', 'url')
+
+ session.request.assert_called_once_with(
+ 'url', 'GET', raise_exc=False, auth=None,
+ headers={
+ "foo": "bar",
+ "X-OpenStack-Request-ID": req_id,
+ "Content-Type": "application/json",
+ "Accept": "application/json",
+ "X-OpenStack-Ironic-API-Version": "1.6"
+ },
+ endpoint_filter={
+ 'interface': 'publicURL',
+ 'service_type': 'baremetal',
+ 'region_name': ''
+ },
+ endpoint_override='http://localhost:1234',
+ user_agent=http.USER_AGENT
+ )
+
@mock.patch.object(time, 'sleep', lambda *_: None)
class RetriesTestCase(utils.BaseTestCase):
diff --git a/ironicclient/tests/unit/test_client.py b/ironicclient/tests/unit/test_client.py
index 0b59422..fb9756f 100644
--- a/ironicclient/tests/unit/test_client.py
+++ b/ironicclient/tests/unit/test_client.py
@@ -28,12 +28,15 @@ class ClientTest(utils.BaseTestCase):
@mock.patch.object(config, 'get_cloud_region', autospec=True)
def _test_get_client(self, mock_cloud_region, mock_retrieve_data,
version=None, auth='password',
- expected_interface=None, **kwargs):
+ expected_interface=None, additional_headers=None,
+ global_request_id=None, **kwargs):
session = mock_cloud_region.return_value.get_session.return_value
session.get_endpoint.return_value = 'http://localhost:6385/v1/f14b4123'
mock_retrieve_data.return_value = version
- client = iroclient.get_client('1', **kwargs)
+ client = iroclient.get_client(
+ '1', additional_headers=additional_headers,
+ global_request_id=global_request_id, **kwargs)
expected_version = kwargs.pop('os_ironic_api_version', None)
kwargs.pop('interface', None)
@@ -80,6 +83,20 @@ class ClientTest(utils.BaseTestCase):
self.assertEqual('http://localhost:6385',
client.http_client.endpoint_override)
+ def test_get_client_additional_headers_and_global_request(self):
+ req_id = 'req-7b081d28-8272-45f4-9cf6-89649c1c7a1a'
+ kwargs = {
+ 'endpoint': 'http://localhost:6385/v1',
+ 'additional_headers': {'foo': 'bar'},
+ 'global_request_id': req_id
+ }
+ client = self._test_get_client(auth='none', **kwargs)
+ self.assertIsInstance(client.http_client, http.SessionClient)
+ self.assertEqual('http://localhost:6385',
+ client.http_client.endpoint_override)
+ self.assertEqual(req_id, client.http_client.global_request_id)
+ self.assertEqual({'foo': 'bar'}, client.http_client.additional_headers)
+
def test_get_client_with_auth_token_endpoint(self):
kwargs = {
'endpoint': 'http://localhost:6385/v1',