From 3e93aeee728f5eaae488f7991d465025e5b3bd2a Mon Sep 17 00:00:00 2001 From: Priit Laes Date: Tue, 29 Sep 2015 15:04:35 +0300 Subject: [PATCH] cli: Make sure user doesn't accidentally overwrite existing setup --- certidude/cli.py | 5 ++++- tests/test_cli.py | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/certidude/cli.py b/certidude/cli.py index 07d5899..f9c41e9 100755 --- a/certidude/cli.py +++ b/certidude/cli.py @@ -469,7 +469,10 @@ def certidude_setup_authority(parent, country, state, locality, organization, or if not re.match(r"^[_a-zA-Z0-9]+$", slug): raise click.ClickException("CA name can contain only alphanumeric and '_' characters") - click.echo("CA configuration files are saved to: {}".format(os.path.abspath(slug))) + if os.path.lexists(directory): + raise click.ClickException("Output directory {} already exists.".format(directory)) + + click.echo("CA configuration files are saved to: {}".format(directory)) click.echo("Generating 4096-bit RSA key...") diff --git a/tests/test_cli.py b/tests/test_cli.py index bc74ea1..6037fa2 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -41,3 +41,11 @@ def test_cli_setup_authority_invalid_name(): result = runner.invoke(cli, ['setup', 'authority', '""']) assert result.exception + +def test_cli_setup_authority_overwrite(): + with runner.isolated_filesystem(): + result = runner.invoke(cli, ['setup', 'authority', 'foo']) + assert not result.exception + + result = runner.invoke(cli, ['setup', 'authority', 'foo']) + assert result.exception