Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
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())
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
def test_create_ipv6_socket_fails():
    with mock.patch('socket.socket.bind', side_effect=OSError), \
            pytest.raises(BlackholeRuntimeException):
        _socket('::', 25, socket.AF_INET)