fix tests on jessie

This commit is contained in:
Lucy Wang 2018-03-13 19:14:52 +08:00
parent d9e6c73fb3
commit 1a2f0193a3
2 changed files with 13 additions and 2 deletions

View File

@ -40,7 +40,14 @@ if twisted_version >= (14, 0, 0):
from twisted.internet._sslverify import (ClientTLSOptions,
verifyHostname,
VerificationError)
from service_identity.exceptions import CertificateError
try:
# XXX: this import would fail on Debian jessie with system installed
# service_identity library, due to lack of cryptography.x509 dependency
# See https://github.com/pyca/service_identity/issues/21
from service_identity.exceptions import CertificateError
verification_errors = (CertificateError, VerificationError)
except ImportError:
verification_errors = VerificationError
if twisted_version < (17, 0, 0):
from twisted.internet._sslverify import _maybeSetHostNameIndication
@ -66,7 +73,7 @@ if twisted_version >= (14, 0, 0):
elif where & SSL_CB_HANDSHAKE_DONE:
try:
verifyHostname(connection, self._hostnameASCII)
except (CertificateError, VerificationError) as e:
except verification_errors as e:
logger.warning(
'Remote certificate is not valid for hostname "{}"; {}'.format(
self._hostnameASCII, e))

View File

@ -512,6 +512,10 @@ class Https11InvalidDNSPattern(Https11TestCase):
certfile = 'keys/localhost.ip.crt'
def setUp(self):
try:
from service_identity.exceptions import CertificateError
except ImportError:
raise unittest.SkipTest("cryptography lib is too old")
super(Https11InvalidDNSPattern, self).setUp()