diff --git a/castellan/key_manager/barbican_key_manager.py b/castellan/key_manager/barbican_key_manager.py index a39116b2..2d42b2f0 100644 --- a/castellan/key_manager/barbican_key_manager.py +++ b/castellan/key_manager/barbican_key_manager.py @@ -202,8 +202,12 @@ class BarbicanKeyManager(key_manager.KeyManager): latest_version = raw_data[-1] api_version = latest_version.get('id') + if endpoint[-1] != '/': + endpoint += '/' + base_url = urllib.parse.urljoin( endpoint, api_version) + return base_url def create_key(self, context, algorithm, length, diff --git a/castellan/tests/unit/key_manager/test_barbican_key_manager.py b/castellan/tests/unit/key_manager/test_barbican_key_manager.py index 5d5668cf..c019abad 100644 --- a/castellan/tests/unit/key_manager/test_barbican_key_manager.py +++ b/castellan/tests/unit/key_manager/test_barbican_key_manager.py @@ -76,6 +76,24 @@ class BarbicanKeyManagerTestCase(test_key_manager.KeyManagerTestCase): self.key_mgr._barbican_client = self.mock_barbican self.key_mgr._current_context = self.ctxt + def test_base_url_old_version(self): + version = "v1" + self.key_mgr.conf.barbican.barbican_api_version = version + endpoint = "http://localhost:9311" + base_url = self.key_mgr._create_base_url(mock.Mock(), + mock.Mock(), + endpoint) + self.assertEqual(endpoint + "/" + version, base_url) + + def test_base_url_new_version(self): + version = "v1" + self.key_mgr.conf.barbican.barbican_api_version = version + endpoint = "http://localhost/key_manager" + base_url = self.key_mgr._create_base_url(mock.Mock(), + mock.Mock(), + endpoint) + self.assertEqual(endpoint + "/" + version, base_url) + def test_create_key(self): # Create order_ref_url and assign return value order_ref_url = ("http://localhost:9311/v1/orders/"