Exemple #1
0
def test_sendmail_failure():
    message = queuelib.Message(
        args=['foo', 'bar'],
        message='Sophie is cute',
    )
    sendmail = queuelib.Sendmail('sendmail')
    with mock.patch('subprocess.run') as run:
        run.side_effect = subprocess.CalledProcessError(1, 'sendmail')
        with pytest.raises(queuelib.SendmailError):
            sendmail(message)
Exemple #2
0
def test_sender_send_error(queue, sendmail):
    sendmail.side_effect = queuelib.SendmailError
    sender = queuelib.QueueSender(queue=queue, sendmail=sendmail)
    message = queuelib.Message(
        args=['foo'],
        message='Sophie is cute.',
    )
    queue['sophie'] = message
    sender.send('sophie')
    assert 'sophie' in queue
Exemple #3
0
def test_sender_send(queue, sendmail):
    sender = queuelib.QueueSender(queue=queue, sendmail=sendmail)
    message = queuelib.Message(
        args=['foo'],
        message='Sophie is cute.',
    )
    queue['sophie'] = message
    sender.send('sophie')
    assert len(sendmail.call_args_list) == 1
    assert sendmail.call_args == mock.call(message)
    assert 'sophie' not in queue
Exemple #4
0
def test_queue_setitem(tmpdir):
    (tmpdir / 'sophie'
     ).write_text('{"args": ["foo", "bar"], "message": "Sophie is cute"}')
    queue = queuelib.Queue(tmpdir)
    message = queuelib.Message(
        args=['foo', 'bar'],
        message='Sophie is cute',
    )
    queue['sophie'] = message
    with (tmpdir / 'sophie').open() as file:
        got = json.load(file)
    assert got == {"args": ["foo", "bar"], "message": "Sophie is cute"}
Exemple #5
0
def test_sendmail():
    message = queuelib.Message(
        args=['foo', 'bar'],
        message='Sophie is cute',
    )
    sendmail = queuelib.Sendmail('sendmail')
    with mock.patch('subprocess.run') as run:
        sendmail(message)
    assert run.called_once_with(
        ['sendmail', 'foo', 'bar'],
        input=b'Sophie is cute',
        check=True,
    )
Exemple #6
0
def test_queue_add(tmpdir):
    queue = queuelib.Queue(tmpdir)
    message = queuelib.Message(
        args=['foo', 'bar'],
        message='Sophie is cute',
    )
    with mock.patch.object(type(message),
                           'key',
                           new_callable=mock.PropertyMock) as key_mock:
        key_mock.return_value = 'message_key'
        got = queue.add(message)
    assert got == 'message_key'
    with (tmpdir / 'message_key').open() as file:
        got = json.load(file)
    assert got == {"args": ["foo", "bar"], "message": "Sophie is cute"}
Exemple #7
0
def main():
    _setup_logging()

    parser = argparse.ArgumentParser(add_help=False)
    parser.add_argument('--help', action='store_true', help='Print help.')
    parser.add_argument('--manage',
                        nargs=1,
                        choices=_COMMANDS.keys(),
                        help='Queue management.')
    args, extra_args = parser.parse_known_args()

    if args.help:
        parser.print_help()
        sys.exit(0)

    QUEUE_DIR.mkdir(parents=True, exist_ok=True)

    if args.manage:
        func = _COMMANDS[args.manage[0]]
        func(*extra_args)
    else:
        message = sys.stdin.read()
        queue = _get_queue()
        queue.add(queuelib.Message(args=extra_args, message=message))