Coverage for tests/publisher/tests_register_name.py: 100%
88 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 GetRegisterNamePageNotAuth(BaseTestCases.EndpointLoggedOut):
6 def setUp(self):
7 endpoint_url = "/register-snap"
8 super().setUp(snap_name=None, endpoint_url=endpoint_url)
11class GetRegisterNamePage(BaseTestCases.BaseAppTesting):
12 def setUp(self):
13 endpoint_url = "/register-snap"
14 super().setUp(snap_name=None, api_url=None, endpoint_url=endpoint_url)
15 self.user_url = "https://dashboard.snapcraft.io/dev/api/account"
17 @responses.activate
18 def test_register_name_logged_in(self):
19 self._log_in(self.client)
21 responses.add(responses.GET, self.user_url, status=200)
23 response = self.client.get(self.endpoint_url)
25 assert response.status_code == 200
26 self.assert_template_used("store/publisher.html")
29class PostRegisterNamePageNotAuth(BaseTestCases.EndpointLoggedOut):
30 def setUp(self):
31 endpoint_url = "/api/register-snap"
33 super().setUp(
34 snap_name=None, endpoint_url=endpoint_url, method_endpoint="POST"
35 )
38class PostRegisterNamePage(BaseTestCases.EndpointLoggedIn):
39 def setUp(self):
40 endpoint_url = "/api/register-snap"
41 api_url = "https://dashboard.snapcraft.io/dev/api/register-name/"
43 data = {"snap_name": "test-snap"}
45 super().setUp(
46 snap_name=None,
47 api_url=api_url,
48 endpoint_url=endpoint_url,
49 method_api="POST",
50 method_endpoint="POST",
51 data=data,
52 )
53 self.user_url = "https://dashboard.snapcraft.io/dev/api/account"
55 @responses.activate
56 def test_post_snap_name(self):
57 responses.add(responses.POST, self.api_url, json={}, status=200)
59 response = self.client.post(self.endpoint_url, data=self.data)
61 self.assertEqual(1, len(responses.calls))
62 called = responses.calls[0]
63 self.assertEqual(self.api_url, called.request.url)
64 self.assertEqual(
65 self.authorization, called.request.headers.get("Authorization")
66 )
67 self.assertEqual(b'{"snap_name": "test-snap"}', called.request.body)
69 assert response.status_code == 200
71 @responses.activate
72 def test_post_store(self):
73 responses.add(responses.POST, self.api_url, json={}, status=200)
75 self.data["store"] = "store"
76 response = self.client.post(self.endpoint_url, data=self.data)
78 self.assertEqual(1, len(responses.calls))
79 called = responses.calls[0]
80 self.assertEqual(
81 self.authorization, called.request.headers.get("Authorization")
82 )
83 self.assertEqual(self.api_url, called.request.url)
84 self.assertIn(b'"snap_name": "test-snap"', called.request.body)
85 self.assertIn(b'"store": "store"', called.request.body)
87 assert response.status_code == 200
89 @responses.activate
90 def test_post_private(self):
91 responses.add(responses.POST, self.api_url, json={}, status=200)
93 self.data["is_private"] = "private"
94 response = self.client.post(self.endpoint_url, data=self.data)
96 self.assertEqual(1, len(responses.calls))
97 called = responses.calls[0]
98 self.assertEqual(self.api_url, called.request.url)
99 self.assertEqual(
100 self.authorization, called.request.headers.get("Authorization")
101 )
102 self.assertIn(b'"snap_name": "test-snap"', called.request.body)
103 self.assertIn(b'"is_private": true', called.request.body)
105 assert response.status_code == 200
107 @responses.activate
108 def test_name_already_registered(self):
109 payload = {"error_list": [{"code": "already_registered"}]}
110 responses.add(responses.POST, self.api_url, json=payload, status=409)
112 user_payload = {"error_list": [], "stores": []}
113 responses.add(
114 responses.GET, self.user_url, json=user_payload, status=200
115 )
117 response = self.client.post(self.endpoint_url, data=self.data)
119 assert response.status_code == 200
120 assert (
121 response.get_json()["data"]["error_code"] == "already_registered"
122 )
124 @responses.activate
125 def test_name_reserved(self):
126 payload = {"error_list": [{"code": "reserved_name"}]}
127 responses.add(responses.POST, self.api_url, json=payload, status=409)
129 user_payload = {"error_list": [], "stores": []}
130 responses.add(
131 responses.GET, self.user_url, json=user_payload, status=200
132 )
134 response = self.client.post(self.endpoint_url, data=self.data)
136 assert response.status_code == 200
137 assert response.get_json()["data"]["error_code"] == "reserved_name"
139 @responses.activate
140 def test_claim_dispute(self):
141 payload = {
142 "success": False,
143 "data": {
144 "snap_name": "test-snap",
145 "is_private": "private",
146 "store": "store",
147 "error_code": "already_claimed",
148 },
149 }
150 responses.add(responses.POST, self.api_url, json=payload, status=200)
152 response = self.client.post(self.endpoint_url, data=self.data)
154 assert response.status_code == 200
155 assert response.get_json()["success"] is True