Allow base_uri override for tests

Made some changes to make the api base_uri code easier
to test and standardized the implementation.

Change-Id: Ie2fc0dda13e455dc2cda10c4e09fb58e549c229f
This commit is contained in:
Erik Olof Gunnar Andersson 2023-11-01 15:15:32 -07:00
parent 825e01a359
commit 7ef4c01e02
2 changed files with 11 additions and 27 deletions
designate
objects/adapters/api_v2
tests/unit/objects

@ -18,13 +18,10 @@ from designate import exceptions
from designate.objects.adapters import base
from designate.objects import base as ovoobj_base
cfg.CONF.import_opt('api_base_uri', 'designate.api', group='service:api')
cfg.CONF.import_opt('enable_host_header', 'designate.api', group='service:api')
CONF = cfg.CONF
class APIv2Adapter(base.DesignateAdapter):
BASE_URI = cfg.CONF['service:api'].api_base_uri.rstrip('/')
ADAPTER_FORMAT = 'API_v2'
#####################
@ -75,13 +72,9 @@ class APIv2Adapter(base.DesignateAdapter):
@classmethod
def _get_base_url(cls, request):
if cfg.CONF['service:api'].enable_host_header:
try:
return request.host_url
except Exception:
return cls.BASE_URI
else:
return cls.BASE_URI
if CONF['service:api'].enable_host_header:
return request.host_url
return CONF['service:api'].api_base_uri.rstrip('/')
@classmethod
def _get_resource_links(cls, obj, request):
@ -110,12 +103,12 @@ class APIv2Adapter(base.DesignateAdapter):
params = request.GET
# defined in etc/designate/designate.conf.sample
limit = cfg.CONF['service:api'].default_limit_v2
limit = CONF['service:api'].default_limit_v2
if 'limit' in params:
limit = params['limit']
if limit.lower() == 'max':
limit = cfg.CONF['service:api'].max_limit_v2
limit = CONF['service:api'].max_limit_v2
else:
try:
limit = int(limit)

@ -36,14 +36,17 @@ class APIv2AdapterTest(oslotest.base.BaseTestCase):
def test_get_base_url(self):
CONF.set_override('enable_host_header', False, 'service:api')
CONF.set_override(
'api_base_uri', 'http://192.0.2.1:9001/', 'service:api'
)
mock_request = mock.Mock()
mock_request.GET = {'foo': 'bar'}
mock_request.host_url = 'http://127.0.0.1'
mock_request.host_url = 'http://192.0.2.2'
mock_request.path = '/v2/zones'
base_url = base.APIv2Adapter._get_base_url(mock_request)
self.assertEqual('http://127.0.0.1:9001', base_url)
self.assertEqual('http://192.0.2.1:9001', base_url)
def test_get_base_url_enable_host_header(self):
CONF.set_override('enable_host_header', True, 'service:api')
@ -56,18 +59,6 @@ class APIv2AdapterTest(oslotest.base.BaseTestCase):
base_url = base.APIv2Adapter._get_base_url(mock_request)
self.assertEqual('http://192.0.2.1', base_url)
def test_get_base_url_enable_host_header_exception_raised(self):
CONF.set_override('enable_host_header', True, 'service:api')
mock_host_url = mock.PropertyMock(side_effect=Exception)
mock_request = mock.Mock()
mock_request.GET = {'foo': 'bar'}
type(mock_request).host_url = mock_host_url
mock_request.path = '/v2/zones'
base_url = base.APIv2Adapter._get_base_url(mock_request)
self.assertEqual('http://127.0.0.1:9001', base_url)
class RecordAPIv2AdapterTest(oslotest.base.BaseTestCase):
def test_parse_object(self):