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
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-28 22:05 +0000
1import unittest
2from unittest.mock import patch
4from webapp.publisher.cve.cve_helper import CveHelper
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"}
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 }
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 )
29 self.assertTrue(result)
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 }
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 )
51 self.assertTrue(result)
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 }
64 snap_publisher_info = {"id": "canonical", "username": "canonical"}
65 snap_details = {
66 "store": "Global",
67 "publisher": snap_publisher_info,
68 }
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 )
77 self.assertTrue(result)
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 }
89 account_details = {
90 "username": "user",
91 "stores": ["Global"],
92 "snaps": {"16": {"test-snap": {}}},
93 }
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 )
103 self.assertTrue(result)
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"}
117 snap_info = {
118 "store": "Global",
119 "publisher": snap_publisher_info,
120 }
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 )
129 self.assertFalse(result)
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 ):
136 mock_get_stores.return_value = []
138 account_info = {
139 "username": "user",
140 "stores": ["some-store"],
141 "snaps": {"16": {}},
142 }
144 snap_publisher_info = {"id": "some-publisher", "username": "publisher"}
145 snap_info = {
146 "store": "some-store",
147 "publisher": snap_publisher_info,
148 }
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 )
157 self.assertFalse(result)