summaryrefslogtreecommitdiff
path: root/cloudinit/sources/tests
diff options
context:
space:
mode:
authorChad Smith <chad.smith@canonical.com>2019-09-27 20:46:00 +0000
committerServer Team CI Bot <josh.powers+server-team-bot@canonical.com>2019-09-27 20:46:00 +0000
commit067516d7bc917e4921b9f1424b7a64e92cae0ad2 (patch)
tree79063a27ea9cf596e7dcbe3e8ba7452abb9b84c8 /cloudinit/sources/tests
parent052d655cfba37243396c491a1e7892ba3736ab6f (diff)
downloadvyos-cloud-init-067516d7bc917e4921b9f1424b7a64e92cae0ad2.tar.gz
vyos-cloud-init-067516d7bc917e4921b9f1424b7a64e92cae0ad2.zip
util: json.dumps on python 2.7 will handle UnicodeDecodeError on binary
Since python 2.7 doesn't handle UnicodeDecodeErrors with the default handler LP: #1801364
Diffstat (limited to 'cloudinit/sources/tests')
-rw-r--r--cloudinit/sources/tests/test_init.py12
1 files changed, 5 insertions, 7 deletions
diff --git a/cloudinit/sources/tests/test_init.py b/cloudinit/sources/tests/test_init.py
index 6378e98b..9698261b 100644
--- a/cloudinit/sources/tests/test_init.py
+++ b/cloudinit/sources/tests/test_init.py
@@ -457,19 +457,17 @@ class TestDataSource(CiTestCase):
instance_json['ds']['meta_data'])
@skipIf(not six.PY2, "Only python2 hits UnicodeDecodeErrors on non-utf8")
- def test_non_utf8_encoding_logs_warning(self):
- """When non-utf-8 values exist in py2 instance-data is not written."""
+ def test_non_utf8_encoding_gets_b64encoded(self):
+ """When non-utf-8 values exist in py2 instance-data is b64encoded."""
tmp = self.tmp_dir()
datasource = DataSourceTestSubclassNet(
self.sys_cfg, self.distro, Paths({'run_dir': tmp}),
custom_metadata={'key1': 'val1', 'key2': {'key2.1': b'ab\xaadef'}})
self.assertTrue(datasource.get_data())
json_file = self.tmp_path(INSTANCE_JSON_FILE, tmp)
- self.assertFalse(os.path.exists(json_file))
- self.assertIn(
- "WARNING: Error persisting instance-data.json: 'utf8' codec can't"
- " decode byte 0xaa in position 2: invalid start byte",
- self.logs.getvalue())
+ instance_json = util.load_json(util.load_file(json_file))
+ key21_value = instance_json['ds']['meta_data']['key2']['key2.1']
+ self.assertEqual('ci-b64:' + util.b64e(b'ab\xaadef'), key21_value)
def test_get_hostname_subclass_support(self):
"""Validate get_hostname signature on all subclasses of DataSource."""