Skip to content

Commit

Permalink
Mock asyncio in mockiavellian tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Jim Fulton committed Jul 7, 2016
1 parent c0b9687 commit 9b42191
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 16 deletions.
4 changes: 3 additions & 1 deletion src/ZEO/tests/testConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

from .forker import start_zeo_server

class ZEOConfigTest(setupstack.TestCase):
class ZEOConfigTestBase(setupstack.TestCase):

setUp = setupstack.setUpDirectory

Expand Down Expand Up @@ -86,6 +86,8 @@ def _client_assertions(
self.assertEqual(client.__name__,
name if name is not None else str(client._addr))

class ZEOConfigTest(ZEOConfigTestBase):

def test_default_zeo_config(self, **client_settings):
addr, stop = self.start_server()

Expand Down
40 changes: 25 additions & 15 deletions src/ZEO/tests/testssl.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from .._compat import PY3

import mock
import os
import ssl
Expand All @@ -7,7 +9,7 @@
from ..Exceptions import ClientDisconnected
from .. import runzeo

from .testConfig import ZEOConfigTest
from .testConfig import ZEOConfigTestBase

here = os.path.dirname(__file__)
server_cert = os.path.join(here, 'server.pem')
Expand All @@ -17,7 +19,7 @@
client_cert = os.path.join(here, 'client.pem')
client_key = os.path.join(here, 'client_key.pem')

class SSLConfigTest(ZEOConfigTest):
class SSLConfigTest(ZEOConfigTestBase):

def test_ssl_basic(self):
# This shows that configuring ssl has an actual effect on connections.
Expand Down Expand Up @@ -112,8 +114,13 @@ def test_ssl_pw(self):
)
stop()

@mock.patch(('asyncio' if PY3 else 'trollius') + '.async')
@mock.patch(('asyncio' if PY3 else 'trollius') + '.set_event_loop')
@mock.patch(('asyncio' if PY3 else 'trollius') + '.new_event_loop')
class SSLConfigTestMockiavellian(ZEOConfigTestBase):

@mock.patch('ssl.create_default_context')
def test_ssl_mockiavellian_server_no_ssl(self, factory):
def test_ssl_mockiavellian_server_no_ssl(self, factory, *_):
server = create_server()
self.assertFalse(factory.called)
self.assertEqual(server.acceptor.ssl_context, None)
Expand All @@ -134,29 +141,29 @@ def assert_context(
self.assertEqual(context.check_hostname, check_hostname)

@mock.patch('ssl.create_default_context')
def test_ssl_mockiavellian_server_ssl_no_auth(self, factory):
def test_ssl_mockiavellian_server_ssl_no_auth(self, factory, *_):
with self.assertRaises(SystemExit):
# auth is required
create_server(certificate=server_cert, key=server_key)

@mock.patch('ssl.create_default_context')
def test_ssl_mockiavellian_server_ssl_auth_file(self, factory):
def test_ssl_mockiavellian_server_ssl_auth_file(self, factory, *_):
server = create_server(
certificate=server_cert, key=server_key, authenticate=__file__)
context = server.acceptor.ssl_context
self.assert_context(factory, context, cafile=__file__)
server.close()

@mock.patch('ssl.create_default_context')
def test_ssl_mockiavellian_server_ssl_auth_dir(self, factory):
def test_ssl_mockiavellian_server_ssl_auth_dir(self, factory, *_):
server = create_server(
certificate=server_cert, key=server_key, authenticate=here)
context = server.acceptor.ssl_context
self.assert_context(factory, context, capath=here)
server.close()

@mock.patch('ssl.create_default_context')
def test_ssl_mockiavellian_server_ssl_pw(self, factory):
def test_ssl_mockiavellian_server_ssl_pw(self, factory, *_):
server = create_server(
certificate=server_cert,
key=server_key,
Expand All @@ -170,15 +177,15 @@ def test_ssl_mockiavellian_server_ssl_pw(self, factory):

@mock.patch('ssl.create_default_context')
@mock.patch('ZEO.ClientStorage.ClientStorage')
def test_ssl_mockiavellian_client_no_ssl(self, ClientStorage, factory):
def test_ssl_mockiavellian_client_no_ssl(self, ClientStorage, factory, *_):
client = ssl_client()
self.assertFalse('ssl' in ClientStorage.call_args[1])
self.assertFalse('ssl_server_hostname' in ClientStorage.call_args[1])

@mock.patch('ssl.create_default_context')
@mock.patch('ZEO.ClientStorage.ClientStorage')
def test_ssl_mockiavellian_client_server_signed(
self, ClientStorage, factory
self, ClientStorage, factory, *_
):
client = ssl_client(certificate=client_cert, key=client_key)
context = ClientStorage.call_args[1]['ssl']
Expand All @@ -191,7 +198,7 @@ def test_ssl_mockiavellian_client_server_signed(
@mock.patch('ssl.create_default_context')
@mock.patch('ZEO.ClientStorage.ClientStorage')
def test_ssl_mockiavellian_client_auth_dir(
self, ClientStorage, factory
self, ClientStorage, factory, *_
):
client = ssl_client(
certificate=client_cert, key=client_key, authenticate=here)
Expand All @@ -207,7 +214,7 @@ def test_ssl_mockiavellian_client_auth_dir(
@mock.patch('ssl.create_default_context')
@mock.patch('ZEO.ClientStorage.ClientStorage')
def test_ssl_mockiavellian_client_auth_file(
self, ClientStorage, factory
self, ClientStorage, factory, *_
):
client = ssl_client(
certificate=client_cert, key=client_key, authenticate=server_cert)
Expand All @@ -223,7 +230,7 @@ def test_ssl_mockiavellian_client_auth_file(
@mock.patch('ssl.create_default_context')
@mock.patch('ZEO.ClientStorage.ClientStorage')
def test_ssl_mockiavellian_client_pw(
self, ClientStorage, factory
self, ClientStorage, factory, *_
):
client = ssl_client(
certificate=client_cert, key=client_key,
Expand All @@ -241,7 +248,7 @@ def test_ssl_mockiavellian_client_pw(
@mock.patch('ssl.create_default_context')
@mock.patch('ZEO.ClientStorage.ClientStorage')
def test_ssl_mockiavellian_client_server_hostname(
self, ClientStorage, factory
self, ClientStorage, factory, *_
):
client = ssl_client(
certificate=client_cert, key=client_key, authenticate=server_cert,
Expand All @@ -258,7 +265,7 @@ def test_ssl_mockiavellian_client_server_hostname(
@mock.patch('ssl.create_default_context')
@mock.patch('ZEO.ClientStorage.ClientStorage')
def test_ssl_mockiavellian_client_check_hostname(
self, ClientStorage, factory
self, ClientStorage, factory, *_
):
client = ssl_client(
certificate=client_cert, key=client_key, authenticate=server_cert,
Expand Down Expand Up @@ -320,7 +327,10 @@ def create_server(**ssl_settings):


def test_suite():
return unittest.makeSuite(SSLConfigTest)
return unittest.TestSuite((
unittest.makeSuite(SSLConfigTest),
unittest.makeSuite(SSLConfigTestMockiavellian),
))

# Helpers for other tests:

Expand Down

0 comments on commit 9b42191

Please sign in to comment.