Added state_string test
diff --git a/OpenSSL/test/test_ssl.py b/OpenSSL/test/test_ssl.py
index 55a4015..c68e5c8 100644
--- a/OpenSSL/test/test_ssl.py
+++ b/OpenSSL/test/test_ssl.py
@@ -2333,6 +2333,53 @@
connection.set_shutdown(long(RECEIVED_SHUTDOWN))
self.assertEquals(connection.get_shutdown(), RECEIVED_SHUTDOWN)
+ def test_state_string(self):
+ """
+ :py:obj:`Connection.state_string` verbosely describes the current
+ state of the :py:obj:`Connection`.
+ """
+ (server, client) = socket_pair()
+ server = self._loopbackServerFactory(server)
+ client = self._loopbackClientFactory(client)
+
+ self.assertEqual('before/accept initialization',
+ server.state_string().decode())
+ self.assertEqual('before/connect initialization',
+ client.state_string().decode())
+
+ for conn in [server, client]:
+ try:
+ conn.do_handshake()
+ except WantReadError:
+ pass
+
+ self.assertEqual('SSLv3 read client hello B',
+ server.state_string().decode())
+ self.assertEqual('SSLv3 read server hello A',
+ client.state_string().decode())
+
+ for conn in [server, client]:
+ try:
+ conn.do_handshake()
+ except WantReadError:
+ pass
+
+ self.assertEqual('SSLv3 read client certificate A',
+ server.state_string().decode())
+ self.assertEqual('SSLv3 read server session ticket A',
+ client.state_string().decode())
+
+ for conn in [server, client]:
+ try:
+ conn.do_handshake()
+ except WantReadError:
+ pass
+
+ self.assertEqual('SSL negotiation finished successfully',
+ server.state_string().decode())
+ self.assertEqual('SSL negotiation finished successfully',
+ client.state_string().decode())
+
def test_app_data_wrong_args(self):
"""
:py:obj:`Connection.set_app_data` raises :py:obj:`TypeError` if called