Port last test (test_secrets) to Python 3
* normalize_before_encryption(): on Python 3, unencrypted is already a Unicode string (no need to decode). * test_secrets: don't pass bytes string but native string (py2: bytes, py3: Unicode) as payload * test_secrets: Decode HTTP bytes from UTF-8 for comparison * test_get_secret_is_decoded_for_binary(): expect a binary string, not a Unicode string * test_secrets: replace map() with a reglar loop (for) to execute child.delete() on Python 3. On Python 3, map() is now lazy and only execute the expression when the map is consumed. * Remove tests-py3-blacklist.txt and the testenv:py34 section from tox.ini since all unit tests now pass on Python 3.4 Partially implements: blueprint barbican-py3 Change-Id: Ief8531c3b7201f884d5d4ca7a47a381d0bb9cb2c
This commit is contained in:
parent
b113f6364f
commit
c5012af5f2
@ -14,6 +14,7 @@
|
||||
from Crypto.PublicKey import RSA
|
||||
from OpenSSL import crypto
|
||||
from oslo_serialization import base64
|
||||
import six
|
||||
|
||||
from barbican import i18n as u # noqa
|
||||
from barbican.plugin.interface import secret_store as s
|
||||
@ -47,8 +48,11 @@ def normalize_before_encryption(unencrypted, content_type, content_encoding,
|
||||
# Process plain-text type.
|
||||
if normalized_media_type in mime_types.PLAIN_TEXT:
|
||||
# normalize text to binary and then base64 encode it
|
||||
unencrypted_bytes = unencrypted.encode('utf-8')
|
||||
b64payload = base64.encode_as_bytes(unencrypted_bytes)
|
||||
if six.PY3:
|
||||
b64payload = base64.encode_as_bytes(unencrypted)
|
||||
else:
|
||||
unencrypted_bytes = unencrypted.encode('utf-8')
|
||||
b64payload = base64.encode_as_bytes(unencrypted_bytes)
|
||||
|
||||
# Process binary type.
|
||||
else:
|
||||
|
@ -34,7 +34,7 @@ class WhenTestingSecretsResource(utils.BarbicanAPIBaseTestCase):
|
||||
def test_can_create_new_secret_one_step(self):
|
||||
resp, secret_uuid = create_secret(
|
||||
self.app,
|
||||
payload=b'not-encrypted',
|
||||
payload='not-encrypted',
|
||||
content_type='text/plain'
|
||||
)
|
||||
|
||||
@ -63,7 +63,7 @@ class WhenTestingSecretsResource(utils.BarbicanAPIBaseTestCase):
|
||||
self.assertIsNotNone(project)
|
||||
|
||||
def test_can_create_new_secret_with_payload_just_under_max(self):
|
||||
large_payload = b'A' * (validators.DEFAULT_MAX_SECRET_BYTES - 8)
|
||||
large_payload = 'A' * (validators.DEFAULT_MAX_SECRET_BYTES - 8)
|
||||
resp, _ = create_secret(
|
||||
self.app,
|
||||
payload=large_payload,
|
||||
@ -73,7 +73,7 @@ class WhenTestingSecretsResource(utils.BarbicanAPIBaseTestCase):
|
||||
self.assertEqual(201, resp.status_int)
|
||||
|
||||
def test_creating_new_secret_with_oversized_payload_should_fail(self):
|
||||
oversized_payload = b'A' * (validators.DEFAULT_MAX_SECRET_BYTES + 10)
|
||||
oversized_payload = 'A' * (validators.DEFAULT_MAX_SECRET_BYTES + 10)
|
||||
resp, _ = create_secret(
|
||||
self.app,
|
||||
payload=oversized_payload,
|
||||
@ -140,7 +140,7 @@ class WhenTestingSecretsResource(utils.BarbicanAPIBaseTestCase):
|
||||
# Create a normal secret with the TransportKey
|
||||
resp, secret_uuid = create_secret(
|
||||
self.app,
|
||||
payload=b'not-encrypted',
|
||||
payload='not-encrypted',
|
||||
content_type='text/plain',
|
||||
transport_key_id=transport_key_id
|
||||
)
|
||||
@ -160,7 +160,7 @@ class WhenTestingSecretsResource(utils.BarbicanAPIBaseTestCase):
|
||||
def test_new_secret_fails_with_invalid_transport_key_ref(self):
|
||||
resp, _ = create_secret(
|
||||
self.app,
|
||||
payload=b'superdupersecret',
|
||||
payload='superdupersecret',
|
||||
content_type='text/plain',
|
||||
transport_key_id="non_existing_transport_key_id",
|
||||
transport_key_needed="true",
|
||||
@ -171,7 +171,7 @@ class WhenTestingSecretsResource(utils.BarbicanAPIBaseTestCase):
|
||||
def test_new_secret_w_unsupported_content_type_should_fail(self):
|
||||
resp, _ = create_secret(
|
||||
self.app,
|
||||
payload=b'something_here',
|
||||
payload='something_here',
|
||||
content_type='bogus_content_type',
|
||||
expect_errors=True
|
||||
)
|
||||
@ -186,7 +186,7 @@ class WhenTestingSecretsResource(utils.BarbicanAPIBaseTestCase):
|
||||
content_type=None):
|
||||
resp, _ = create_secret(
|
||||
self.app,
|
||||
payload=b'lOtfqHaUUpe6NqLABgquYQ==',
|
||||
payload='lOtfqHaUUpe6NqLABgquYQ==',
|
||||
content_type=content_type,
|
||||
content_encoding=encoding,
|
||||
expect_errors=True
|
||||
@ -289,7 +289,7 @@ class WhenGettingPuttingOrDeletingSecret(utils.BarbicanAPIBaseTestCase):
|
||||
'/secrets/{0}'.format(secret_uuid), headers=headers
|
||||
)
|
||||
self.assertEqual(200, get_resp.status_int)
|
||||
self.assertEqual(payload, get_resp.body)
|
||||
self.assertEqual(payload, get_resp.body.decode('utf-8'))
|
||||
|
||||
def test_get_secret_payload_with_pecan_default_accept_header(self):
|
||||
payload = 'a very interesting string'
|
||||
@ -306,7 +306,7 @@ class WhenGettingPuttingOrDeletingSecret(utils.BarbicanAPIBaseTestCase):
|
||||
'/secrets/{0}/payload'.format(secret_uuid), headers=headers
|
||||
)
|
||||
self.assertEqual(200, get_resp.status_int)
|
||||
self.assertEqual(payload, get_resp.body)
|
||||
self.assertEqual(payload, get_resp.body.decode('utf-8'))
|
||||
|
||||
def test_get_secret_payload_with_blank_accept_header(self):
|
||||
payload = 'a very interesting string'
|
||||
@ -323,7 +323,7 @@ class WhenGettingPuttingOrDeletingSecret(utils.BarbicanAPIBaseTestCase):
|
||||
'/secrets/{0}/payload'.format(secret_uuid), headers=headers
|
||||
)
|
||||
self.assertEqual(200, get_resp.status_int)
|
||||
self.assertEqual(payload, get_resp.body)
|
||||
self.assertEqual(payload, get_resp.body.decode('utf-8'))
|
||||
|
||||
def test_get_secret_payload_with_no_accept_header(self):
|
||||
payload = 'a very interesting string'
|
||||
@ -340,7 +340,7 @@ class WhenGettingPuttingOrDeletingSecret(utils.BarbicanAPIBaseTestCase):
|
||||
'/secrets/{0}/payload'.format(secret_uuid), headers=headers
|
||||
)
|
||||
self.assertEqual(200, get_resp.status_int)
|
||||
self.assertEqual(payload, get_resp.body)
|
||||
self.assertEqual(payload, get_resp.body.decode('utf-8'))
|
||||
|
||||
def test_get_secret_is_decoded_for_binary(self):
|
||||
payload = 'a123'
|
||||
@ -356,7 +356,7 @@ class WhenGettingPuttingOrDeletingSecret(utils.BarbicanAPIBaseTestCase):
|
||||
get_resp = self.app.get(
|
||||
'/secrets/{0}'.format(secret_uuid), headers=headers
|
||||
)
|
||||
decoded = 'k]\xb7'
|
||||
decoded = b'k]\xb7'
|
||||
|
||||
self.assertEqual(decoded, get_resp.body)
|
||||
|
||||
@ -428,7 +428,7 @@ class WhenGettingPuttingOrDeletingSecret(utils.BarbicanAPIBaseTestCase):
|
||||
)
|
||||
|
||||
self.assertEqual(200, get_resp.status_int)
|
||||
self.assertEqual(message, get_resp.body)
|
||||
self.assertEqual(message, get_resp.body.decode('utf-8'))
|
||||
|
||||
def test_put_binary_secret(self):
|
||||
resp, secret_uuid = create_secret(
|
||||
@ -461,7 +461,7 @@ class WhenGettingPuttingOrDeletingSecret(utils.BarbicanAPIBaseTestCase):
|
||||
|
||||
self.assertEqual(201, resp.status_int)
|
||||
|
||||
payload = base64.b64encode('I had something for this')
|
||||
payload = base64.b64encode(b'I had something for this')
|
||||
put_resp = self.app.put(
|
||||
'/secrets/{0}'.format(secret_uuid),
|
||||
payload,
|
||||
@ -491,7 +491,7 @@ class WhenGettingPuttingOrDeletingSecret(utils.BarbicanAPIBaseTestCase):
|
||||
|
||||
self.assertEqual(201, resp.status_int)
|
||||
|
||||
payload = base64.b64encode('I had something for this')
|
||||
payload = base64.b64encode(b'I had something for this')
|
||||
put_resp = self.app.put(
|
||||
'/secrets/{0}'.format(secret_uuid),
|
||||
payload,
|
||||
|
@ -336,7 +336,8 @@ class WhenTestingDBCleanUpCommand(utils.RepositoryTestCase):
|
||||
self.assertFalse(_entry_exists(childless_project))
|
||||
|
||||
container.delete()
|
||||
map(lambda child: child.delete(), project_children_list)
|
||||
for child in project_children_list:
|
||||
child.delete()
|
||||
clean.cleanup_all()
|
||||
clean.cleanup_unassociated_projects()
|
||||
self.assertFalse(_entry_exists(project_with_children))
|
||||
|
@ -1,3 +0,0 @@
|
||||
barbican.tests.api.controllers.test_containers
|
||||
barbican.tests.api.controllers.test_secrets
|
||||
barbican.tests.cmd.test_db_cleanup
|
5
tox.ini
5
tox.ini
@ -25,11 +25,6 @@ commands =
|
||||
[testenv:releasenotes]
|
||||
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
||||
|
||||
[testenv:py34]
|
||||
commands =
|
||||
/usr/bin/find . -type f -name "*.pyc" -delete
|
||||
ostestr --blacklist_file=tests-py3-blacklist.txt
|
||||
|
||||
[testenv:pep8]
|
||||
sitepackages = False
|
||||
commands =
|
||||
|
Loading…
x
Reference in New Issue
Block a user