Break up big add_client_ca test into a bunch of smaller ones
diff --git a/test/test_ssl.py b/test/test_ssl.py
index 4249db7..207b420 100644
--- a/test/test_ssl.py
+++ b/test/test_ssl.py
@@ -721,11 +721,42 @@
self.assertRaises(TypeError, ctx.add_client_ca, cacert, cacert)
- def test_add_client_ca_functional(self):
+ def test_one_add_client_ca(self):
"""
- The list of CAs set by L{Context.add_client_ca} and read by
- L{Connection.get_client_ca_list} should match on server and
- client side.
+ A certificate's subject can be added as a CA to be sent to the client
+ with L{Context.add_client_ca}.
+ """
+ cacert = load_certificate(FILETYPE_PEM, root_cert_pem)
+ cadesc = cacert.get_subject()
+ def single_ca(ctx):
+ ctx.add_client_ca(cacert)
+ return [cadesc]
+ self._check_client_ca_list(single_ca)
+
+
+ def test_multiple_add_client_ca(self):
+ """
+ Multiple CA names can be sent to the client by calling
+ L{Context.add_client_ca} with multiple X509 objects.
+ """
+ cacert = load_certificate(FILETYPE_PEM, root_cert_pem)
+ secert = load_certificate(FILETYPE_PEM, server_cert_pem)
+
+ cadesc = cacert.get_subject()
+ sedesc = secert.get_subject()
+
+ def multiple_ca(ctx):
+ ctx.add_client_ca(cacert)
+ ctx.add_client_ca(secert)
+ return [cadesc, sedesc]
+ self._check_client_ca_list(multiple_ca)
+
+
+ def test_set_and_add_client_ca(self):
+ """
+ A call to L{Context.set_client_ca_list} followed by a call to
+ L{Context.add_client_ca} results in using the CA names from the first
+ call and the CA name from the second call.
"""
cacert = load_certificate(FILETYPE_PEM, root_cert_pem)
secert = load_certificate(FILETYPE_PEM, server_cert_pem)
@@ -735,23 +766,27 @@
sedesc = secert.get_subject()
cldesc = clcert.get_subject()
- def single_ca(ctx):
- ctx.add_client_ca(cacert)
- return [cadesc]
- self._check_client_ca_list(single_ca)
-
- def multiple_ca(ctx):
- ctx.add_client_ca(cacert)
- ctx.add_client_ca(secert)
- return [cadesc, sedesc]
- self._check_client_ca_list(multiple_ca)
-
def mixed_set_add_ca(ctx):
ctx.set_client_ca_list([cadesc, sedesc])
ctx.add_client_ca(clcert)
return [cadesc, sedesc, cldesc]
self._check_client_ca_list(mixed_set_add_ca)
+
+ def test_set_after_add_client_ca(self):
+ """
+ A call to L{Context.set_client_ca_list} after a call to
+ L{Context.add_client_ca} replaces the CA name specified by the former
+ call with the names specified by the latter cal.
+ """
+ cacert = load_certificate(FILETYPE_PEM, root_cert_pem)
+ secert = load_certificate(FILETYPE_PEM, server_cert_pem)
+ clcert = load_certificate(FILETYPE_PEM, server_cert_pem)
+
+ cadesc = cacert.get_subject()
+ sedesc = secert.get_subject()
+ cldesc = clcert.get_subject()
+
def set_replaces_add_ca(ctx):
ctx.add_client_ca(clcert)
ctx.set_client_ca_list([cadesc])