Fix formatting of ImportError

Fix formatting of ImportError when using a driver not found in the list
of token providers.

Change-Id: I0ac8ac199aeebd20960ad0654461f1f81c4d7da0
Closes-bug: 1753584
This commit is contained in:
Mark Hamzy 2018-03-05 15:18:31 -06:00
parent e05e2b5a60
commit 852bd45c94
3 changed files with 21 additions and 1 deletions

View File

@ -78,7 +78,7 @@ def load_driver(namespace, driver_name, *args):
return driver_manager.driver
except stevedore.exception.NoMatches:
msg = (_('Unable to find %(name)r driver in %(namespace)r.'))
raise ImportError(msg, {'name': driver_name, 'namespace': namespace})
raise ImportError(msg % {'name': driver_name, 'namespace': namespace})
class _TraceMeta(type):

View File

@ -10,9 +10,12 @@
# License for the specific language governing permissions and limitations
# under the License.
import uuid
from six.moves import urllib
from keystone.tests import unit
from keystone.token import provider
from keystone.token.providers import common
@ -20,3 +23,14 @@ class TestTokenProvidersCommon(unit.TestCase):
def test_strings_are_url_safe(self):
s = common.random_urlsafe_str()
self.assertEqual(s, urllib.parse.quote_plus(s))
def test_unsupported_provider_raises_import_error(self):
namespace = "keystone.token.provider"
# Generate a random name
driver = uuid.uuid4().hex
self.config_fixture.config(group='token', provider=driver)
msg = "Unable to find '%(driver)s' driver in '%(namespace)s'." % {
'namespace': namespace, 'driver': driver
}
self.assertRaisesRegex(ImportError, msg, provider.Manager)

View File

@ -0,0 +1,6 @@
---
fixes:
- |
[`bug 1753584 <https://bugs.launchpad.net/keystone/+bug/1753584>`_]
Fix formatting of ImportError when using a driver not found in the list
of token providers.