Coverage for tests/publisher/snaps/tests_post_release.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
1import responses
2from tests.publisher.endpoint_testing import BaseTestCases
5class PostReleasePageNotAuth(BaseTestCases.EndpointLoggedOut):
6 def setUp(self):
7 snap_name = "test-snap"
8 endpoint_url = "/{}/releases".format(snap_name)
10 super().setUp(
11 snap_name=snap_name,
12 endpoint_url=endpoint_url,
13 method_endpoint="POST",
14 )
17class PostDataReleasePage(BaseTestCases.EndpointLoggedIn):
18 def setUp(self):
19 snap_name = "test-snap"
20 endpoint_url = "/{}/releases".format(snap_name)
21 api_url = "https://dashboard.snapcraft.io/dev/api/snap-release/"
23 super().setUp(
24 snap_name=snap_name,
25 api_url=api_url,
26 endpoint_url=endpoint_url,
27 method_api="POST",
28 method_endpoint="POST",
29 json={"json": "josn"},
30 )
32 @responses.activate
33 def test_page_not_found(self):
34 payload = {"error_list": []}
35 responses.add(responses.POST, self.api_url, json=payload, status=404)
37 response = self.client.post(
38 self.endpoint_url,
39 json={
40 "name": self.snap_name,
41 "revision": "1",
42 "channels": ["stable"],
43 },
44 )
46 self.assertEqual(1, len(responses.calls))
47 called = responses.calls[0]
48 self.assertEqual(self.api_url, called.request.url)
49 self.assertEqual(
50 self.authorization, called.request.headers.get("Authorization")
51 )
53 assert response.status_code == 404
54 self.assert_template_used("404.html")
56 @responses.activate
57 def test_post_no_data(self):
58 response = self.client.post(self.endpoint_url, json={})
60 assert response.status_code == 400
61 assert response.get_json() == {"errors": ["No changes were submitted"]}
63 @responses.activate
64 def test_post_data(self):
65 payload = {
66 "success": True,
67 "channel_map": [
68 {
69 "info": "specific",
70 "version": "2.7",
71 "channel": "stable",
72 "revision": 1,
73 },
74 {"info": "none", "channel": "candidate"},
75 {"info": "tracking", "channel": "beta"},
76 {"info": "tracking", "channel": "edge"},
77 ],
78 "opened_channels": ["candidate"],
79 }
81 responses.add(responses.POST, self.api_url, json=payload, status=200)
83 response = self.client.post(
84 self.endpoint_url,
85 json={
86 "name": self.snap_name,
87 "revision": "1",
88 "channels": ["stable"],
89 },
90 )
92 self.assertEqual(1, len(responses.calls))
93 called = responses.calls[0]
94 self.assertEqual(self.api_url, called.request.url)
95 self.assertEqual(
96 self.authorization, called.request.headers.get("Authorization")
97 )
99 assert response.json == payload
101 @responses.activate
102 def test_return_error(self):
103 payload = {"success": False, "errors": [{"name": ["message"]}]}
105 responses.add(responses.POST, self.api_url, json=payload, status=400)
107 response = self.client.post(
108 self.endpoint_url,
109 json={
110 "name": self.snap_name,
111 "revision": "1",
112 "channels": ["stable"],
113 },
114 )
116 assert response.json == payload