magnum/magnum/tests/unit/conductor/handlers/common/test_trust_manager.py

125 lines
4.8 KiB
Python

# Copyright 2016 NEC Corporation. All rights reserved.
#
# 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 mock
from mock import patch
from magnum.common import exception
from magnum.conductor.handlers.common import trust_manager
from magnum.tests import base
class TrustManagerTestCase(base.BaseTestCase):
def setUp(self):
super(TrustManagerTestCase, self).setUp()
osc_class_patcher = patch('magnum.common.clients.OpenStackClients')
osc_class = osc_class_patcher.start()
self.addCleanup(osc_class_patcher.stop)
self.osc = mock.MagicMock()
osc_class.return_value = self.osc
@patch('magnum.common.utils.generate_password')
def test_create_trustee_and_trust(self, mock_generate_password):
mock_password = "password_mock"
mock_generate_password.return_value = mock_password
mock_cluster = mock.MagicMock()
mock_cluster.uuid = 'mock_cluster_uuid'
mock_cluster.project_id = 'mock_cluster_project_id'
mock_keystone = mock.MagicMock()
mock_trustee = mock.MagicMock()
mock_trustee.id = 'mock_trustee_id'
mock_trustee.name = 'mock_trustee_username'
mock_trust = mock.MagicMock()
mock_trust.id = 'mock_trust_id'
self.osc.keystone.return_value = mock_keystone
mock_keystone.create_trustee.return_value = mock_trustee
mock_keystone.create_trust.return_value = mock_trust
trust_manager.create_trustee_and_trust(self.osc, mock_cluster)
mock_keystone.create_trustee.assert_called_once_with(
'%s_%s' % (mock_cluster.uuid, mock_cluster.project_id),
mock_password,
)
mock_keystone.create_trust.assert_called_once_with(
mock_trustee.id,
)
self.assertEqual(mock_trustee.name, mock_cluster.trustee_username)
self.assertEqual(mock_trustee.id, mock_cluster.trustee_user_id)
self.assertEqual(mock_password, mock_cluster.trustee_password)
self.assertEqual(mock_trust.id, mock_cluster.trust_id)
@patch('magnum.common.utils.generate_password')
def test_create_trustee_and_trust_with_error(self, mock_generate_password):
mock_cluster = mock.MagicMock()
mock_generate_password.side_effect = exception.MagnumException()
self.assertRaises(exception.TrusteeOrTrustToClusterFailed,
trust_manager.create_trustee_and_trust,
self.osc,
mock_cluster)
def test_delete_trustee_and_trust(self):
mock_cluster = mock.MagicMock()
mock_cluster.trust_id = 'trust_id'
mock_cluster.trustee_user_id = 'trustee_user_id'
mock_keystone = mock.MagicMock()
self.osc.keystone.return_value = mock_keystone
context = mock.MagicMock()
trust_manager.delete_trustee_and_trust(self.osc, context,
mock_cluster)
mock_keystone.delete_trust.assert_called_once_with(
context, mock_cluster
)
mock_keystone.delete_trustee.assert_called_once_with(
mock_cluster.trustee_user_id,
)
def test_delete_trustee_and_trust_without_trust_id(self):
mock_cluster = mock.MagicMock()
mock_cluster.trust_id = None
mock_cluster.trustee_user_id = 'trustee_user_id'
mock_keystone = mock.MagicMock()
self.osc.keystone.return_value = mock_keystone
context = mock.MagicMock()
trust_manager.delete_trustee_and_trust(self.osc, context,
mock_cluster)
self.assertEqual(0, mock_keystone.delete_trust.call_count)
mock_keystone.delete_trustee.assert_called_once_with(
mock_cluster.trustee_user_id,
)
def test_delete_trustee_and_trust_without_trustee_user_id(self):
mock_cluster = mock.MagicMock()
mock_cluster.trust_id = 'trust_id'
mock_cluster.trustee_user_id = None
mock_keystone = mock.MagicMock()
self.osc.keystone.return_value = mock_keystone
context = mock.MagicMock()
trust_manager.delete_trustee_and_trust(self.osc, context, mock_cluster)
mock_keystone.delete_trust.assert_called_once_with(
context, mock_cluster
)
self.assertEqual(0, mock_keystone.delete_trustee.call_count)