async def test_mode_and_delay_directive(event_loop, unused_tcp_port): cfile = create_config( ("listen=:{} delay=5 mode=bounce".format(unused_tcp_port),) ) conf = Config(cfile).load() sock = _socket("127.0.0.1", unused_tcp_port, socket.AF_INET) controller = Controller(sock) controller.start() conf.flags_from_listener("127.0.0.1", unused_tcp_port) host, port = sock.getsockname() with SMTP(host, port) as client: msg = [ "From: [email protected]", "To: [email protected]", "Subject: Test", "X-Blackhole-Mode: accept", "X-Blackhole-Delay: 30", "", "Testing 1, 2, 3", ] msg = "\n".join(msg) start = time.time() code, resp = client.data(msg.encode("utf-8")) stop = time.time() assert code in [450, 451, 452, 458, 521, 550, 551, 552, 553, 571] assert round(stop - start) in (4, 5, 6) controller.stop()
def __init__(self, sock=None): if sock is not None: self.sock = sock else: self.sock = _socket("127.0.0.1", 0, socket.AF_INET) self.loop = asyncio.new_event_loop() self.server = None self._thread = None
async def test_start_child_loop(event_loop): sock = _socket("127.0.0.1", 0, socket.AF_INET) socks = ({"sock": sock, "ssl": None}, ) child = Child("", "", socks, "1") child.loop = event_loop await child._start() assert len(child.servers) == 1 for server in child.servers: server.close()
async def test_start_child_loop(event_loop): sock = _socket("127.0.0.1", 0, socket.AF_INET) socks = ({"sock": sock, "ssl": None},) child = Child("", "", socks, "1") child.loop = event_loop await child._start() assert len(child.servers) == 1 for server in child.servers: server.close()
def __init__(self, sock=None, loop=None): if sock is not None: self.sock = sock else: self.sock = _socket('127.0.0.1', 0, socket.AF_INET) self.server = None self.loop = asyncio.new_event_loop() if loop is None else loop self.thread = None self._rsock, self._wsock = socket.socketpair() self.loop.add_reader(self._rsock, self._reader)
async def test__start(): sock = _socket('127.0.0.1', 0, socket.AF_INET) socks = ({'sock': sock, 'ssl': None}, ) child = Child('', '', socks, '1') loop = child.loop = asyncio.new_event_loop() await child._start() assert len(child.servers) == 1 for server in child.servers: server.close() loop.run_until_complete(server.wait_closed())
async def test_delay_directive(event_loop, unused_tcp_port): cfile = create_config(('listen=:{} delay=5'.format(unused_tcp_port), )) conf = Config(cfile).load() sock = _socket('127.0.0.1', unused_tcp_port, socket.AF_INET) controller = Controller(sock) controller.start() conf.flags_from_listener('127.0.0.1', unused_tcp_port) host, port = sock.getsockname() with SMTP(host, port) as client: msg = ['From: [email protected]', 'To: [email protected]', 'Subject: Test', 'X-Blackhole-Mode: bounce', 'X-Blackhole-Delay: 30', '', 'Testing 1, 2, 3'] msg = '\n'.join(msg) start = time.time() code, resp = client.data(msg.encode('utf-8')) stop = time.time() assert code == 250 assert round(stop - start) in (4, 5, 6) controller.stop()
def test_create_ipv4_socket_fails(): with mock.patch("socket.socket.bind", side_effect=OSError), pytest.raises( BlackholeRuntimeException ): _socket("127.0.0.1", 25, socket.AF_INET)
def test_create_ipv6_socket_fails(): with mock.patch('socket.socket.bind', side_effect=OSError), \ pytest.raises(BlackholeRuntimeException): _socket('::', 25, socket.AF_INET)