Coverage for manila/tests/api/views/test_share_accesses.py: 100%

48 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2026-02-18 22:19 +0000

1# Copyright (c) 2016 Red Hat, Inc. 

2# All Rights Reserved. 

3# 

4# Licensed under the Apache License, Version 2.0 (the "License"); you may 

5# not use this file except in compliance with the License. You may obtain 

6# a copy of the License at 

7# 

8# http://www.apache.org/licenses/LICENSE-2.0 

9# 

10# Unless required by applicable law or agreed to in writing, software 

11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 

12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 

13# License for the specific language governing permissions and limitations 

14# under the License. 

15 

16from unittest import mock 

17 

18import ddt 

19 

20from manila.api.openstack import api_version_request as api_version 

21from manila.api.views import share_accesses 

22from manila.share import api 

23from manila import test 

24from manila.tests.api import fakes 

25 

26 

27@ddt.ddt 

28class ViewBuilderTestCase(test.TestCase): 

29 

30 def setUp(self): 

31 super(ViewBuilderTestCase, self).setUp() 

32 self.builder = share_accesses.ViewBuilder() 

33 self.fake_access = { 

34 'id': 'fakeaccessid', 

35 'share_id': 'fakeshareid', 

36 'access_level': 'fakeaccesslevel', 

37 'access_to': 'fakeacccessto', 

38 'access_type': 'fakeaccesstype', 

39 'state': 'fakeaccessstate', 

40 'access_key': 'fakeaccesskey', 

41 'created_at': 'fakecreated_at', 

42 'updated_at': 'fakeupdated_at', 

43 'metadata': {}, 

44 } 

45 self.fake_share = { 

46 'access_rules_status': self.fake_access['state'], 

47 } 

48 

49 def test_collection_name(self): 

50 self.assertEqual('share_accesses', self.builder._collection_name) 

51 

52 @ddt.data("2.20", "2.21", "2.33", "2.45") 

53 def test_view(self, version): 

54 req = fakes.HTTPRequest.blank('/shares', version=version) 

55 self.mock_object(api.API, 'get', 

56 mock.Mock(return_value=self.fake_share)) 

57 

58 result = self.builder.view(req, self.fake_access) 

59 self._delete_unsupport_key(version, True) 

60 

61 self.assertEqual({'access': self.fake_access}, result) 

62 

63 @ddt.data("2.20", "2.21", "2.33", "2.45") 

64 def test_summary_view(self, version): 

65 req = fakes.HTTPRequest.blank('/shares', version=version) 

66 self.mock_object(api.API, 'get', 

67 mock.Mock(return_value=self.fake_share)) 

68 

69 result = self.builder.summary_view(req, self.fake_access) 

70 self._delete_unsupport_key(version) 

71 

72 self.assertEqual({'access': self.fake_access}, result) 

73 

74 @ddt.data("2.20", "2.21", "2.33", "2.45") 

75 def test_list_view(self, version): 

76 req = fakes.HTTPRequest.blank('/shares', version=version) 

77 self.mock_object(api.API, 'get', 

78 mock.Mock(return_value=self.fake_share)) 

79 accesses = [self.fake_access, ] 

80 

81 result = self.builder.list_view(req, accesses) 

82 self._delete_unsupport_key(version) 

83 

84 self.assertEqual({'access_list': accesses}, result) 

85 

86 def _delete_unsupport_key(self, version, support_share_id=False): 

87 if (api_version.APIVersionRequest(version) < 

88 api_version.APIVersionRequest("2.21")): 

89 del self.fake_access['access_key'] 

90 

91 if (api_version.APIVersionRequest(version) < 

92 api_version.APIVersionRequest("2.33")): 

93 del self.fake_access['created_at'] 

94 del self.fake_access['updated_at'] 

95 if (api_version.APIVersionRequest(version) < 

96 api_version.APIVersionRequest("2.45")): 

97 del self.fake_access['metadata'] 

98 if not support_share_id: 

99 del self.fake_access['share_id']