[RBAC] Generate unique cephx IDs for each operation in tests

The current tests encounter issues due to the reuse of the same
cephx ID for multiple operations. This can lead to conflicts and
test failures.
This patch resolves the issue by ensuring that each operation
generates and uses a unique cephx ID, preventing conflicts and
improving test reliability.

Closes-Bug: #2071433
Change-Id: I837907e3472acc4580727b05c47c70c2e0767e93
This commit is contained in:
lkuchlan 2024-12-01 12:12:00 +02:00
parent 774696b7d6
commit 639bdc6bdd

View File

@ -58,10 +58,10 @@ class ShareRbacRulesTests(rbac_base.ShareRbacBaseTests, metaclass=abc.ABCMeta):
access['access_level'] = access_level
return access
def allow_access(self, client, share_id, access_type, access_to,
access_level='rw', metadata=None, status='active',
cleanup=True):
def allow_access(self, client, share_id, access_level='rw', metadata=None,
status='active', cleanup=True):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
kwargs = {
'access_type': access_type,
'access_to': access_to,
@ -127,35 +127,27 @@ class TestProjectAdminTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
@decorators.idempotent_id('5b6897d1-4b2a-490c-990e-941ea4893f47')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
def test_get_access(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
access = self.allow_access(
self.share_member_client, self.share['id'],
access_type=access_type, access_to=access_to)
self.share_member_client, self.share['id'])
self.do_request(
'get_access_rule', expected_status=200, access_id=access['id'])
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to)
self.alt_project_share_v2_client, self.alt_share['id'])
self.do_request(
'get_access_rule', expected_status=200, access_id=alt_access['id'])
@decorators.idempotent_id('f8e9a2bb-ccff-4fc5-8d61-2930f87406cd')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
def test_list_access(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
access = self.allow_access(
self.share_member_client, self.share['id'],
access_type=access_type, access_to=access_to)
self.share_member_client, self.share['id'])
access_list = self.do_request(
'list_access_rules', expected_status=200,
share_id=self.share['id'])['access_list'][0]['id']
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to)
self.alt_project_share_v2_client, self.alt_share['id'])
alt_access_list = self.do_request(
'list_access_rules', expected_status=200,
share_id=self.share['id'])['access_list'][0]['id']
@ -180,6 +172,8 @@ class TestProjectAdminTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
self.addCleanup(
self.client.delete_access_rule, self.share['id'], access['id'])
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
alt_access = self.do_request(
'create_access_rule', expected_status=200,
**self.access(
@ -197,12 +191,8 @@ class TestProjectAdminTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
@decorators.idempotent_id('e24d7018-cb49-4306-9947-716b4e4250c5')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
def test_delete_access(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
access = self.allow_access(
self.share_member_client, self.share['id'],
access_type=access_type,
access_to=access_to, cleanup=False)
self.share_member_client, self.share['id'], cleanup=False)
self.do_request(
'delete_access_rule', expected_status=202,
share_id=self.share['id'], rule_id=access['id'])
@ -211,7 +201,6 @@ class TestProjectAdminTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to,
cleanup=False)
self.do_request(
'delete_access_rule', expected_status=202,
@ -222,18 +211,14 @@ class TestProjectAdminTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
@decorators.idempotent_id('ffc07445-d0d1-4bf9-9fbc-4f409d48bccd')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
def test_update_access_rule_metadata(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
access = self.allow_access(
self.share_member_client, self.share['id'],
access_type=access_type, access_to=access_to)
self.share_member_client, self.share['id'])
self.do_request(
'update_access_metadata', expected_status=200,
access_id=access['id'], metadata=self.metadata)
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to)
self.alt_project_share_v2_client, self.alt_share['id'])
self.do_request(
'update_access_metadata', expected_status=200,
access_id=alt_access['id'], metadata=self.metadata)
@ -241,19 +226,14 @@ class TestProjectAdminTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
@decorators.idempotent_id('fd580d91-1d8d-4dd0-8484-01c412ddb768')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
def test_delete_access_rule_metadata(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
access = self.allow_access(
self.share_member_client, self.share['id'],
access_type=access_type, access_to=access_to,
metadata=self.metadata)
self.share_member_client, self.share['id'], metadata=self.metadata)
self.do_request(
'delete_access_metadata', expected_status=200,
access_id=access['id'], key='key')
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to,
metadata=self.metadata)
self.do_request(
'delete_access_metadata', expected_status=200,
@ -276,18 +256,13 @@ class TestProjectMemberTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
@decorators.idempotent_id('de643909-88a2-470b-8a14-0417696ec451')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
def test_get_access(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
share_client = getattr(self, 'share_member_client', self.client)
access = self.allow_access(
share_client, self.share['id'], access_type=access_type,
access_to=access_to)
access = self.allow_access(share_client, self.share['id'])
self.do_request(
'get_access_rule', expected_status=200, access_id=access['id'])
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to)
self.alt_project_share_v2_client, self.alt_share['id'])
self.do_request(
'get_access_rule', expected_status=lib_exc.NotFound,
access_id=alt_access['id'])
@ -295,15 +270,10 @@ class TestProjectMemberTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
@decorators.idempotent_id('7c6c4262-5095-4cd7-9d9c-8064009a9055')
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
def test_list_access(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
share_client = getattr(self, 'share_member_client', self.client)
access = self.allow_access(
share_client, self.share['id'], access_type=access_type,
access_to=access_to)
access = self.allow_access(share_client, self.share['id'])
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to)
self.alt_project_share_v2_client, self.alt_share['id'])
access_list = self.do_request(
'list_access_rules', expected_status=200,
@ -333,6 +303,8 @@ class TestProjectMemberTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
self.addCleanup(
self.client.delete_access_rule, self.share['id'], access['id'])
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
self.do_request(
'create_access_rule', client=share_client,
expected_status=lib_exc.NotFound,
@ -341,12 +313,9 @@ class TestProjectMemberTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
@decorators.idempotent_id('8665d1b1-de4c-42d4-93ff-8dc6d2b73a2d')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
def test_delete_access(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
share_client = getattr(self, 'share_member_client', self.client)
access = self.allow_access(
share_client, self.share['id'], access_type=access_type,
access_to=access_to, cleanup=False)
share_client, self.share['id'], cleanup=False)
self.do_request(
'delete_access_rule', expected_status=202,
share_id=self.share['id'], rule_id=access['id'])
@ -354,8 +323,7 @@ class TestProjectMemberTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
rule_id=access['id'], share_id=self.share['id'])
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to)
self.alt_project_share_v2_client, self.alt_share['id'])
self.do_request(
'delete_access_rule', expected_status=lib_exc.NotFound,
share_id=self.alt_share['id'], rule_id=alt_access['id'])
@ -363,19 +331,14 @@ class TestProjectMemberTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
@decorators.idempotent_id('c5e84362-6075-425b-bfa3-898abfd9d5a0')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
def test_update_access_rule_metadata(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
share_client = getattr(self, 'share_member_client', self.client)
access = self.allow_access(
share_client, self.share['id'], access_type=access_type,
access_to=access_to)
access = self.allow_access(share_client, self.share['id'])
self.do_request(
'update_access_metadata', expected_status=200,
access_id=access['id'], metadata=self.metadata)
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to)
self.alt_project_share_v2_client, self.alt_share['id'])
self.do_request(
'update_access_metadata', expected_status=lib_exc.NotFound,
access_id=alt_access['id'], metadata=self.metadata)
@ -383,19 +346,15 @@ class TestProjectMemberTestsNFS(ShareRbacRulesTests, base.BaseSharesTest):
@decorators.idempotent_id('abb17315-6510-4b6e-ae6c-dd99a6088954')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
def test_delete_access_rule_metadata(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
share_client = getattr(self, 'share_member_client', self.client)
access = self.allow_access(
share_client, self.share['id'], access_type=access_type,
access_to=access_to, metadata=self.metadata)
share_client, self.share['id'], metadata=self.metadata)
self.do_request(
'delete_access_metadata', expected_status=200,
access_id=access['id'], key='key')
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to,
metadata=self.metadata)
self.do_request(
'delete_access_metadata', expected_status=lib_exc.NotFound,
@ -441,6 +400,8 @@ class TestProjectReaderTestsNFS(TestProjectMemberTestsNFS):
'create_access_rule', expected_status=lib_exc.Forbidden,
**self.access(self.share['id'], access_type, access_to))
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
self.do_request(
'create_access_rule', expected_status=lib_exc.Forbidden,
**self.access(self.alt_share['id'], access_type, access_to))
@ -448,18 +409,13 @@ class TestProjectReaderTestsNFS(TestProjectMemberTestsNFS):
@decorators.idempotent_id('7a702c74-8d31-49e3-859a-cc8a78d7915e')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
def test_delete_access(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
access = self.allow_access(
self.share_member_client, self.share['id'],
access_type=access_type, access_to=access_to)
access = self.allow_access(self.share_member_client, self.share['id'])
self.do_request(
'delete_access_rule', expected_status=lib_exc.Forbidden,
share_id=self.share['id'], rule_id=access['id'])
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to)
self.alt_project_share_v2_client, self.alt_share['id'])
self.do_request(
'delete_access_rule', expected_status=lib_exc.Forbidden,
share_id=self.alt_share['id'], rule_id=alt_access['id'])
@ -467,18 +423,13 @@ class TestProjectReaderTestsNFS(TestProjectMemberTestsNFS):
@decorators.idempotent_id('a61d7f06-6f0e-4da3-b11d-1c3a0b5bd416')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
def test_update_access_rule_metadata(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
access = self.allow_access(
self.share_member_client, self.share['id'],
access_type=access_type, access_to=access_to)
access = self.allow_access(self.share_member_client, self.share['id'])
self.do_request(
'update_access_metadata', expected_status=lib_exc.Forbidden,
access_id=access['id'], metadata=self.metadata)
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to)
self.alt_project_share_v2_client, self.alt_share['id'])
self.do_request(
'update_access_metadata', expected_status=lib_exc.Forbidden,
access_id=alt_access['id'], metadata=self.metadata)
@ -486,19 +437,14 @@ class TestProjectReaderTestsNFS(TestProjectMemberTestsNFS):
@decorators.idempotent_id('5faf0e0b-b246-4392-901d-9e7d628f0d6e')
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
def test_delete_access_rule_metadata(self):
access_type, access_to = (
utils.get_access_rule_data_from_config(self.protocol))
access = self.allow_access(
self.share_member_client, self.share['id'],
access_type=access_type, access_to=access_to,
metadata=self.metadata)
self.share_member_client, self.share['id'], metadata=self.metadata)
self.do_request(
'delete_access_metadata', expected_status=lib_exc.Forbidden,
access_id=access['id'], key='key')
alt_access = self.allow_access(
self.alt_project_share_v2_client, self.alt_share['id'],
access_type=access_type, access_to=access_to,
metadata=self.metadata)
self.do_request(
'delete_access_metadata', expected_status=lib_exc.Forbidden,