diff options
Diffstat (limited to 'tests/test_http.py')
-rw-r--r-- | tests/test_http.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/test_http.py b/tests/test_http.py index 2bee6ca..9bd9ee0 100644 --- a/tests/test_http.py +++ b/tests/test_http.py @@ -10,9 +10,11 @@ import os import pytest from six.moves import http_client, urllib import socket +import ssl import tests DUMMY_URL = "http://127.0.0.1:1" +DUMMY_HTTPS_URL = "https://127.0.0.1:2" def _raise_connection_refused_exception(*args, **kwargs): @@ -645,3 +647,38 @@ content""" assert response.status == 200 assert content == b"content" assert response["link"], "link1, link2" + + +@pytest.mark.skipif( + os.environ.get("TRAVIS_PYTHON_VERSION") in ("2.7", "pypy"), + reason="Python 2.7 doesn't support TLS min/max" +) +def test_set_min_tls_version(): + # Test setting minimum TLS version + # We expect failure on Python < 3.7 or OpenSSL < 1.1 + expect_success = hasattr(ssl.SSLContext(), 'minimum_version') + try: + http = httplib2.Http(tls_minimum_version="TLSv1_2") + http.request(DUMMY_HTTPS_URL) + except RuntimeError: + assert not expect_success + except socket.error: + assert expect_success + + +@pytest.mark.skipif( + os.environ.get("TRAVIS_PYTHON_VERSION") in ("2.7", "pypy"), + reason="Python 2.7 doesn't support TLS min/max" +) +def test_set_max_tls_version(): + # Test setting maximum TLS version + # We expect RuntimeError on Python < 3.7 or OpenSSL < 1.1 + # We expect socket error otherwise + expect_success = hasattr(ssl.SSLContext(), 'maximum_version') + try: + http = httplib2.Http(tls_maximum_version="TLSv1_2") + http.request(DUMMY_HTTPS_URL) + except RuntimeError: + assert not expect_success + except socket.error: + assert expect_success |