Fail gracefully when MD5 is unavailable
The glanceclient currently assumes that MD5 will always be available. This is not the case, however, in a FIPS-compliant environment. This patch enables the glanceclient to fail gracefully in such a case. Closes-bug: #1871675 Change-Id: Ibd89989e06cc5be7da71f5f21561d73b5abc4104
This commit is contained in:
@@ -18,6 +18,8 @@ import hashlib
|
||||
import testtools
|
||||
from unittest import mock
|
||||
|
||||
import ddt
|
||||
|
||||
from glanceclient import exc
|
||||
from glanceclient.tests.unit.v2 import base
|
||||
from glanceclient.tests import utils
|
||||
@@ -704,6 +706,7 @@ schema_fixtures = {
|
||||
}
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
class TestController(testtools.TestCase):
|
||||
def setUp(self):
|
||||
super(TestController, self).setUp()
|
||||
@@ -1092,6 +1095,21 @@ class TestController(testtools.TestCase):
|
||||
body = ''.join([b for b in body])
|
||||
self.assertEqual('CCC', body)
|
||||
|
||||
@ddt.data('headeronly', 'chkonly', 'multihash')
|
||||
def test_data_with_checksum_but_no_md5_algo(self, prefix):
|
||||
with mock.patch('hashlib.new', mock.MagicMock(
|
||||
side_effect=ValueError('unsupported hash type'))):
|
||||
body = self.controller.data(prefix +
|
||||
'-dd57-11e1-af0f-02163e68b1d8',
|
||||
allow_md5_fallback=True)
|
||||
try:
|
||||
body = ''.join([b for b in body])
|
||||
self.fail('missing md5 algo did not raise an error')
|
||||
except IOError as e:
|
||||
self.assertEqual(errno.EPIPE, e.errno)
|
||||
msg = 'md5 algorithm is not available on the client'
|
||||
self.assertIn(msg, str(e))
|
||||
|
||||
def test_data_with_checksum_and_fallback(self):
|
||||
# make sure the allow_md5_fallback option does not cause any
|
||||
# incorrect behavior when fallback is not needed
|
||||
|
||||
Reference in New Issue
Block a user