Skip to content

Commit 30c888b

Browse files
committed
PA-757: Updating url for ssl on websites. by Piotr and Sam
1 parent 9d44159 commit 30c888b

File tree

2 files changed

+32
-25
lines changed

2 files changed

+32
-25
lines changed

pythonanywhere_core/website.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ class Website:
2020
Use :method: ``Website.delete`` to delete website.
2121
"""
2222

23-
api_endpoint = get_api_endpoint(username=getpass.getuser(), flavor="websites")
23+
def __init__(self) -> None:
24+
self.websites_base_url = get_api_endpoint(username=getpass.getuser(), flavor="websites")
25+
self.domains_base_url = get_api_endpoint(username=getpass.getuser(), flavor="domains")
2426

2527
def create(self, domain_name: str, command: str) -> dict:
2628
"""Creates new website with ``domain_name`` and ``command``.
@@ -30,7 +32,7 @@ def create(self, domain_name: str, command: str) -> dict:
3032
:returns: dictionary with created website info"""
3133

3234
response = call_api(
33-
self.api_endpoint,
35+
self.websites_base_url,
3436
"post",
3537
json={
3638
"domain_name": domain_name,
@@ -48,7 +50,7 @@ def get(self, domain_name: str) -> dict:
4850
:return: dictionary with website info"""
4951

5052
response = call_api(
51-
f"{self.api_endpoint}{domain_name}/",
53+
f"{self.websites_base_url}{domain_name}/",
5254
"get",
5355
)
5456
return response.json()
@@ -58,7 +60,7 @@ def list(self) -> list:
5860
:return: list of dictionaries with websites info"""
5961

6062
response = call_api(
61-
self.api_endpoint,
63+
self.websites_base_url,
6264
"get",
6365
)
6466
return response.json()
@@ -69,7 +71,7 @@ def reload(self, domain_name: str) -> dict:
6971
:return: dictionary with response"""
7072

7173
response = call_api(
72-
f"{self.api_endpoint}{domain_name}/reload/",
74+
f"{self.websites_base_url}{domain_name}/reload/",
7375
"post",
7476
)
7577
return response.json()
@@ -79,15 +81,15 @@ def auto_ssl(self, domain_name: str) -> dict:
7981
:param domain_name: domain name for website to apply the certificate to
8082
:return: dictionary with response"""
8183
response = call_api(
82-
f"{self.api_endpoint}{domain_name}/ssl/",
84+
f"{self.domains_base_url}{domain_name}/ssl/",
8385
"post",
8486
json={"cert_type": "letsencrypt-auto-renew"}
8587
)
8688
return response.json()
8789

8890
def get_ssl_info(self, domain_name) -> dict:
8991
"""Get SSL certificate info"""
90-
url = f"{self.api_endpoint}{domain_name}/ssl/"
92+
url = f"{self.domains_base_url}{domain_name}/ssl/"
9193
response = call_api(url, "get")
9294
if not response.ok:
9395
raise PythonAnywhereApiException(f"GET SSL details via API failed, got {response}:{response.text}")
@@ -100,7 +102,7 @@ def delete(self, domain_name: str) -> dict:
100102
:return: empty dictionary"""
101103

102104
call_api(
103-
f"{self.api_endpoint}{domain_name}/",
105+
f"{self.websites_base_url}{domain_name}/",
104106
"delete",
105107
)
106108
return {}

tests/test_website.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,15 @@
1313

1414

1515
@pytest.fixture
16-
def webapps_base_url():
16+
def websites_base_url():
1717
return get_api_endpoint(username=getpass.getuser(), flavor="websites")
1818

1919

20+
@pytest.fixture
21+
def domains_base_url():
22+
return get_api_endpoint(username=getpass.getuser(), flavor="domains")
23+
24+
2025
@pytest.fixture
2126
def domain_name():
2227
return "foo.bar.com"
@@ -53,10 +58,10 @@ def website_info(domain_name, command):
5358

5459

5560
def test_create_returns_json_with_created_website_info(
56-
api_responses, webapps_base_url, website_info, domain_name, command
61+
api_responses, websites_base_url, website_info, domain_name, command
5762
):
5863
api_responses.add(
59-
responses.POST, url=webapps_base_url, status=201, body=json.dumps(website_info)
64+
responses.POST, url=websites_base_url, status=201, body=json.dumps(website_info)
6065
)
6166
expected_request_body = json.dumps(
6267
{"domain_name": domain_name, "enabled": True, "webapp": {"command": command}}
@@ -71,54 +76,54 @@ def test_create_returns_json_with_created_website_info(
7176

7277

7378
def test_get_returns_json_with_info_for_given_domain(
74-
api_responses, webapps_base_url, website_info, domain_name
79+
api_responses, websites_base_url, website_info, domain_name
7580
):
7681
api_responses.add(
7782
responses.GET,
78-
url=f"{webapps_base_url}{domain_name}/",
83+
url=f"{websites_base_url}{domain_name}/",
7984
status=200,
8085
body=json.dumps(website_info)
8186
)
8287

8388
assert Website().get(domain_name=domain_name) == website_info
8489

8590

86-
def test_list_returns_json_with_info_for_all_websites(api_responses, webapps_base_url, website_info):
91+
def test_list_returns_json_with_info_for_all_websites(api_responses, websites_base_url, website_info):
8792
api_responses.add(
8893
responses.GET,
89-
url=webapps_base_url,
94+
url=websites_base_url,
9095
status=200,
9196
body=json.dumps([website_info])
9297
)
9398

9499
assert Website().list() == [website_info]
95100

96101

97-
def test_reloads_website(api_responses, domain_name, webapps_base_url):
102+
def test_reloads_website(api_responses, domain_name, websites_base_url):
98103
api_responses.add(
99104
responses.POST,
100-
url=f"{webapps_base_url}{domain_name}/reload/",
105+
url=f"{websites_base_url}{domain_name}/reload/",
101106
status=200,
102107
body=json.dumps({"status": "OK"})
103108
)
104109

105110
assert Website().reload(domain_name=domain_name) == {"status": "OK"}
106111

107112

108-
def test_deletes_website(api_responses, domain_name, webapps_base_url):
113+
def test_deletes_website(api_responses, domain_name, websites_base_url):
109114
api_responses.add(
110115
responses.DELETE,
111-
url=f"{webapps_base_url}{domain_name}/",
116+
url=f"{websites_base_url}{domain_name}/",
112117
status=204,
113118
)
114119

115120
assert Website().delete(domain_name=domain_name) == {}
116121

117122

118-
def test_sets_lets_encrypt_cert(api_responses, domain_name, webapps_base_url):
123+
def test_sets_lets_encrypt_cert(api_responses, domain_name, domains_base_url):
119124
api_responses.add(
120125
responses.POST,
121-
url=f"{webapps_base_url}{domain_name}/ssl/",
126+
url=f"{domains_base_url}{domain_name}/ssl/",
122127
body=json.dumps({"status": "OK"}),
123128
status=200
124129
)
@@ -131,21 +136,21 @@ def test_sets_lets_encrypt_cert(api_responses, domain_name, webapps_base_url):
131136
}
132137

133138

134-
def test_returns_ssl_info(api_responses, domain_name, webapps_base_url):
139+
def test_returns_ssl_info(api_responses, domain_name, domains_base_url):
135140
api_responses.add(
136141
responses.GET,
137-
url=f"{webapps_base_url}{domain_name}/ssl/",
142+
url=f"{domains_base_url}{domain_name}/ssl/",
138143
body=json.dumps({"status": "OK"}),
139144
status=200
140145
)
141146

142147
assert Website().get_ssl_info(domain_name=domain_name) == {"status": "OK"}
143148

144149

145-
def test_raises_if_ssl_info_does_not_return_200(api_responses, domain_name, webapps_base_url):
150+
def test_raises_if_ssl_info_does_not_return_200(api_responses, domain_name, domains_base_url):
146151
api_responses.add(
147152
responses.GET,
148-
url=f"{webapps_base_url}{domain_name}/ssl/",
153+
url=f"{domains_base_url}{domain_name}/ssl/",
149154
status=404, body="nope"
150155
)
151156

0 commit comments

Comments
 (0)