Skip to content

Commit aa3cd6c

Browse files
Raise on unsuccessful website deletion.
1 parent cbacbbe commit aa3cd6c

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

‎pythonanywhere_core/website.py‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,15 @@ def get_ssl_info(self, domain_name) -> dict:
110110
def delete(self, domain_name: str) -> dict:
111111
"""Deletes website with ``domain_name``.
112112
:param domain_name: domain name for website to delete
113-
:return: empty dictionary"""
113+
:return: empty dictionary on HTTP 204
114+
:raises PythonAnywhereApiException: if the response is not HTTP 204"""
114115

115-
call_api(
116+
response = call_api(
116117
f"{self.websites_base_url}{domain_name}/",
117118
"delete",
118119
)
120+
if response.status_code != 204:
121+
raise PythonAnywhereApiException(
122+
f"DELETE website via API failed, got {response}:{response.text}"
123+
)
119124
return {}

‎tests/test_website.py‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,24 @@ def test_deletes_website(api_responses, domain_name, websites_base_url):
154154
assert Website().delete(domain_name=domain_name) == {}
155155

156156

157+
@pytest.mark.parametrize("status_code", [200, 202, 403, 404, 500])
158+
def test_delete_raises_unless_response_is_204(
159+
api_responses, domain_name, websites_base_url, status_code
160+
):
161+
api_responses.add(
162+
responses.DELETE,
163+
url=f"{websites_base_url}{domain_name}/",
164+
status=status_code,
165+
body="unexpected response",
166+
)
167+
168+
with pytest.raises(PythonAnywhereApiException) as exc:
169+
Website().delete(domain_name=domain_name)
170+
171+
assert str(status_code) in str(exc.value)
172+
assert "unexpected response" in str(exc.value)
173+
174+
157175
def test_sets_lets_encrypt_cert(api_responses, domain_name, domains_base_url):
158176
api_responses.add(
159177
responses.POST,

0 commit comments

Comments
 (0)