Coverage for tests/publisher/cve/test_cve_user_access.py: 100%

50 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-28 22:05 +0000

1import unittest 

2from unittest.mock import patch 

3 

4from webapp.publisher.cve.cve_helper import CveHelper 

5 

6 

7class CveUserAccessTest(unittest.TestCase): 

8 @patch("webapp.publisher.cve.cve_helper.logic.get_stores") 

9 def test_can_snap_publisher_access_cve_data(self, mock_get_stores): 

10 snap_publisher_info = {"id": "some-user", "username": "user"} 

11 

12 snap_details = { 

13 "store": "some-store", 

14 "publisher": snap_publisher_info, 

15 } 

16 account_info = { 

17 "username": "user", 

18 "stores": ["some-store"], 

19 "snaps": {"16": {"test-snap": {}}}, 

20 } 

21 

22 result = CveHelper.can_user_access_cve_data( 

23 "test-snap", 

24 snap_details=snap_details, 

25 account_info=account_info, 

26 is_user_canonical=False, 

27 ) 

28 

29 self.assertTrue(result) 

30 

31 @patch("webapp.publisher.cve.cve_helper.logic.get_stores") 

32 def test_can_admin_access_cve_data(self, mock_get_stores): 

33 mock_get_stores.return_value = [{"name": "some-store"}] 

34 account_info = { 

35 "username": "user", 

36 "stores": ["some-store"], 

37 "snaps": {"16": {}}, 

38 } 

39 snap_details = { 

40 "store": "some-store", 

41 "publisher": {"id": "some-publisher", "username": "publisher"}, 

42 } 

43 

44 result = CveHelper.can_user_access_cve_data( 

45 "test-snap", 

46 account_info=account_info, 

47 is_user_canonical=False, 

48 snap_details=snap_details, 

49 ) 

50 

51 self.assertTrue(result) 

52 

53 @patch("webapp.publisher.cve.cve_helper.logic.get_stores") 

54 def test_can_canonical_publisher_access_cve_data_of_global_canonical_snap( 

55 self, mock_get_stores 

56 ): 

57 mock_get_stores.return_value = [] 

58 account_info = { 

59 "username": "user", 

60 "stores": ["Global"], 

61 "snaps": {"16": {"test-snap": {}}}, 

62 } 

63 

64 snap_publisher_info = {"id": "canonical", "username": "canonical"} 

65 snap_details = { 

66 "store": "Global", 

67 "publisher": snap_publisher_info, 

68 } 

69 

70 result = CveHelper.can_user_access_cve_data( 

71 "test-snap", 

72 account_info=account_info, 

73 is_user_canonical=True, 

74 snap_details=snap_details, 

75 ) 

76 

77 self.assertTrue(result) 

78 

79 @patch("webapp.publisher.cve.cve_helper.logic.get_stores") 

80 def test_can_collaborator_access_cve_data_of_global_snap( 

81 self, mock_get_stores 

82 ): 

83 snap_publisher_info = {"id": "some-publisher", "username": "publisher"} 

84 snap_details = { 

85 "store": "Global", 

86 "publisher": snap_publisher_info, 

87 } 

88 

89 account_details = { 

90 "username": "user", 

91 "stores": ["Global"], 

92 "snaps": {"16": {"test-snap": {}}}, 

93 } 

94 

95 mock_get_stores.return_value = [] 

96 result = CveHelper.can_user_access_cve_data( 

97 "test-snap", 

98 account_info=account_details, 

99 is_user_canonical=False, 

100 snap_details=snap_details, 

101 ) 

102 

103 self.assertTrue(result) 

104 

105 @patch("webapp.publisher.cve.cve_helper.logic.get_stores") 

106 def test_non_collab_publisher_user_fail_access_cve_data_of_global_snap( 

107 self, mock_get_stores 

108 ): 

109 mock_get_stores.return_value = [] 

110 account_info = { 

111 "username": "user", 

112 "stores": ["Global"], 

113 "snaps": {"16": {}}, 

114 } 

115 snap_publisher_info = {"id": "some-publisher", "username": "publisher"} 

116 

117 snap_info = { 

118 "store": "Global", 

119 "publisher": snap_publisher_info, 

120 } 

121 

122 result = CveHelper.can_user_access_cve_data( 

123 "test-snap", 

124 account_info=account_info, 

125 is_user_canonical=False, 

126 snap_details=snap_info, 

127 ) 

128 

129 self.assertFalse(result) 

130 

131 @patch("webapp.publisher.cve.cve_helper.logic.get_stores") 

132 def test_non_collab_publisher_user_fail_access_cve_data_of_brand_snap( 

133 self, mock_get_stores 

134 ): 

135 

136 mock_get_stores.return_value = [] 

137 

138 account_info = { 

139 "username": "user", 

140 "stores": ["some-store"], 

141 "snaps": {"16": {}}, 

142 } 

143 

144 snap_publisher_info = {"id": "some-publisher", "username": "publisher"} 

145 snap_info = { 

146 "store": "some-store", 

147 "publisher": snap_publisher_info, 

148 } 

149 

150 result = CveHelper.can_user_access_cve_data( 

151 "test-snap", 

152 account_info=account_info, 

153 is_user_canonical=False, 

154 snap_details=snap_info, 

155 ) 

156 

157 self.assertFalse(result)