From ad5c2d0a4d5240cbe500eadf6fb69828a5d66e60 Mon Sep 17 00:00:00 2001 From: Will Oller Date: Fri, 28 Nov 2014 10:48:32 -0800 Subject: [PATCH 1/4] acme/challenge_request handles only 1 domain name No other functions inside acme/ handle lists, so to keep the class consistent, challenge_request() should only handle a string parameter. Iteration should be moved to the client, which is handling the list of domain names anyway. --- letsencrypt/client/acme.py | 11 +++++------ letsencrypt/client/acme_test.py | 26 ++++++++++++++++++++++++++ letsencrypt/client/client.py | 5 ++++- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/letsencrypt/client/acme.py b/letsencrypt/client/acme.py index 9384abadb..a4230f786 100644 --- a/letsencrypt/client/acme.py +++ b/letsencrypt/client/acme.py @@ -62,21 +62,20 @@ def pretty(json_string): return json.dumps(json.loads(json_string), indent=4) -def challenge_request(names): +def challenge_request(name): """Create ACME "challengeRequest message. - TODO: Temporarily only enabling one name - - :param names: TODO - :type names: list + :param name: Domain name + :type name: unicode :returns: ACME "challengeRequest" message. :rtype: dict """ + return { "type": "challengeRequest", - "identifier": names[0], + "identifier": name, } diff --git a/letsencrypt/client/acme_test.py b/letsencrypt/client/acme_test.py index 9c4dc6e1e..40860f55d 100644 --- a/letsencrypt/client/acme_test.py +++ b/letsencrypt/client/acme_test.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + """Tests for letsencrypt.client.acme.""" import unittest @@ -53,6 +55,30 @@ class PrettyTest(unittest.TestCase): self._call('{"foo": {"bar": "baz"}}'), '{\n "foo": {\n "bar": "baz"\n }\n}') +class ChallengeRequestTest(unittest.TestCase): + """Tests for letsencrypt.client.acme.challenge_request_test""" + + def test_parameter_becomes_result(self): + """Test parameter is passed to result object unchanged""" + from letsencrypt.client.acme import challenge_request + self.assertEqual( + challenge_request("domainname"), + { + "type": "challengeRequest", + "identifier": "domainname", + } + ) + + def test_supports_unicode(self): + """Test support unicode parameter""" + from letsencrypt.client.acme import challenge_request + self.assertEqual( + challenge_request(u'unicode'), + { + "type": "challengeRequest", + "identifier": u'unicode', + } + ) if __name__ == '__main__': unittest.main() diff --git a/letsencrypt/client/client.py b/letsencrypt/client/client.py index 990df253e..e30193d64 100644 --- a/letsencrypt/client/client.py +++ b/letsencrypt/client/client.py @@ -130,12 +130,15 @@ class Client(object): def acme_challenge(self): """Handle ACME "challenge" phase. + TODO: Handle more than one domain name in self.names + :returns: ACME "challenge" message. :rtype: dict """ + return self.send_and_receive_expected( - acme.challenge_request(self.names), "challenge") + acme.challenge_request(self.names[0]), "challenge") def acme_authorization(self, challenge_msg, chal_objs, responses): """Handle ACME "authorization" phase. From c5bbb30e5df4af4d7befcd921a32f5fe209dff18 Mon Sep 17 00:00:00 2001 From: Will Oller Date: Sat, 29 Nov 2014 07:16:30 -0800 Subject: [PATCH 2/4] Removed unnecessary whitespace --- letsencrypt/client/client.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/letsencrypt/client/client.py b/letsencrypt/client/client.py index e30193d64..d0b9cf2e7 100644 --- a/letsencrypt/client/client.py +++ b/letsencrypt/client/client.py @@ -129,14 +129,10 @@ class Client(object): def acme_challenge(self): """Handle ACME "challenge" phase. - TODO: Handle more than one domain name in self.names - :returns: ACME "challenge" message. :rtype: dict - """ - return self.send_and_receive_expected( acme.challenge_request(self.names[0]), "challenge") From f3b7839d31d81a76366facec3c1d3aaa35d91ea5 Mon Sep 17 00:00:00 2001 From: Will Oller Date: Sat, 29 Nov 2014 07:23:37 -0800 Subject: [PATCH 3/4] =?UTF-8?q?Don=E2=80=99t=20use=20explicit=20file=20enc?= =?UTF-8?q?oding=20hint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- letsencrypt/client/acme_test.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/letsencrypt/client/acme_test.py b/letsencrypt/client/acme_test.py index 40860f55d..19d08d9d8 100644 --- a/letsencrypt/client/acme_test.py +++ b/letsencrypt/client/acme_test.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- - """Tests for letsencrypt.client.acme.""" import unittest From c39e85c17eb3cb4f66531604fd52abc88e1d9afb Mon Sep 17 00:00:00 2001 From: Will Oller Date: Sat, 29 Nov 2014 07:24:09 -0800 Subject: [PATCH 4/4] =?UTF-8?q?Don=E2=80=99t=20write=20unit=20tests=20for?= =?UTF-8?q?=20non-optimal=20code=20paths?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- letsencrypt/client/acme_test.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/letsencrypt/client/acme_test.py b/letsencrypt/client/acme_test.py index 19d08d9d8..f51a40d08 100644 --- a/letsencrypt/client/acme_test.py +++ b/letsencrypt/client/acme_test.py @@ -56,17 +56,6 @@ class PrettyTest(unittest.TestCase): class ChallengeRequestTest(unittest.TestCase): """Tests for letsencrypt.client.acme.challenge_request_test""" - def test_parameter_becomes_result(self): - """Test parameter is passed to result object unchanged""" - from letsencrypt.client.acme import challenge_request - self.assertEqual( - challenge_request("domainname"), - { - "type": "challengeRequest", - "identifier": "domainname", - } - ) - def test_supports_unicode(self): """Test support unicode parameter""" from letsencrypt.client.acme import challenge_request