Coverage for tests/publisher/tests_api_snaps.py: 100%
65 statements
« prev ^ index » next coverage.py v7.10.2, created at 2025-08-05 22:06 +0000
« prev ^ index » next coverage.py v7.10.2, created at 2025-08-05 22:06 +0000
1from flask import json
2import responses
3from tests.publisher.endpoint_testing import BaseTestCases
5# Make sure tests fail on stray responses.
6responses.mock.assert_all_requests_are_fired = True
9class AccountSnapsNotAuth(BaseTestCases.EndpointLoggedOut):
10 def setUp(self):
11 endpoint_url = "/snaps/api/snap-count"
13 super().setUp(snap_name=None, endpoint_url=endpoint_url)
16class AccountSnapsPage(BaseTestCases.EndpointLoggedInErrorHandling):
17 def setUp(self):
18 api_url = "https://dashboard.snapcraft.io/dev/api/account"
19 endpoint_url = "/snaps/api/snap-count"
21 super().setUp(
22 snap_name=None,
23 endpoint_url=endpoint_url,
24 method_endpoint="GET",
25 api_url=api_url,
26 method_api="GET",
27 )
29 @responses.activate
30 def test_no_snaps(self):
31 payload = {"snaps": {"16": {}}}
32 responses.add(responses.GET, self.api_url, json=payload, status=200)
34 response = self.client.get("/snaps/api/snap-count")
35 self.assertEqual(200, response.status_code)
36 # Add pyQuery basic context checks
38 self.assertEqual(1, len(responses.calls))
39 called = responses.calls[0]
40 self.assertEqual(self.api_url, called.request.url)
41 self.assertEqual(
42 self.authorization, called.request.headers.get("Authorization")
43 )
45 assert response.status_code == 200
46 data = json.loads(response.get_data())
47 assert data["count"] == 0
49 @responses.activate
50 def test_uploaded_snaps(self):
51 payload = {
52 "snaps": {
53 "16": {
54 "test": {
55 "status": "Approved",
56 "snap-name": "test",
57 "latest_revisions": [
58 {
59 "test": "test",
60 "since": "2018-01-01T00:00:00Z",
61 "channels": [],
62 }
63 ],
64 }
65 }
66 }
67 }
68 responses.add(responses.GET, self.api_url, json=payload, status=200)
70 response = self.client.get("/snaps/api/snap-count")
71 self.assertEqual(200, response.status_code)
72 # Add pyQuery basic context checks
74 self.assertEqual(1, len(responses.calls))
75 called = responses.calls[0]
76 self.assertEqual(self.api_url, called.request.url)
77 self.assertEqual(
78 self.authorization, called.request.headers.get("Authorization")
79 )
81 assert response.status_code == 200
82 data = json.loads(response.get_data())
83 assert data["count"] == 1
85 @responses.activate
86 def test_uploaded_snaps_registered_snaps(self):
87 payload = {
88 "snaps": {
89 "16": {
90 "test": {
91 "status": "Approved",
92 "snap-name": "test",
93 "latest_revisions": [
94 {
95 "test": "test",
96 "since": "2018-01-01T00:00:00Z",
97 "channels": [],
98 }
99 ],
100 },
101 "test2": {
102 "status": "Approved",
103 "snap-name": "test2",
104 "latest_revisions": [],
105 },
106 }
107 }
108 }
109 responses.add(responses.GET, self.api_url, json=payload, status=200)
111 response = self.client.get("/snaps/api/snap-count")
112 self.assertEqual(200, response.status_code)
113 # Add pyQuery basic context checks
115 self.assertEqual(1, len(responses.calls))
116 called = responses.calls[0]
117 self.assertEqual(self.api_url, called.request.url)
118 self.assertEqual(
119 self.authorization, called.request.headers.get("Authorization")
120 )
122 assert response.status_code == 200
123 data = json.loads(response.get_data())
124 assert data["count"] == 1
126 @responses.activate
127 def test_revoked_snaps(self):
128 payload = {
129 "snaps": {
130 "16": {
131 "test": {
132 "status": "Approved",
133 "snap-name": "test",
134 "latest_revisions": [
135 {
136 "test": "test",
137 "since": "2018-01-01T00:00:00Z",
138 "channels": [],
139 }
140 ],
141 },
142 "test2": {
143 "status": "Approved",
144 "snap-name": "test2",
145 "latest_revisions": [],
146 },
147 "test3": {
148 "status": "Revoked",
149 "snap-name": "test",
150 "latest_revisions": [
151 {
152 "test": "test",
153 "since": "2018-01-01T00:00:00Z",
154 "channels": [],
155 }
156 ],
157 },
158 "test4": {
159 "status": "Revoked",
160 "snap-name": "test2",
161 "latest_revisions": [],
162 },
163 }
164 }
165 }
166 responses.add(responses.GET, self.api_url, json=payload, status=200)
168 response = self.client.get("/snaps/api/snap-count")
169 self.assertEqual(200, response.status_code)
170 # Add pyQuery basic context checks
172 self.assertEqual(1, len(responses.calls))
173 called = responses.calls[0]
174 self.assertEqual(self.api_url, called.request.url)
175 self.assertEqual(
176 self.authorization, called.request.headers.get("Authorization")
177 )
179 assert response.status_code == 200
180 data = json.loads(response.get_data())
181 assert data["count"] == 1