Coverage for tests/publisher/snaps/tests_post_default_track.py: 100%
79 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 responses
2from tests.publisher.endpoint_testing import BaseTestCases
5class PostDefaultTrackNotAuth(BaseTestCases.EndpointLoggedOut):
6 def setUp(self):
7 snap_name = "test-snap"
8 endpoint_url = "/{}/releases/default-track".format(snap_name)
10 super().setUp(
11 snap_name=snap_name,
12 endpoint_url=endpoint_url,
13 method_endpoint="POST",
14 )
17class PostDefaultTrackGetSnapId(BaseTestCases.EndpointLoggedIn):
18 def setUp(self):
19 snap_name = "test-snap"
20 endpoint_url = "/{}/releases/default-track".format(snap_name)
21 json = {"default-track": "test"}
23 api_url = "https://dashboard.snapcraft.io/dev/api/snaps/info/{}"
24 api_url = api_url.format(snap_name)
26 super().setUp(
27 snap_name=snap_name,
28 api_url=api_url,
29 endpoint_url=endpoint_url,
30 method_api="GET",
31 method_endpoint="POST",
32 json=json,
33 )
35 @responses.activate
36 def test_page_not_found(self):
37 payload = {"error_list": []}
38 responses.add(responses.GET, self.api_url, json=payload, status=404)
40 response = self.client.post(self.endpoint_url, json=self.json)
41 self.check_call_by_api_url(responses.calls)
43 assert response.status_code == 404
44 self.assert_template_used("404.html")
46 @responses.activate
47 def test_error_4xx(self):
48 payload = {"error_list": []}
49 responses.add(responses.GET, self.api_url, json=payload, status=400)
51 response = self.client.post(self.endpoint_url, json=self.json)
52 self.check_call_by_api_url(responses.calls)
54 assert response.status_code == 400
55 assert response.get_json() == []
58class PostDefaultTrack(BaseTestCases.EndpointLoggedIn):
59 def setUp(self):
60 snap_name = "test-snap"
61 snap_id = "test_id"
62 endpoint_url = "/{}/releases/default-track".format(snap_name)
63 api_url = (
64 "https://dashboard.snapcraft.io/dev/api/"
65 "snaps/{}/metadata?conflict_on_update=true"
66 ).format(snap_id)
68 json = {"default-track": "test"}
70 api_info_url = "https://dashboard.snapcraft.io/dev/api/snaps/info/{}"
71 api_info_url = api_info_url.format(snap_name)
72 responses.add(
73 method=responses.GET,
74 url=api_info_url,
75 json={"snap_id": snap_id},
76 status=200,
77 )
79 super().setUp(
80 snap_name=snap_name,
81 api_url=api_url,
82 endpoint_url=endpoint_url,
83 method_api="PUT",
84 method_endpoint="POST",
85 json=json,
86 )
88 @responses.activate
89 def test_page_not_found(self):
90 payload = {"error_list": []}
91 responses.add(responses.PUT, self.api_url, json=payload, status=404)
93 response = self.client.post(self.endpoint_url, json=self.json)
94 self.check_call_by_api_url(responses.calls)
96 assert response.status_code == 404
97 self.assert_template_used("404.html")
99 def test_post_no_data(self):
100 response = self.client.post(self.endpoint_url, json={})
102 assert response.status_code == 400
103 assert response.get_json() == {}
105 @responses.activate
106 def test_post_data(self):
107 payload = {}
109 responses.add(responses.PUT, self.api_url, json=payload, status=200)
111 response = self.client.post(self.endpoint_url, json=self.json)
112 self.check_call_by_api_url(responses.calls)
114 result = {"success": True}
115 self.assertEqual(response.json, result)
117 @responses.activate
118 def test_return_error(self):
119 payload = {"error_list": [{"code": "code", "name": ["message"]}]}
121 responses.add(responses.PUT, self.api_url, json=payload, status=400)
123 response = self.client.post(self.endpoint_url, json=self.json)
124 self.check_call_by_api_url(responses.calls)
126 expected_response = {
127 "errors": [{"code": "code", "name": ["message"]}],
128 "success": False,
129 }
130 self.assertEqual(response.json, expected_response)
132 @responses.activate
133 def test_error_4xx(self):
134 payload = {"error_list": []}
135 responses.add(responses.PUT, self.api_url, json=payload, status=400)
137 response = self.client.post(self.endpoint_url, json=self.json)
138 self.check_call_by_api_url(responses.calls)
140 expected_response = {"errors": [], "success": False}
141 assert response.status_code == 400
142 assert response.get_json() == expected_response