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)
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
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
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"}
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, )
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"}
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))