Merge "Fix huawei driver username/password encoding bug"

This commit is contained in:
Jenkins 2016-10-19 12:45:46 +00:00 committed by Gerrit Code Review
commit 1cd59f2461
2 changed files with 14 additions and 3 deletions
manila
share/drivers/huawei/v3
tests/share/drivers/huawei

@ -191,11 +191,12 @@ class RestHelper(object):
for key in ['UserName', 'UserPassword']:
node = root.find('Storage/%s' % key)
if node.text.find(prefix_name) > -1:
logininfo[key] = base64.b64decode(six.b(node.text[4:]))
logininfo[key] = base64.b64decode(
six.b(node.text[4:])).decode()
else:
logininfo[key] = node.text
node.text = prefix_name + six.text_type(
base64.b64encode(six.b(node.text)))
node.text = prefix_name + base64.b64encode(
six.b(node.text)).decode()
need_encode = True
if need_encode:
self._change_file_mode(filename)

@ -4482,3 +4482,13 @@ class HuaweiShareDriverTestCase(test.TestCase):
activate_deactivate_qos_mock.assert_called_once_with('11', False)
delete_qos_mock.assert_called_once_with('11')
def test_username_password_encode_decode(self):
for i in (1, 2):
# First loop will encode the username/password and
# write back to configuration.
# Second loop will get the encoded username/password and
# decode them.
logininfo = self.driver.plugin.helper._get_login_info()
self.assertEqual('admin', logininfo['UserName'])
self.assertEqual('Admin@storage', logininfo['UserPassword'])