Use b64encode to replace of encodestring

The encodestring() method is used to encode a string, and return a string
containing one or more lines of base64-encoded data. For meter_id, the
return is same as b64encode() method except an extra trailing newline
('\n').

Change-Id: Ia14747ff0b4c643b33ed99da7fa422480f0f8095
Closes-Bug: #1271530
This commit is contained in:
liu-sheng 2015-09-07 15:37:03 +08:00 committed by unknown
parent f94a72ae2b
commit c8f4e4bef6
2 changed files with 6 additions and 2 deletions
ceilometer
api/controllers/v2
tests/functional/api/v2

@ -454,7 +454,7 @@ class Meter(base.Base):
meter_id = '%s+%s' % (kwargs['resource_id'], kwargs['name'])
# meter_id is of type Unicode but base64.encodestring() only accepts
# strings. See bug #1333177
meter_id = base64.encodestring(meter_id.encode('utf-8'))
meter_id = base64.b64encode(meter_id.encode('utf-8'))
kwargs['meter_id'] = meter_id
super(Meter, self).__init__(**kwargs)

@ -785,7 +785,11 @@ class TestListMeters(v2.FunctionalTest,
data = self.get_json('/meters')
for i in data:
meter_id = '%s+%s' % (i['resource_id'], i['name'])
expected = base64.encodestring(meter_id.encode('utf-8'))
expected = base64.b64encode(meter_id.encode('utf-8'))
if six.PY3:
expected = expected.decode('ascii')
self.assertEqual(expected, i['meter_id'])
self.assertFalse(i['meter_id'].endswith('\n'))
self.assertEqual(
[i['resource_id'].encode('utf-8'), i['name'].encode('utf-8')],
base64.b64decode(i['meter_id']).split('+'))