Skip to content

Commit ff79789

Browse files
committed
Fix tests and comments, server_hostname='' still raises ValueError
1 parent ca99e00 commit ff79789

2 files changed

Lines changed: 30 additions & 22 deletions

File tree

‎Lib/test/test_asyncio/test_sslproto.py‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ def test_check_hostname_accepts_server_hostname(self):
8282
server_hostname='example.org')
8383
self.addCleanup(ssl_proto._app_transport.close)
8484

85-
@support.subTests("server_hostname", [None, ''])
86-
def test_check_hostname_requires_server_hostname(self, server_hostname):
85+
def test_check_hostname_requires_server_hostname(self):
8786
# A caller-supplied context asking for hostname checking used to be
8887
# taken through wrap_bio() with no name to check against, verifying
8988
# the certificate chain but never the peer's identity.
@@ -94,10 +93,17 @@ def test_check_hostname_requires_server_hostname(self, server_hostname):
9493
sslcontext.check_hostname = True
9594
app_proto = mock.Mock()
9695
waiter = mock.Mock()
96+
server_hostname = None
9797

98-
# Supplying an empty server_hostname fails with check_hostname enabled.
98+
# Supplying no server_hostname warns with check_hostname enabled.
9999
with self.assertWarnsRegex(
100-
UserWarning,
100+
DeprecationWarning,
101+
'check_hostname requires server_hostname'):
102+
sslproto.SSLProtocol(self.loop, app_proto, sslcontext,
103+
waiter)
104+
105+
with self.assertWarnsRegex(
106+
DeprecationWarning,
101107
'check_hostname requires server_hostname'):
102108
sslproto.SSLProtocol(self.loop, app_proto, sslcontext,
103109
waiter,

‎Lib/test/test_ssl.py‎

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1725,7 +1725,7 @@ def test_bad_server_hostname(self):
17251725
with self.assertWarns(DeprecationWarning):
17261726
ctx.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO(),
17271727
server_hostname=None)
1728-
with self.assertRaises(DeprecationWarning):
1728+
with self.assertRaises(ValueError):
17291729
ctx.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO(),
17301730
server_hostname="")
17311731
with self.assertRaises(ValueError):
@@ -1817,30 +1817,32 @@ def test_check_hostname_requires_server_hostname(self):
18171817
client_context, _, hostname = testing_context()
18181818
self.assertTrue(client_context.check_hostname)
18191819

1820-
for server_hostname in (None, ""):
1821-
with self.subTest(server_hostname=server_hostname):
1822-
with self.assertWarnsRegex(
1823-
DeprecationWarning,
1824-
"check_hostname requires server_hostname"):
1825-
client_context.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO(),
1826-
server_hostname=server_hostname)
1827-
# The sibling constructor refuses the very same call.
1828-
with socket.socket() as sock:
1829-
with self.assertWarnsRegex(
1830-
DeprecationWarning,
1831-
"check_hostname requires server_hostname"):
1832-
client_context.wrap_socket(
1833-
sock, server_hostname=server_hostname)
1820+
server_hostname = None
1821+
with self.assertWarnsRegex(
1822+
DeprecationWarning,
1823+
"check_hostname requires server_hostname"):
1824+
client_context.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO(),
1825+
server_hostname=server_hostname)
1826+
# The sibling constructor refuses the very same call, but with
1827+
# a ValueError instead of DeprecationWarning.
1828+
with socket.socket() as sock:
1829+
with self.assertRaisesRegex(
1830+
ValueError,
1831+
"check_hostname requires server_hostname"):
1832+
client_context.wrap_socket(
1833+
sock, server_hostname=server_hostname)
18341834

18351835
# A name was all that was missing.
1836-
client_context.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO(),
1837-
server_hostname=hostname)
1836+
with warnings_helper.check_no_warnings(self):
1837+
client_context.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO(),
1838+
server_hostname=hostname)
18381839

18391840
# Asking for no hostname check remains a way to say so explicitly.
18401841
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
18411842
context.check_hostname = False
18421843
self.assertFalse(context.check_hostname)
1843-
context.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO())
1844+
with warnings_helper.check_no_warnings(self):
1845+
context.wrap_bio(ssl.MemoryBIO(), ssl.MemoryBIO())
18441846

18451847
def test_server_side_bad_params(self):
18461848
# A server neither sends a hostname nor resumes a client's session,

0 commit comments

Comments
 (0)