From 9695031b2769f6e2b66d6c94070df444367c3117 Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Tue, 3 Apr 2018 12:33:56 -0400 Subject: [PATCH] prevent unicode errors in cred unique_hash --- awx/main/models/credential/__init__.py | 5 +++-- awx/main/tests/unit/models/test_credential.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 awx/main/tests/unit/models/test_credential.py diff --git a/awx/main/models/credential/__init__.py b/awx/main/models/credential/__init__.py index 8908fcf8c0..7b141f6e3f 100644 --- a/awx/main/models/credential/__init__.py +++ b/awx/main/models/credential/__init__.py @@ -9,6 +9,7 @@ import os import re import stat import tempfile +import six # Jinja2 from jinja2 import Template @@ -415,9 +416,9 @@ class Credential(PasswordFieldsModel, CommonModelNameNotUnique, ResourceMixin): type_alias = self.credential_type_id if self.kind == 'vault' and self.inputs.get('vault_id', None): if display: - fmt_str = '{} (id={})' + fmt_str = six.text_type('{} (id={})') else: - fmt_str = '{}_{}' + fmt_str = six.text_type('{}_{}') return fmt_str.format(type_alias, self.inputs.get('vault_id')) return str(type_alias) diff --git a/awx/main/tests/unit/models/test_credential.py b/awx/main/tests/unit/models/test_credential.py new file mode 100644 index 0000000000..f71d7fa0ae --- /dev/null +++ b/awx/main/tests/unit/models/test_credential.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +from awx.main.models import Credential, CredentialType + + +def test_unique_hash_with_unicode(): + ct = CredentialType(name=u'Väult', kind='vault') + cred = Credential( + id=4, + name=u'Iñtërnâtiônàlizætiøn', + credential_type=ct, + inputs={ + u'vault_id': u'🐉🐉🐉' + }, + credential_type_id=42 + ) + assert cred.unique_hash(display=True) == u'Väult (id=🐉🐉🐉)'