From 7572270c70cd3cbc4dc4c79736c8dadc58d4e242 Mon Sep 17 00:00:00 2001 From: Glenn Jones Date: Wed, 18 Sep 2024 15:27:49 +0000 Subject: [PATCH] PA-757 - added command to get LE cert for new-style webapp. by: Glenn, Filip, Nina --- cli/website.py | 17 ++++++++++++++++- tests/test_cli_website.py | 18 ++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/cli/website.py b/cli/website.py index dfdbd63..25127f3 100644 --- a/cli/website.py +++ b/cli/website.py @@ -1,6 +1,5 @@ #!/usr/bin/python3 -from pprint import pformat from typing_extensions import Annotated import typer @@ -114,3 +113,19 @@ def delete( """Delete the website at the given domain""" Website().delete(domain_name=domain_name) typer.echo(snakesay(f"Website {domain_name} has been deleted!")) + + +@app.command() +def create_autorenew_cert( + domain_name: Annotated[ + str, + typer.Option( + "-d", + "--domain", + help="Domain name, eg. yourusername.pythonanywhere.com or www.mydomain.com", + ) + ], +): + """Create and apply an auto-renewing Let's Encrypt certificate for the given domain""" + Website().auto_ssl(domain_name=domain_name) + typer.echo(snakesay(f"Applied auto-renewing SSL certificate for {domain_name}!")) diff --git a/tests/test_cli_website.py b/tests/test_cli_website.py index a8e7499..c86b178 100644 --- a/tests/test_cli_website.py +++ b/tests/test_cli_website.py @@ -268,3 +268,21 @@ def test_delete_with_domain_deletes_it(mocker, mock_echo, mock_website): mock_snakesay.assert_called_once_with(f"Website www.domain.com has been deleted!") mock_echo.assert_called_once_with(mock_snakesay.return_value) + +def test_create_le_autorenew_cert(mocker, mock_echo, mock_website): + mock_snakesay = mocker.patch("cli.website.snakesay") + + result = runner.invoke( + app, + [ + "create-autorenew-cert", + "-d", + "www.domain.com", + ], + ) + + assert result.exit_code == 0 + mock_website.return_value.auto_ssl.assert_called_once_with(domain_name="www.domain.com") + mock_snakesay.assert_called_once_with(f"Applied auto-renewing SSL certificate for www.domain.com!") + mock_echo.assert_called_once_with(mock_snakesay.return_value) +