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.