deb-mistral/mistral/tests/unit/utils/test_utils.py
Nikolay Mahotkin 56f2d5f4b5 Fixing SSH actions to use names of private keys
* SSH action uses private key names instead of
   private keys themself. All private keys now
   should be in <user-home>/.ssh/, e.g. searching
   of key 'my_key.pem' will be at <user-home>/.ssh/my_key.pem
 * Fixed functional tests
 * Remove sudo while running tests

Closes-Bug: #1507600

Depends-On: Idc4340cda80d02f4ee88c91600b72d0f914c4084

Change-Id: I503d78ff541183ce850476229842fa6f20061a00
2015-10-22 16:30:54 +03:00

134 lines
3.5 KiB
Python

# Copyright 2013 - Mirantis, Inc.
# Copyright 2015 - StackStorm, Inc.
# Copyright 2015 - Huawei Technologies Co. Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import copy
from mistral import exceptions as exc
from mistral.tests import base
from mistral import utils
from mistral.utils import ssh_utils
LEFT = {
'key1': {
'key11': "val11"
},
'key2': 'val2'
}
RIGHT = {
'key1': {
'key11': "val111111",
'key12': "val12",
'key13': {
'key131': 'val131'
}
},
'key2': 'val2222',
'key3': 'val3'
}
class UtilsTest(base.BaseTest):
def setUp(self):
super(UtilsTest, self).setUp()
def test_merge_dicts(self):
left = copy.deepcopy(LEFT)
right = copy.deepcopy(RIGHT)
expected = {
'key1': {
'key11': "val111111",
'key12': "val12",
'key13': {
'key131': 'val131'
}
},
'key2': 'val2222',
'key3': 'val3'
}
utils.merge_dicts(left, right)
self.assertDictEqual(left, expected)
def test_merge_dicts_overwrite_false(self):
left = copy.deepcopy(LEFT)
right = copy.deepcopy(RIGHT)
expected = {
'key1': {
'key11': "val11",
'key12': "val12",
'key13': {
'key131': 'val131'
}
},
'key2': 'val2',
'key3': 'val3'
}
utils.merge_dicts(left, right, overwrite=False)
self.assertDictEqual(left, expected)
def test_itersubclasses(self):
class A(object):
pass
class B(A):
pass
class C(A):
pass
class D(C):
pass
self.assertEqual([B, C, D], list(utils.iter_subclasses(A)))
def test_get_input_dict(self):
input = ['param1', {'param2': 2}]
input_dict = utils.get_input_dict(input)
self.assertIn('param1', input_dict)
self.assertIn('param2', input_dict)
self.assertEqual(2, input_dict.get('param2'))
self.assertIs(input_dict.get('param1'), utils.NotDefined)
def test_get_input_dict_from_input_string(self):
input_string = 'param1, param2=2, param3="var3"'
input_dict = utils.get_dict_from_string(input_string)
self.assertIn('param1', input_dict)
self.assertIn('param2', input_dict)
self.assertIn('param3', input_dict)
self.assertEqual(2, input_dict.get('param2'))
self.assertEqual('var3', input_dict.get('param3'))
self.assertIs(input_dict.get('param1'), utils.NotDefined)
def test_paramiko_to_private_key(self):
self.assertRaises(
exc.DataAccessException,
ssh_utils._to_paramiko_private_key,
"../dir"
)
self.assertRaises(
exc.DataAccessException,
ssh_utils._to_paramiko_private_key,
"..\\dir"
)