From 3c645a991629c8c4bf5022a08112fd59c23c0742 Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Tue, 5 May 2015 19:07:40 +0000 Subject: [PATCH 1/2] messages2.Error.__str__ (more readable exceptions) This partially fixes #349. --- letsencrypt/acme/messages2.py | 5 +++++ letsencrypt/acme/messages2_test.py | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/letsencrypt/acme/messages2.py b/letsencrypt/acme/messages2.py index 93f77a3e9..a2829ff57 100644 --- a/letsencrypt/acme/messages2.py +++ b/letsencrypt/acme/messages2.py @@ -46,6 +46,11 @@ class Error(jose.JSONObjectWithFields, Exception): """Hardcoded error description based on its type.""" return self.ERROR_TYPE_DESCRIPTIONS[self.typ] + def __str__(self): + if self.typ is not None: + return ' :: '.join([self.typ, self.description, self.detail]) + else: + return str(self.detail) class _Constant(jose.JSONDeSerializable): """ACME constant.""" diff --git a/letsencrypt/acme/messages2_test.py b/letsencrypt/acme/messages2_test.py index d45aa7f9e..9b114e861 100644 --- a/letsencrypt/acme/messages2_test.py +++ b/letsencrypt/acme/messages2_test.py @@ -50,6 +50,12 @@ class ErrorTest(unittest.TestCase): from letsencrypt.acme.messages2 import Error hash(Error.from_json(self.error.to_json())) + def test_str(self): + self.assertEqual( + 'malformed :: The request message was malformed :: foo', + str(self.error)) + self.assertEqual('foo', str(self.error.update(typ=None))) + class ConstantTest(unittest.TestCase): """Tests for letsencrypt.acme.messages2._Constant.""" From 6580d3a85bf566013286f9fd915d927d50da86c2 Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Tue, 5 May 2015 19:09:35 +0000 Subject: [PATCH 2/2] Add test for ChallengeBody proxy behaviour --- letsencrypt/acme/messages2_test.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/letsencrypt/acme/messages2_test.py b/letsencrypt/acme/messages2_test.py index 9b114e861..9e8ef33c8 100644 --- a/letsencrypt/acme/messages2_test.py +++ b/letsencrypt/acme/messages2_test.py @@ -169,6 +169,9 @@ class ChallengeBodyTest(unittest.TestCase): from letsencrypt.acme.messages2 import ChallengeBody hash(ChallengeBody.from_json(self.jobj_from)) + def test_proxy(self): + self.assertEqual('foo', self.challb.token) + class AuthorizationTest(unittest.TestCase): """Tests for letsencrypt.acme.messages2.Authorization."""