646fcd2e23
Add API tests for the resource locks APIs Change-Id: Idf71e236b1b8a2558bb4ad3de1018fa33b41877f Partially-implements: bp/allow-locking-shares-against-deletion Depends-On: I146bc09e4e8a39797e22458ff6860346e11e592e Signed-off-by: Goutham Pacha Ravi <gouthampravi@gmail.com>
128 lines
4.9 KiB
Python
128 lines
4.9 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.
|
|
|
|
from tempest import config
|
|
from tempest.lib import decorators
|
|
from tempest.lib import exceptions as lib_exc
|
|
|
|
from manila_tempest_tests.tests.api import base
|
|
from manila_tempest_tests import utils
|
|
|
|
CONF = config.CONF
|
|
|
|
LOCKS_MIN_API_VERSION = '2.81'
|
|
|
|
|
|
class ResourceLockNegativeTestAPIOnly(base.BaseSharesMixedTest):
|
|
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(ResourceLockNegativeTestAPIOnly, cls).skip_checks()
|
|
utils.check_skip_if_microversion_not_supported(LOCKS_MIN_API_VERSION)
|
|
|
|
@decorators.attr(type=[base.TAG_NEGATIVE, base.TAG_API])
|
|
@decorators.idempotent_id('dd978cf7-1622-49e8-a6c8-3da4ac6c6f86')
|
|
def test_create_resource_lock_invalid_resource(self):
|
|
self.assertRaises(
|
|
lib_exc.BadRequest,
|
|
self.shares_v2_client.create_resource_lock,
|
|
'invalid-share-id',
|
|
'share'
|
|
)
|
|
|
|
@decorators.attr(type=[base.TAG_NEGATIVE, base.TAG_API])
|
|
@decorators.idempotent_id('d5600bdc-72c8-43fd-9900-c112aa6c87fa')
|
|
def test_delete_resource_lock_invalid(self):
|
|
self.assertRaises(
|
|
lib_exc.NotFound,
|
|
self.shares_v2_client.delete_resource_lock,
|
|
'invalid-lock-id'
|
|
)
|
|
|
|
|
|
class ResourceLockNegativeTestWithShares(base.BaseSharesMixedTest):
|
|
@classmethod
|
|
def skip_checks(cls):
|
|
super(ResourceLockNegativeTestWithShares, cls).skip_checks()
|
|
utils.check_skip_if_microversion_not_supported(LOCKS_MIN_API_VERSION)
|
|
|
|
@classmethod
|
|
def resource_setup(cls):
|
|
super(ResourceLockNegativeTestWithShares, cls).resource_setup()
|
|
share_type = cls.create_share_type()
|
|
cls.share = cls.create_share(share_type_id=share_type['id'])
|
|
cls.user_project = cls.os_admin.projects_client.show_project(
|
|
cls.shares_v2_client.project_id)['project']
|
|
|
|
@decorators.attr(type=[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])
|
|
@decorators.idempotent_id('658297a8-d675-471d-8a19-3d9e9af3a352')
|
|
def test_create_resource_lock_invalid_resource_action(self):
|
|
self.assertRaises(
|
|
lib_exc.BadRequest,
|
|
self.shares_v2_client.create_resource_lock,
|
|
self.share['id'],
|
|
'share',
|
|
resource_action='invalid-action'
|
|
)
|
|
|
|
@decorators.attr(type=[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])
|
|
@decorators.idempotent_id('0057b3e7-c250-492d-805b-e355dff954ed')
|
|
def test_create_resource_lock_invalid_lock_reason_too_long(self):
|
|
self.assertRaises(
|
|
lib_exc.BadRequest,
|
|
self.shares_v2_client.create_resource_lock,
|
|
self.share['id'],
|
|
'share',
|
|
resource_action='delete',
|
|
lock_reason='invalid' * 150,
|
|
)
|
|
|
|
@decorators.attr(type=[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])
|
|
@decorators.idempotent_id('a2db3d29-b42f-4c0b-b484-afd32f91f747')
|
|
def test_update_resource_lock_invalid_param(self):
|
|
lock = self.create_resource_lock(self.share['id'])
|
|
self.assertRaises(
|
|
lib_exc.BadRequest,
|
|
self.shares_v2_client.update_resource_lock,
|
|
lock['id'],
|
|
resource_action='invalid-action'
|
|
)
|
|
self.assertRaises(
|
|
lib_exc.BadRequest,
|
|
self.shares_v2_client.update_resource_lock,
|
|
lock['id'],
|
|
lock_reason='invalid' * 150,
|
|
)
|
|
|
|
@decorators.attr(type=[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])
|
|
@decorators.idempotent_id('45b12120-0fc3-461f-8776-fdb92e599394')
|
|
def test_update_resource_lock_created_by_different_user(self):
|
|
lock = self.create_resource_lock(self.share['id'])
|
|
new_user = self.create_user_and_get_client(project=self.user_project)
|
|
self.assertRaises(
|
|
lib_exc.Forbidden,
|
|
new_user.shares_v2_client.update_resource_lock,
|
|
lock['id'],
|
|
lock_reason="I shouldn't be able to do this",
|
|
)
|
|
|
|
@decorators.attr(type=[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])
|
|
@decorators.idempotent_id('00a8ef2b-8769-4aad-aefc-43fc579492f7')
|
|
def test_delete_resource_lock_created_by_different_user(self):
|
|
lock = self.create_resource_lock(self.share['id'])
|
|
new_user = self.create_user_and_get_client(project=self.user_project)
|
|
self.assertRaises(
|
|
lib_exc.Forbidden,
|
|
new_user.shares_v2_client.delete_resource_lock,
|
|
lock['id'],
|
|
)
|