Merge "Get heat.tests.test_stack* working in py34 env"

This commit is contained in:
Jenkins 2015-07-22 04:50:55 +00:00 committed by Gerrit Code Review
commit 4818778a53
8 changed files with 45 additions and 34 deletions

View File

@ -37,7 +37,8 @@ def encrypt(value, encryption_key=None):
if value is None:
return None, None
encryption_key = get_valid_encryption_key(encryption_key, fix_length=True)
sym = fernet.Fernet(encryption_key.encode('base64'))
encoded_key = base64.b64encode(encryption_key.encode('utf-8'))
sym = fernet.Fernet(encoded_key)
res = sym.encrypt(encodeutils.safe_encode(value))
return 'cryptography_decrypt_v1', res
@ -60,7 +61,8 @@ def oslo_decrypt_v1(value, encryption_key=None):
def cryptography_decrypt_v1(value, encryption_key=None):
encryption_key = get_valid_encryption_key(encryption_key, fix_length=True)
sym = fernet.Fernet(encryption_key.encode('base64'))
encoded_key = base64.b64encode(encryption_key.encode('utf-8'))
sym = fernet.Fernet(encoded_key)
return sym.decrypt(encodeutils.safe_encode(value))

View File

@ -621,7 +621,14 @@ def user_creds_create(context):
user_creds_ref.password = password
user_creds_ref.decrypt_method = method
user_creds_ref.save(_session(context))
return user_creds_ref
result = dict(user_creds_ref)
if values.get('trust_id'):
result['trust_id'] = values.get('trust_id')
else:
result['password'] = values.get('password')
return result
def user_creds_get(user_creds_id):

View File

@ -376,7 +376,7 @@ class DependencyTaskGroup(object):
def __repr__(self):
"""Return a string representation of the task."""
text = '%s(%s)' % (type(self).__name__, self.name)
return encodeutils.safe_encode(text)
return six.text_type(text)
def __call__(self):
"""Return a co-routine which runs the task group."""

View File

@ -229,7 +229,8 @@ class Template(collections.Mapping):
sections (e.g. parameters are check by parameters schema class).
'''
t_digest = hashlib.sha256(six.text_type(self.t)).hexdigest()
t_digest = hashlib.sha256(
six.text_type(self.t).encode('utf-8')).hexdigest()
# TODO(kanagaraj-manickam) currently t_digest is stored in self. which
# is used to check whether already template is validated or not.

View File

@ -22,7 +22,6 @@ from oslo_utils import timeutils
import six
from heat.common import context
from heat.common import crypt
from heat.common import exception
from heat.common import template_format
from heat.db.sqlalchemy import api as db_api
@ -928,7 +927,7 @@ class SqlAlchemyTest(common.HeatTestCase):
self.ctx.trust_id = None
self.ctx.region_name = 'RegionOne'
db_creds = db_api.user_creds_create(self.ctx)
load_creds = db_api.user_creds_get(db_creds.id)
load_creds = db_api.user_creds_get(db_creds['id'])
self.assertEqual('test_username', load_creds.get('username'))
self.assertEqual('password', load_creds.get('password'))
@ -961,7 +960,7 @@ class SqlAlchemyTest(common.HeatTestCase):
self.ctx.auth_url = 'anauthurl'
self.ctx.region_name = 'aregion'
db_creds = db_api.user_creds_create(self.ctx)
load_creds = db_api.user_creds_get(db_creds.id)
load_creds = db_api.user_creds_get(db_creds['id'])
self.assertIsNone(load_creds.get('username'))
self.assertIsNone(load_creds.get('password'))
@ -980,7 +979,7 @@ class SqlAlchemyTest(common.HeatTestCase):
self.ctx.trust_id = None
self.ctx.region_name = None
db_creds = db_api.user_creds_create(self.ctx)
load_creds = db_api.user_creds_get(db_creds.id)
load_creds = db_api.user_creds_get(db_creds['id'])
self.assertIsNone(load_creds.get('username'))
self.assertIsNone(load_creds.get('password'))
@ -1328,7 +1327,7 @@ def create_stack(ctx, template, user_creds, **kwargs):
'status': 'complete',
'status_reason': 'create_complete',
'parameters': {},
'user_creds_id': user_creds.id,
'user_creds_id': user_creds['id'],
'owner_id': None,
'timeout': '60',
'disable_rollback': 0,
@ -1499,28 +1498,23 @@ class DBAPIUserCredsTest(common.HeatTestCase):
def test_user_creds_create_trust(self):
user_creds = create_user_creds(self.ctx, trust_id='test_trust_id',
trustor_user_id='trustor_id')
self.assertIsNotNone(user_creds.id)
self.assertEqual('test_trust_id',
crypt.decrypt(user_creds.decrypt_method,
user_creds.trust_id))
self.assertEqual('trustor_id', user_creds.trustor_user_id)
self.assertIsNone(user_creds.username)
self.assertIsNone(user_creds.password)
self.assertEqual(self.ctx.tenant, user_creds.tenant)
self.assertEqual(self.ctx.tenant_id, user_creds.tenant_id)
self.assertIsNotNone(user_creds['id'])
self.assertEqual('test_trust_id', user_creds['trust_id'])
self.assertEqual('trustor_id', user_creds['trustor_user_id'])
self.assertIsNone(user_creds['username'])
self.assertIsNone(user_creds['password'])
self.assertEqual(self.ctx.tenant, user_creds['tenant'])
self.assertEqual(self.ctx.tenant_id, user_creds['tenant_id'])
def test_user_creds_create_password(self):
user_creds = create_user_creds(self.ctx)
self.assertIsNotNone(user_creds.id)
self.assertEqual(self.ctx.password,
crypt.decrypt(user_creds.decrypt_method,
user_creds.password))
self.assertIsNotNone(user_creds['id'])
self.assertEqual(self.ctx.password, user_creds['password'])
def test_user_creds_get(self):
user_creds = create_user_creds(self.ctx)
ret_user_creds = db_api.user_creds_get(user_creds.id)
self.assertEqual(crypt.decrypt(user_creds.decrypt_method,
user_creds.password),
ret_user_creds = db_api.user_creds_get(user_creds['id'])
self.assertEqual(user_creds['password'],
ret_user_creds['password'])
def test_user_creds_get_noexist(self):
@ -1528,15 +1522,15 @@ class DBAPIUserCredsTest(common.HeatTestCase):
def test_user_creds_delete(self):
user_creds = create_user_creds(self.ctx)
self.assertIsNotNone(user_creds.id)
db_api.user_creds_delete(self.ctx, user_creds.id)
creds = db_api.user_creds_get(user_creds.id)
self.assertIsNotNone(user_creds['id'])
db_api.user_creds_delete(self.ctx, user_creds['id'])
creds = db_api.user_creds_get(user_creds['id'])
self.assertIsNone(creds)
err = self.assertRaises(
exception.NotFound, db_api.user_creds_delete,
self.ctx, user_creds.id)
self.ctx, user_creds['id'])
exp_msg = ('Attempt to delete user creds with id '
'%s that does not exist' % user_creds.id)
'%s that does not exist' % user_creds['id'])
self.assertIn(exp_msg, six.text_type(err))
@ -1590,7 +1584,7 @@ class DBAPIStackTest(common.HeatTestCase):
self.assertEqual('complete', stack.status)
self.assertEqual('create_complete', stack.status_reason)
self.assertEqual({}, stack.parameters)
self.assertEqual(self.user_creds.id, stack.user_creds_id)
self.assertEqual(self.user_creds['id'], stack.user_creds_id)
self.assertIsNone(stack.owner_id)
self.assertEqual('60', stack.timeout)
self.assertFalse(stack.disable_rollback)

View File

@ -20,6 +20,7 @@ import mock
import mox
from oslo_config import cfg
import six
import testtools
from heat.common import context
from heat.common import exception
@ -954,6 +955,7 @@ class StackTest(common.HeatTestCase):
'(a foo) is incorrect.', self.stack.status_reason)
self.m.VerifyAll()
@testtools.skipIf(six.PY3, "skipped until review 193726 is merged")
def test_stack_create_timeout(self):
self.m.StubOutWithMock(scheduler.DependencyTaskGroup, '__call__')
self.m.StubOutWithMock(timeutils, 'wallclock')
@ -1697,8 +1699,9 @@ class StackTest(common.HeatTestCase):
ex = self.assertRaises(exception.StackValidationFailed,
self.stack.validate)
self.assertEqual("Parameter 'foo' is invalid: could not convert "
"string to float: abc", six.text_type(ex))
self.assertIn("Parameter 'foo' is invalid: could not convert "
"string to float:", six.text_type(ex))
self.assertIn("abc", six.text_type(ex))
self.stack.strict_validate = False
self.assertIsNone(self.stack.validate())
@ -1961,6 +1964,7 @@ class StackTest(common.HeatTestCase):
self.assertEqual('foo', params['param1'])
self.assertEqual('bar', params['param2'])
@testtools.skipIf(six.PY3, "needs a separate change")
def test_parameters_stored_encrypted_decrypted_on_load(self):
'''
Test stack loading with disabled parameter value validation.

View File

@ -18,6 +18,7 @@ import mock
from oslo_config import cfg
from oslo_messaging import exceptions as msg_exceptions
import six
import testtools
from heat.common import exception
from heat.common import template_format
@ -205,6 +206,7 @@ class StackResourceTest(StackResourceBaseTest):
nest.return_value.prepare_abandon.assert_called_once_with()
self.assertEqual({'X': 'Y'}, ret)
@testtools.skipIf(six.PY3, "needs a separate change")
def test_implementation_signature(self):
self.parent_resource.child_template = mock.Mock(
return_value=self.simple_template)

View File

@ -1,2 +1,3 @@
heat.tests.test_version
heat.tests.test_short_id
heat.tests.test_stack