Coverage for tests / store / tests_embedded_card.py: 100%
71 statements
« prev ^ index » next coverage.py v7.13.1, created at 2025-12-29 22:06 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2025-12-29 22:06 +0000
1import responses
2from urllib.parse import urlencode
3from webapp.app import create_app
4from flask_testing import TestCase
7class GetEmbeddedCardTest(TestCase):
8 snap_payload = {
9 "snap-id": "id",
10 "name": "snapName",
11 "default-track": None,
12 "snap": {
13 "title": "Snap Title",
14 "summary": "This is a summary",
15 "description": "this is a description",
16 "media": [],
17 "license": "license",
18 "publisher": {
19 "display-name": "Toto",
20 "username": "toto",
21 "validation": True,
22 },
23 "categories": [{"name": "test"}],
24 "trending": False,
25 "unlisted": False,
26 "links": {},
27 },
28 "channel-map": [
29 {
30 "channel": {
31 "architecture": "amd64",
32 "name": "stable",
33 "risk": "stable",
34 "track": "latest",
35 "released-at": "2018-09-18T14:45:28.064633+00:00",
36 },
37 "created-at": "2018-09-18T14:45:28.064633+00:00",
38 "version": "1.0",
39 "confinement": "conf",
40 "download": {"size": 100000},
41 "revision": 1,
42 }
43 ],
44 }
46 def setUp(self):
47 super().setUp()
48 self.snap_name = "toto"
49 self.api_url = "".join(
50 [
51 "https://api.snapcraft.io/v2/",
52 "snaps/info/",
53 self.snap_name,
54 "?",
55 urlencode(
56 {
57 "fields": ",".join(
58 [
59 "title",
60 "summary",
61 "description",
62 "license",
63 "contact",
64 "website",
65 "publisher",
66 "media",
67 "download",
68 "version",
69 "created-at",
70 "confinement",
71 "categories",
72 "trending",
73 "unlisted",
74 "links",
75 "revision",
76 ]
77 )
78 }
79 ),
80 ]
81 )
82 self.endpoint_url = "/" + self.snap_name + "/embedded"
84 def create_app(self):
85 app = create_app(testing=True)
86 app.secret_key = "secret_key"
87 app.config["WTF_CSRF_METHODS"] = []
89 return app
91 @responses.activate
92 def test_api_404(self):
93 payload = {"error-list": []}
94 responses.add(
95 responses.Response(
96 method="GET", url=self.api_url, json=payload, status=404
97 )
98 )
100 response = self.client.get(self.endpoint_url)
102 assert len(responses.calls) == 1
103 called = responses.calls[0]
104 assert called.request.url == self.api_url
106 assert response.status_code == 404
108 @responses.activate
109 def test_api_500(self):
110 payload = {"error-list": []}
111 responses.add(
112 responses.Response(
113 method="GET", url=self.api_url, json=payload, status=500
114 )
115 )
117 response = self.client.get(self.endpoint_url)
119 assert len(responses.calls) == 1
120 called = responses.calls[0]
121 assert called.request.url == self.api_url
123 assert response.status_code == 502
125 @responses.activate
126 def test_api_500_no_answer(self):
127 responses.add(
128 responses.Response(method="GET", url=self.api_url, status=500)
129 )
131 response = self.client.get(self.endpoint_url)
133 assert len(responses.calls) == 1
134 called = responses.calls[0]
135 assert called.request.url == self.api_url
137 assert response.status_code == 502
139 @responses.activate
140 def test_no_channel_map(self):
141 payload = self.snap_payload
142 payload["channel_map"] = None
144 responses.add(
145 responses.Response(
146 method="GET", url=self.api_url, json=payload, status=200
147 )
148 )
150 response = self.client.get(self.endpoint_url)
152 self.assertEqual(response.status_code, 200)
154 @responses.activate
155 def test_get_card(self):
156 payload = self.snap_payload
158 responses.add(
159 responses.Response(
160 method="GET", url=self.api_url, json=payload, status=200
161 )
162 )
164 response = self.client.get(self.endpoint_url)
166 self.assertEqual(response.status_code, 200)
167 self.assert_context("snap_title", "Snap Title")
168 self.assert_context("button", None)
170 @responses.activate
171 def test_get_card_default_button(self):
172 payload = self.snap_payload
174 responses.add(
175 responses.Response(
176 method="GET", url=self.api_url, json=payload, status=200
177 )
178 )
180 response = self.client.get(self.endpoint_url + "?button=test")
182 self.assertEqual(response.status_code, 200)
183 self.assert_context("button", "black")
185 @responses.activate
186 def test_get_card_white_button(self):
187 payload = self.snap_payload
189 responses.add(
190 responses.Response(
191 method="GET", url=self.api_url, json=payload, status=200
192 )
193 )
195 response = self.client.get(self.endpoint_url + "?button=white")
197 self.assertEqual(response.status_code, 200)
198 self.assert_context("button", "white")