Add a encode() to AnsibleVaultEncryptedUnicode (#19840)
* Add a encode() to AnsibleVaultEncryptedUnicode
Without it, calling encode() on it results in a bytestring
of the encrypted !vault-encrypted string.
ssh connection plugin triggers this if ansible_password
is from a var using !vault-encrypted. That path ends up
calling .encode() instead of using the __str__.
Fixes #19795
* Fix str.encode() errors on py2.6
py2.6 str.encode() does not take keyword arguments.
(cherry picked from commit c771ab34c7
)
This commit is contained in:
parent
a0a2392c87
commit
22f7ca8c97
2 changed files with 12 additions and 0 deletions
|
@ -132,3 +132,6 @@ class AnsibleVaultEncryptedUnicode(yaml.YAMLObject, AnsibleUnicode):
|
|||
|
||||
def __unicode__(self):
|
||||
return unicode(self.data)
|
||||
|
||||
def encode(self, encoding=None, errors=None):
|
||||
return self.data.encode(encoding, errors)
|
||||
|
|
|
@ -121,6 +121,15 @@ class TestAnsibleVaultEncryptedUnicode(unittest.TestCase, YamlTestUtils):
|
|||
avu = self._from_plaintext(seq)
|
||||
self.assert_values(avu,seq)
|
||||
|
||||
def test_unicode_from_plaintext_encode(self):
|
||||
seq = u'some text here'
|
||||
avu = self._from_plaintext(seq)
|
||||
b_avu = avu.encode('utf-8', 'strict')
|
||||
self.assertIsInstance(avu, objects.AnsibleVaultEncryptedUnicode)
|
||||
self.assertEquals(b_avu, seq.encode('utf-8', 'strict'))
|
||||
self.assertTrue(avu.vault is self.vault)
|
||||
self.assertIsInstance(avu.vault, vault.VaultLib)
|
||||
|
||||
# TODO/FIXME: make sure bad password fails differently than 'thats not encrypted'
|
||||
def test_empty_string_wrong_password(self):
|
||||
seq = ''
|
||||
|
|
Loading…
Reference in a new issue