sahara/sahara/tests/unit/test_exceptions.py

172 lines
6.1 KiB
Python

# Copyright (c) 2015 Mirantis Inc.
#
# 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 six
from sahara import exceptions as exc
from sahara.tests.unit import base
class TestExceptions(base.SaharaTestCase):
def _validate_exc(self, exc, expected_message, *args, **kwargs):
message = ""
try:
raise exc(*args, **kwargs)
except exc as e:
message = six.text_type(e)
if message.find("\nError ID") != -1:
message = message.split("\nError ID")[0]
self.assertEqual(expected_message, message)
def test_not_found(self):
self._validate_exc(
exc.NotFoundException, "Object 'sample' is not found", "sample")
self._validate_exc(
exc.NotFoundException, "Not found 'sample'", "sample",
"Not found '%s'")
def test_name_already_exists(self):
self._validate_exc(
exc.NameAlreadyExistsException, "Name already exists")
self._validate_exc(
exc.NameAlreadyExistsException, "message", "message")
def test_invalid_credentials(self):
self._validate_exc(
exc.InvalidCredentials, "Invalid credentials")
self._validate_exc(
exc.InvalidCredentials, "message", "message")
def test_invalid_reference(self):
self._validate_exc(
exc.InvalidReferenceException, "Invalid object reference")
self._validate_exc(
exc.InvalidReferenceException, "message", "message")
def test_remote_command(self):
exc_message = ('Error during command execution: "cmd"\n'
'Return code: 0\n'
'STDERR:\n'
'stderr\n'
'STDOUT:\n'
'stdout')
self._validate_exc(
exc.RemoteCommandException, exc_message, "cmd", "0",
"stdout", "stderr")
def test_invalid_data(self):
self._validate_exc(
exc.InvalidDataException, "Data is invalid")
self._validate_exc(
exc.InvalidDataException, "message", "message")
def test_bad_job_binary_internal(self):
ex_message = ("Job binary internal data must be a string of length "
"greater than zero")
self._validate_exc(
exc.BadJobBinaryInternalException, ex_message)
self._validate_exc(
exc.BadJobBinaryInternalException, "message", "message")
def test_bad_job_binary(self):
ex_message = ("To work with JobBinary located in internal swift"
" add 'user' and 'password' to extra")
self._validate_exc(
exc.BadJobBinaryException, ex_message)
self._validate_exc(
exc.BadJobBinaryException, "message", "message")
def test_db_duplicate(self):
ex_message = "Database object already exists"
self._validate_exc(
exc.DBDuplicateEntry, ex_message)
self._validate_exc(
exc.DBDuplicateEntry, "message", "message")
def test_creation_failed(self):
ex_message = "Object was not created"
self._validate_exc(
exc.CreationFailed, ex_message)
self._validate_exc(
exc.CreationFailed, "message", "message")
def test_canceling_failed(self):
ex_message = "Operation was not canceled"
self._validate_exc(
exc.CancelingFailed, ex_message)
self._validate_exc(
exc.CancelingFailed, "message", "message")
def test_deletion_failed(self):
ex_message = "Object was not deleted"
self._validate_exc(
exc.DeletionFailed, ex_message)
self._validate_exc(
exc.DeletionFailed, "message", "message")
def test_missing_floating_network(self):
message = ("Node Group name is missing 'floating_ip_pool' "
"field")
self._validate_exc(
exc.MissingFloatingNetworkException, message, "name")
def test_swift_client(self):
self._validate_exc(exc.SwiftClientException, "message", "message")
def test_data_too_big(self):
exc_message = ("Size of data (size) is greater than maximum "
"(maximum)")
self._validate_exc(
exc.DataTooBigException, "size, maximum", "size", "maximum",
"%(size)s, %(maximum)s")
self._validate_exc(
exc.DataTooBigException, exc_message, "size", "maximum")
def test_not_implemented(self):
self._validate_exc(
exc.NotImplementedException, "Feature 'bond' is not implemented",
"bond")
self._validate_exc(
exc.NotImplementedException, "feature", "feature", "%s")
def test_incorrect_state(self):
self._validate_exc(exc.IncorrectStateError, "message", "message")
def test_deprecated(self):
self._validate_exc(exc.DeprecatedException, "message", "message")
def test_forbidden(self):
self._validate_exc(exc.Forbidden, "message", "message")
self._validate_exc(exc.Forbidden, "You are not authorized "
"to complete this action")
def test_image_not_registered(self):
self._validate_exc(
exc.ImageNotRegistered, 'Image image is not registered in Sahara',
'image')
def test_malformed_request_body(self):
self._validate_exc(
exc.MalformedRequestBody, "Malformed message body: reason",
"reason")
def test_update_failed(self):
self._validate_exc(
exc.UpdateFailedException, "Object 'value' could not be updated",
"value")
self._validate_exc(
exc.UpdateFailedException, "value", "value", "%s")