diff --git a/certbot/cert_manager.py b/certbot/cert_manager.py index 71a5fe6fa..35d539a16 100644 --- a/certbot/cert_manager.py +++ b/certbot/cert_manager.py @@ -100,7 +100,10 @@ def lineage_for_certname(cli_config, certname): configs_dir = cli_config.renewal_configs_dir # Verify the directory is there util.make_or_verify_dir(configs_dir, mode=0o755, uid=os.geteuid()) - renewal_file = storage.renewal_file_for_certname(cli_config, certname) + try: + renewal_file = storage.renewal_file_for_certname(cli_config, certname) + except errors.CertStorageError: + return None try: return storage.RenewableCert(renewal_file, cli_config) except (errors.CertStorageError, IOError): diff --git a/certbot/tests/cert_manager_test.py b/certbot/tests/cert_manager_test.py index 1fa68d195..473970870 100644 --- a/certbot/tests/cert_manager_test.py +++ b/certbot/tests/cert_manager_test.py @@ -290,6 +290,16 @@ class LineageForCertnameTest(BaseCertManagerTest): None) self.assertTrue(mock_make_or_verify_dir.called) + @mock.patch('certbot.util.make_or_verify_dir') + @mock.patch('certbot.storage.renewal_file_for_certname') + def test_no_renewal_file(self, mock_renewal_conf_file, + mock_make_or_verify_dir): + mock_renewal_conf_file.side_effect = errors.CertStorageError() + from certbot import cert_manager + self.assertEqual(cert_manager.lineage_for_certname(self.cli_config, "example.com"), + None) + self.assertTrue(mock_make_or_verify_dir.called) + class DomainsForCertnameTest(BaseCertManagerTest): """Tests for certbot.cert_manager.domains_for_certname""" diff --git a/tests/boulder-integration.sh b/tests/boulder-integration.sh index 2ddd3c04b..ca6f48e60 100755 --- a/tests/boulder-integration.sh +++ b/tests/boulder-integration.sh @@ -100,6 +100,8 @@ common certonly -a manual -d le.wtf --rsa-key-size 4096 \ common certonly -a manual -d dns.le.wtf --preferred-challenges dns,tls-sni \ --manual-auth-hook ./tests/manual-dns-auth.sh +common certonly --cert-name newname -d newname.le.wtf + export CSR_PATH="${root}/csr.der" KEY_PATH="${root}/key.pem" \ OPENSSL_CNF=examples/openssl.cnf ./examples/generate-csr.sh le3.wtf