From 5115e6ac2f47a81fad9226bef6b4ddd4e8e41ad9 Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Fri, 26 Aug 2016 16:17:19 -0700 Subject: [PATCH] Support both invalidEmail and invalidContact errors --- acme/acme/messages.py | 2 ++ certbot/client.py | 2 +- certbot/tests/client_test.py | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/acme/acme/messages.py b/acme/acme/messages.py index 56bcb1de2..940d1efc0 100644 --- a/acme/acme/messages.py +++ b/acme/acme/messages.py @@ -27,6 +27,8 @@ class Error(jose.JSONObjectWithFields, errors.Error): ('dnssec', 'The server could not validate a DNSSEC signed domain'), ('invalidEmail', 'The provided email for a registration was invalid'), + ('invalidContact', + 'The provided email for a registration was invalid'), ('malformed', 'The request message was malformed'), ('rateLimited', 'There were too many requests of a given type'), ('serverInternal', 'The server experienced an internal error'), diff --git a/certbot/client.py b/certbot/client.py index ef59c6ce3..f92370d30 100644 --- a/certbot/client.py +++ b/certbot/client.py @@ -149,7 +149,7 @@ def perform_registration(acme, config): try: return acme.register(messages.NewRegistration.from_data(email=config.email)) except messages.Error as e: - if e.typ == "urn:acme:error:invalidEmail": + if e.typ == "urn:acme:error:invalidEmail" or e.typ == "urn:acme:error:invalidContact": if config.noninteractive_mode: msg = ("The ACME server believes %s is an invalid email address. " "Please ensure it is a valid email and attempt " diff --git a/certbot/tests/client_test.py b/certbot/tests/client_test.py index 98d853716..e5c6b3af9 100644 --- a/certbot/tests/client_test.py +++ b/certbot/tests/client_test.py @@ -65,7 +65,7 @@ class RegisterTest(unittest.TestCase): from acme import messages self.config.noninteractive_mode = False msg = "DNS problem: NXDOMAIN looking up MX for example.com" - mx_err = messages.Error(detail=msg, typ="urn:acme:error:invalidEmail") + mx_err = messages.Error(detail=msg, typ="urn:acme:error:invalidContact") with mock.patch("certbot.client.acme_client.Client") as mock_client: mock_client().register.side_effect = [mx_err, mock.MagicMock()] self._call() @@ -75,7 +75,7 @@ class RegisterTest(unittest.TestCase): def test_email_invalid_noninteractive(self, _rep): from acme import messages msg = "DNS problem: NXDOMAIN looking up MX for example.com" - mx_err = messages.Error(detail=msg, typ="urn:acme:error:invalidEmail") + mx_err = messages.Error(detail=msg, typ="urn:acme:error:invalidContact") with mock.patch("certbot.client.acme_client.Client") as mock_client: mock_client().register.side_effect = [mx_err, mock.MagicMock()] self.assertRaises(errors.Error, self._call)