128 lines
4.2 KiB
Python
128 lines
4.2 KiB
Python
#
|
|
# 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 os
|
|
|
|
import mock
|
|
from pecan.testing import load_test_app
|
|
|
|
from tuskar.db.sqlalchemy import models as db_models
|
|
from tuskar.tests import base
|
|
|
|
|
|
URL_ROLES = '/v1/overcloud_roles'
|
|
|
|
|
|
class OvercloudRolesTests(base.TestCase):
|
|
|
|
def setUp(self):
|
|
super(OvercloudRolesTests, self).setUp()
|
|
|
|
config_file = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
|
'..', '..', '..', '..', 'api', 'config.py')
|
|
self.app = load_test_app(config_file)
|
|
|
|
@mock.patch('tuskar.db.sqlalchemy.api.Connection.get_overcloud_roles')
|
|
def test_get_all(self, mock_db_get):
|
|
# Setup
|
|
fake_results = [db_models.OvercloudRole(name='foo')]
|
|
mock_db_get.return_value = fake_results
|
|
|
|
# Test
|
|
response = self.app.get(URL_ROLES)
|
|
result = response.json
|
|
|
|
# Verify
|
|
self.assertEqual(response.status_int, 200)
|
|
self.assertTrue(isinstance(result, list))
|
|
self.assertEqual(1, len(result))
|
|
self.assertEqual(result[0]['name'], 'foo')
|
|
|
|
self.assertEqual(1, mock_db_get.call_count)
|
|
|
|
@mock.patch('tuskar.db.sqlalchemy.api.'
|
|
'Connection.get_overcloud_role_by_id')
|
|
def test_get_one(self, mock_db_get):
|
|
# Setup
|
|
fake_result = db_models.OvercloudRole(name='foo')
|
|
mock_db_get.return_value = fake_result
|
|
|
|
# Test
|
|
url = URL_ROLES + '/' + '12345'
|
|
response = self.app.get(url)
|
|
result = response.json
|
|
|
|
# Verify
|
|
self.assertEqual(response.status_int, 200)
|
|
self.assertEqual(result['name'], 'foo')
|
|
|
|
mock_db_get.assert_called_once_with(12345)
|
|
|
|
@mock.patch('tuskar.db.sqlalchemy.api.Connection.create_overcloud_role')
|
|
def test_post(self, mock_db_create):
|
|
# Setup
|
|
create_me = {'name': 'new'}
|
|
|
|
fake_created = db_models.OvercloudRole(name='created')
|
|
mock_db_create.return_value = fake_created
|
|
|
|
# Test
|
|
response = self.app.post_json(URL_ROLES, params=create_me)
|
|
result = response.json
|
|
|
|
# Verify
|
|
self.assertEqual(response.status_int, 201)
|
|
self.assertEqual(result['name'], fake_created.name)
|
|
|
|
self.assertEqual(1, mock_db_create.call_count)
|
|
db_create_model = mock_db_create.call_args[0][0]
|
|
self.assertTrue(isinstance(db_create_model,
|
|
db_models.OvercloudRole))
|
|
self.assertEqual(db_create_model.name, create_me['name'])
|
|
|
|
@mock.patch('tuskar.db.sqlalchemy.api.Connection.update_overcloud_role')
|
|
def test_put(self, mock_db_update):
|
|
# Setup
|
|
changes = {'name': 'updated'}
|
|
|
|
fake_updated = db_models.OvercloudRole(name='after-update')
|
|
mock_db_update.return_value = fake_updated
|
|
|
|
# Test
|
|
url = URL_ROLES + '/' + '12345'
|
|
response = self.app.put_json(url, params=changes)
|
|
result = response.json
|
|
|
|
# Verify
|
|
self.assertEqual(response.status_int, 200)
|
|
self.assertEqual(result['name'], fake_updated.name)
|
|
|
|
self.assertEqual(1, mock_db_update.call_count)
|
|
db_update_model = mock_db_update.call_args[0][0]
|
|
self.assertTrue(isinstance(db_update_model,
|
|
db_models.OvercloudRole))
|
|
self.assertEqual(db_update_model.id, 12345)
|
|
self.assertEqual(db_update_model.name, changes['name'])
|
|
|
|
@mock.patch('tuskar.db.sqlalchemy.api.'
|
|
'Connection.delete_overcloud_role_by_id')
|
|
def test_delete(self, mock_db_delete):
|
|
# Test
|
|
url = URL_ROLES + '/' + '12345'
|
|
response = self.app.delete(url)
|
|
|
|
# Verify
|
|
self.assertEqual(response.status_int, 204)
|
|
|
|
mock_db_delete.assert_called_once_with(12345)
|