Add coverage for get_cinderclient and _check_context

This patch adds coverage for some parts in get_cinderclient
method like ``cinder_endpoint_template`` option and keystone
exception case when catalog info for cinder could not be found.
Also it adds tests for complete coverage of _check_context
method.

Change-Id: I18b1e5e8fd818824a2dda2ad14d9456190fe9ff4
This commit is contained in:
whoami-rajat 2022-03-15 14:21:13 +05:30
parent 3666d2d2e4
commit 77919e15d2
3 changed files with 64 additions and 0 deletions

View File

@ -26,6 +26,7 @@ import tempfile
import time
import uuid
from keystoneauth1 import exceptions as keystone_exc
from os_brick.initiator import connector
from oslo_concurrency import processutils
from oslo_utils.secretutils import md5
@ -101,6 +102,49 @@ class TestCinderStoreBase(object):
fake_session.assert_called_once_with(
auth=fake_auth, verify=fake_cert_path)
def _test_get_cinderclient_cinder_endpoint_template(self,
group='glance_store'):
fake_endpoint = 'http://cinder.openstack.example.com/v2/fake_project'
self.config(cinder_endpoint_template=fake_endpoint, group=group)
with mock.patch.object(
cinder.ksa_token_endpoint, 'Token') as fake_token:
self.store.get_cinderclient(self.context)
fake_token.assert_called_once_with(endpoint=fake_endpoint,
token=self.context.auth_token)
def test_get_cinderclient_endpoint_exception(self):
with mock.patch.object(cinder.ksa_session, 'Session'), \
mock.patch.object(cinder.ksa_identity, 'V3Password'), \
mock.patch.object(
cinder.Store, 'is_user_overriden', return_value=False), \
mock.patch.object(
cinder.keystone_sc, 'ServiceCatalogV2') as service_catalog:
service_catalog.side_effect = keystone_exc.EndpointNotFound
self.assertRaises(
exceptions.BadStoreConfiguration, self.store.get_cinderclient,
self.context)
def test__check_context(self):
with mock.patch.object(cinder.Store, 'is_user_overriden',
return_value=True) as fake_overriden:
self.store._check_context(self.context)
fake_overriden.assert_called_once()
def test__check_context_no_context(self):
with mock.patch.object(
cinder.Store, 'is_user_overriden', return_value=False):
self.assertRaises(
exceptions.BadStoreConfiguration, self.store._check_context,
None)
def test__check_context_no_service_catalog(self):
with mock.patch.object(
cinder.Store, 'is_user_overriden', return_value=False):
fake_context = mock.MagicMock(service_catalog=None)
self.assertRaises(
exceptions.BadStoreConfiguration, self.store._check_context,
fake_context)
def test_temporary_chown(self):
fake_stat = mock.MagicMock(st_uid=1)
@ -526,3 +570,10 @@ class TestCinderStoreBase(object):
def _test_parse_uri_invalid(self, uri):
self.assertRaises(
exceptions.BadStoreUri, self.location.parse_uri, uri)
def _test_get_root_helper(self, group='glance_store'):
fake_rootwrap = 'fake_rootwrap'
expected = 'sudo glance-rootwrap %s' % fake_rootwrap
self.config(rootwrap_config=fake_rootwrap, group=group)
res = self.store.get_root_helper()
self.assertEqual(expected, res)

View File

@ -184,3 +184,9 @@ class TestCinderStore(base.StoreBaseTest,
def test_parse_uri_invalid(self):
uri = 'cinder://%s' % 'fake_volume'
self._test_parse_uri_invalid(uri)
def test_get_root_helper(self):
self._test_get_root_helper()
def test_get_cinderclient_cinder_endpoint_template(self):
self._test_get_cinderclient_cinder_endpoint_template()

View File

@ -313,3 +313,10 @@ class TestMultiCinderStore(base.MultiStoreBaseTest,
def test_parse_uri_invalid(self):
uri = 'cinder://cinder1/%s' % 'fake_volume'
self._test_parse_uri_invalid(uri)
def test_get_root_helper(self):
self._test_get_root_helper(group='cinder1')
def test_get_cinderclient_cinder_endpoint_template(self):
self._test_get_cinderclient_cinder_endpoint_template(
group='cinder1')