Merge "Fix version discovery check of url for integer project id"

This commit is contained in:
Zuul 2022-05-13 17:11:35 +00:00 committed by Gerrit Code Review
commit 12a84e1919
2 changed files with 14 additions and 1 deletions

View File

@ -1266,7 +1266,7 @@ class EndpointData(object):
# First, check to see if the catalog url ends with a project id
# We need to remove it and save it for later if it does
if project_id and url_parts[-1].endswith(project_id):
if project_id and (url_parts[-1] == project_id):
self._saved_project_id = url_parts.pop()
elif not project_id:
# Peek to see if -2 is a version. If so, -1 is a project_id,

View File

@ -1296,6 +1296,10 @@ class VersionDataTests(utils.TestCase):
class EndpointDataTests(utils.TestCase):
def setUp(self):
super(EndpointDataTests, self).setUp()
self.session = session.Session()
@mock.patch('keystoneauth1.discover.get_discovery')
@mock.patch('keystoneauth1.discover.EndpointData.'
'_get_discovery_url_choices')
@ -1359,3 +1363,12 @@ class EndpointDataTests(utils.TestCase):
bad_url = "https://compute.example.com/v2/123456"
epd = discover.EndpointData(catalog_url=bad_url)
self.assertEqual((2, 0), epd.api_version)
def test_url_version_match_project_id_int(self):
self.session = session.Session()
discovery_fixture = fixture.V3Discovery(V3_URL)
discovery_doc = _create_single_version(discovery_fixture)
self.requests_mock.get(V3_URL, status_code=200, json=discovery_doc)
epd = discover.EndpointData(catalog_url=V3_URL).get_versioned_data(
session=self.session, project_id='3')
self.assertEqual(epd.catalog_url, epd.url)