Fix response data for API access-allow

API access-allow returns following redundant data:
- deleted
- deleted_at
- instance_mappings

So, remove them for create share api method and cover it with
unit and tempest tests.

Change-Id: I103380c3f0008d4879b39f339187e57eeec40456
Closes-Bug: #1499733
(cherry picked from commit beb9191c69)
This commit is contained in:
Valeriy Ponomaryov 2015-09-30 12:07:50 +03:00
parent c4fdacf634
commit 4d9f87d6cc
3 changed files with 52 additions and 11 deletions

View File

@ -792,7 +792,14 @@ class API(base.Base):
for share_instance in share.instances:
self.allow_access_to_instance(ctx, share_instance, access)
return access
return {
'id': access['id'],
'share_id': access['share_id'],
'access_type': access['access_type'],
'access_to': access['access_to'],
'access_level': access['access_level'],
'state': access['state'],
}
def allow_access_to_instance(self, context, share_instance, access):
policy.check_policy(context, 'share', 'allow_access')

View File

@ -1242,18 +1242,32 @@ class ShareAPITestCase(test.TestCase):
share = db_utils.create_share(status=constants.STATUS_AVAILABLE)
values = {
'share_id': share['id'],
'access_type': 'fakeacctype',
'access_to': 'fakeaccto',
'access_type': 'fake_access_type',
'access_to': 'fake_access_to',
'access_level': level,
}
fake_access_expected = copy.deepcopy(values)
fake_access_expected.update({
'id': 'fake_access_id',
'state': 'fake_state',
})
fake_access = copy.deepcopy(fake_access_expected)
fake_access.update({
'deleted': 'fake_deleted',
'deleted_at': 'fake_deleted_at',
'instance_mappings': ['foo', 'bar'],
})
self.mock_object(db_api, 'share_access_create',
mock.Mock(return_value='fakeacc'))
access = self.api.allow_access(self.context, share,
'fakeacctype', 'fakeaccto',
level)
self.assertEqual(access, 'fakeacc')
mock.Mock(return_value=fake_access))
access = self.api.allow_access(
self.context, share, fake_access['access_type'],
fake_access['access_to'], level)
self.assertEqual(fake_access_expected, access)
self.share_rpcapi.allow_access.assert_called_once_with(
self.context, utils.IsAMatcher(models.ShareInstance), 'fakeacc')
self.context, utils.IsAMatcher(models.ShareInstance),
fake_access)
db_api.share_access_create.assert_called_once_with(
self.context, values)
share_api.policy.check_policy.assert_called_with(

View File

@ -30,7 +30,10 @@ def _create_delete_ro_access_rule(self):
"""
rule = self.shares_client.create_access_rule(
self.share["id"], self.access_type, self.access_to, 'ro')
self.assertEqual('ro', rule['access_level'])
for key in ('deleted', 'deleted_at', 'instance_mappings'):
self.assertNotIn(key, rule.keys())
self.shares_client.wait_for_access_rule_status(
self.share["id"], rule["id"], "active")
self.shares_client.delete_access_rule(self.share["id"], rule["id"])
@ -61,7 +64,10 @@ class ShareIpRulesForNFSTest(base.BaseSharesTest):
# create rule
rule = self.shares_client.create_access_rule(
self.share["id"], self.access_type, access_to)
self.assertEqual('rw', rule['access_level'])
for key in ('deleted', 'deleted_at', 'instance_mappings'):
self.assertNotIn(key, rule.keys())
self.shares_client.wait_for_access_rule_status(
self.share["id"], rule["id"], "active")
@ -79,6 +85,9 @@ class ShareIpRulesForNFSTest(base.BaseSharesTest):
# create rule
rule = self.shares_client.create_access_rule(
self.share["id"], self.access_type, access_to)
for key in ('deleted', 'deleted_at', 'instance_mappings'):
self.assertNotIn(key, rule.keys())
self.assertEqual('rw', rule['access_level'])
self.shares_client.wait_for_access_rule_status(
self.share["id"], rule["id"], "active")
@ -128,7 +137,10 @@ class ShareUserRulesForNFSTest(base.BaseSharesTest):
# create rule
rule = self.shares_client.create_access_rule(
self.share["id"], self.access_type, self.access_to)
self.assertEqual('rw', rule['access_level'])
for key in ('deleted', 'deleted_at', 'instance_mappings'):
self.assertNotIn(key, rule.keys())
self.shares_client.wait_for_access_rule_status(
self.share["id"], rule["id"], "active")
@ -179,7 +191,10 @@ class ShareCertRulesForGLUSTERFSTest(base.BaseSharesTest):
# create rule
rule = self.shares_client.create_access_rule(
self.share["id"], self.access_type, self.access_to)
self.assertEqual('rw', rule['access_level'])
for key in ('deleted', 'deleted_at', 'instance_mappings'):
self.assertNotIn(key, rule.keys())
self.shares_client.wait_for_access_rule_status(
self.share["id"], rule["id"], "active")
@ -193,7 +208,10 @@ class ShareCertRulesForGLUSTERFSTest(base.BaseSharesTest):
def test_create_delete_cert_ro_access_rule(self):
rule = self.shares_client.create_access_rule(
self.share["id"], 'cert', 'client2.com', 'ro')
self.assertEqual('ro', rule['access_level'])
for key in ('deleted', 'deleted_at', 'instance_mappings'):
self.assertNotIn(key, rule.keys())
self.shares_client.wait_for_access_rule_status(
self.share["id"], rule["id"], "active")
self.shares_client.delete_access_rule(self.share["id"], rule["id"])
@ -249,8 +267,10 @@ class ShareRulesTest(base.BaseSharesTest):
rules = self.shares_client.list_access_rules(self.share["id"])
# verify keys
keys = ["state", "id", "access_type", "access_to", "access_level"]
[self.assertIn(key, r.keys()) for r in rules for key in keys]
for key in ("state", "id", "access_type", "access_to", "access_level"):
[self.assertIn(key, r.keys()) for r in rules]
for key in ('deleted', 'deleted_at', 'instance_mappings'):
[self.assertNotIn(key, r.keys()) for r in rules]
# verify values
self.assertEqual("active", rules[0]["state"])