def test_missing_args(capsys):
    with with_scriptname('add_crashid_to_queue'):
        # Make sure that running main with no args causes the script to exit with exit_code 2
        with pytest.raises(SystemExit) as exc_info:
            main([])
        assert exc_info.exconly() == 'SystemExit: 2'

        # Make sure it prints some stuff to stdout
        out, err = capsys.readouterr()
        usage_text = (
            'usage: add_crashid_to_queue [-h] queue [crashid [crashid ...]]\n'
            'add_crashid_to_queue: error: too few arguments\n')
        assert err == usage_text
def test_missing_args(capsys):
    with with_scriptname('add_crashid_to_queue'):
        # Make sure that running main with no args causes the script to exit with exit_code 2
        with pytest.raises(SystemExit) as exc_info:
            main([])
        assert exc_info.exconly() == 'SystemExit: 2'

        # Make sure it prints some stuff to stdout
        out, err = capsys.readouterr()
        usage_text = (
            'usage: add_crashid_to_queue [-h] queue [crashid [crashid ...]]\n'
            'add_crashid_to_queue: error: the following arguments are required: queue, crashid\n'
        )
        assert err in usage_text
def test_publish(capsys):
    pika_path = 'socorro.scripts.add_crashid_to_queue.pika'
    with patch(pika_path) as mock_pika_module:
        conn = MagicMock()
        mock_pika_module.BlockingConnection.return_value = conn

        channel = MagicMock()
        conn.channel.return_value = channel

        crash_id = create_new_ooid()
        exit_code = main(['socorro.normal', crash_id])
        assert exit_code == 0

        # Assert the connection was created correctly
        assert mock_pika_module.ConnectionParameters.call_count == 1
        kwargs = mock_pika_module.ConnectionParameters.mock_calls[0][2]
        # FIXME(willkg): a better way might be to mock os.environ and then provide values that we
        # can assert with more confidence here
        assert kwargs['host'] == os.environ['resource.rabbitmq.host']
        assert kwargs['port'] == int(os.environ.get('resource.rabbitmq.port', '5672'))
        assert kwargs['virtual_host'] == os.environ['resource.rabbitmq.virtual_host']

        # Assert there was one call to basic_publish and check the important arguments which are
        # passed as kwargs
        assert channel.basic_publish.call_count == 1
        args, kwargs = channel.basic_publish.call_args

        assert kwargs['routing_key'] == 'socorro.normal'
        assert kwargs['body'] == crash_id
def test_publish(capsys):
    pika_path = 'socorro.scripts.add_crashid_to_queue.pika'
    with patch(pika_path) as mock_pika_module:
        conn = MagicMock()
        mock_pika_module.BlockingConnection.return_value = conn

        channel = MagicMock()
        conn.channel.return_value = channel

        crash_id = create_new_ooid()
        exit_code = main(['socorro.normal', crash_id])
        assert exit_code == 0

        # Assert the connection was created correctly
        assert mock_pika_module.ConnectionParameters.call_count == 1
        kwargs = mock_pika_module.ConnectionParameters.mock_calls[0][2]
        # FIXME(willkg): a better way might be to mock os.environ and then provide values that we
        # can assert with more confidence here
        assert kwargs['host'] == os.environ['resource.rabbitmq.host']
        assert kwargs['port'] == int(
            os.environ.get('resource.rabbitmq.port', '5672'))
        assert kwargs['virtual_host'] == os.environ[
            'resource.rabbitmq.virtual_host']

        # Assert there was one call to basic_publish and check the important arguments which are
        # passed as kwargs
        assert channel.basic_publish.call_count == 1
        args, kwargs = channel.basic_publish.call_args

        assert kwargs['routing_key'] == 'socorro.normal'
        assert kwargs['body'] == crash_id
#!/usr/bin/env python

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# See socorro/scripts/add_crashid_to_queue.py

import sys

from socorro.scripts import add_crashid_to_queue

if __name__ == '__main__':
    sys.exit(add_crashid_to_queue.main(sys.argv[1:]))
def test_bad_crashid(capsys):
    exit_code = main(['socorro.normal', 'badcrashid'])
    assert exit_code == 1

    out, err = capsys.readouterr()
    assert out == 'Crash id "badcrashid" is not valid. Exiting.\n'
def test_bad_crashid(capsys):
    exit_code = main(['socorro.normal', 'badcrashid'])
    assert exit_code == 1

    out, err = capsys.readouterr()
    assert out == 'Crash id "badcrashid" is not valid. Exiting.\n'