Coverage for tests/admin/tests_policies.py : 100%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from unittest.mock import Mock, patch
2from canonicalwebteam.store_api.exceptions import StoreApiResponseErrorList
4from tests.admin.tests_models import TestModelServiceEndpoints
7class TestGetPolicies(TestModelServiceEndpoints):
8 @patch("webapp.admin.views.admin_api.get_store_model_policies")
9 def test_get_policies(self, mock_get_store_model_policies):
10 mock_get_store_model_policies.return_value = ["policy1", "policy2"]
12 response = self.client.get("/admin/store/1/models/Model1/policies")
13 data = response.json
15 self.assertEqual(response.status_code, 200)
16 self.assertTrue(data["success"])
17 self.assertEqual(data["data"], ["policy1", "policy2"])
19 @patch("webapp.admin.views.admin_api.get_store_model_policies")
20 def test_failed_get_policies(self, mock_get_store_model_policies):
21 mock_get_store_model_policies.side_effect = StoreApiResponseErrorList(
22 "An error occurred", 500, [{"message": "An error occurred"}]
23 )
25 response = self.client.get("/admin/store/1/models/Model1/policies")
26 data = response.json
28 self.assertEqual(response.status_code, 500)
29 self.assertFalse(data["success"])
30 self.assertEqual(data["message"], "An error occurred")
33class TestCreatePolicies(TestModelServiceEndpoints):
34 @patch("webapp.admin.views.admin_api.get_store_signing_keys")
35 @patch("webapp.admin.views.admin_api.create_store_model_policy")
36 def test_create_policy(
37 self, mock_create_store_model_policy, mock_get_store_signing_keys
38 ):
39 mock_get_store_signing_keys.return_value = [
40 {"sha3-384": "valid_signing_key"}
41 ]
42 mock_create_store_model_policy.return_value = None
44 payload = {"signing_key": "valid_signing_key"}
45 response = self.client.post(
46 "/admin/store/1/models/Model1/policies", data=payload
47 )
48 data = response.json
50 self.assertEqual(response.status_code, 200)
51 self.assertTrue(data["success"])
53 @patch("webapp.admin.views.admin_api.get_store_signing_keys")
54 def test_missing_signing_key(self, mock_get_store_signing_keys):
55 mock_get_store_signing_keys.return_value = [
56 {"sha3-384": "valid_signing_key"}
57 ]
59 payload = {}
60 response = self.client.post(
61 "/admin/store/1/models/Model1/policies", data=payload
62 )
63 data = response.json
65 self.assertEqual(response.status_code, 500)
66 self.assertFalse(data["success"])
67 self.assertEqual(data["message"], "Signing key required")
69 @patch("webapp.admin.views.admin_api.get_store_signing_keys")
70 def test_invalid_signing_key(self, mock_get_store_signing_keys):
71 mock_get_store_signing_keys.return_value = [{"sha3-384": "valid_key"}]
73 payload = {"signing_key": "invalid_key"}
74 response = self.client.post(
75 "/admin/store/1/models/Model1/policies", data=payload
76 )
77 data = response.json
79 self.assertEqual(response.status_code, 500)
80 self.assertFalse(data["success"])
81 self.assertEqual(data["message"], "Invalid signing key")
83 @patch("webapp.admin.views.admin_api.get_store_signing_keys")
84 @patch("webapp.admin.views.admin_api.create_store_model_policy")
85 def test_exception_in_create_policy(
86 self,
87 mock_create_store_model_policy,
88 mock_get_store_signing_keys,
89 ):
90 mock_get_store_signing_keys.return_value = [{"sha3-384": "valid_key"}]
91 mock_create_store_model_policy.side_effect = StoreApiResponseErrorList(
92 "Simulated failure", 500, [{"message": "An error occurred"}]
93 )
95 payload = {"signing_key": "valid_key"}
96 response = self.client.post(
97 "/admin/store/1/models/Model1/policies", data=payload
98 )
99 data = response.json
101 self.assertEqual(response.status_code, 500)
102 self.assertFalse(data["success"])
103 self.assertEqual(data["message"], "An error occurred")
106class TestDeletePolicies(TestModelServiceEndpoints):
107 @patch("webapp.admin.views.admin_api.delete_store_model_policy")
108 def test_successful_delete_policy(self, mock_delete_store_model_policy):
109 mock_delete_store_model_policy.return_value = Mock(status_code=204)
111 response = self.client.delete(
112 "/admin/store/1/models/Model1/policies/1"
113 )
114 data = response.json
116 self.assertEqual(response.status_code, 200)
117 self.assertTrue(data["success"])
119 @patch("webapp.admin.views.admin_api.delete_store_model_policy")
120 def test_policy_not_found(self, mock_delete_store_model_policy):
121 mock_delete_store_model_policy.return_value = Mock(status_code=404)
123 response = self.client.delete(
124 "/admin/store/1/models/Model1/policies/1"
125 )
126 data = response.json
128 self.assertEqual(response.status_code, 500)
129 self.assertFalse(data["success"])
130 self.assertEqual(data["message"], "Policy not found")
132 @patch("webapp.admin.views.admin_api.delete_store_model_policy")
133 def test_exception_in_delete_policy(self, mock_delete_store_model_policy):
134 mock_delete_store_model_policy.side_effect = StoreApiResponseErrorList(
135 "An error occured", 500, [{"message": "An error occurred"}]
136 )
138 response = self.client.delete(
139 "/admin/store/1/models/Model1/policies/1"
140 )
141 data = response.json
143 self.assertEqual(response.status_code, 500)
144 self.assertFalse(data["success"])
145 self.assertEqual(data["message"], "An error occurred")