Example #1
0
def test_execute_report_invalid_renderer(mocker):
    config = Config()
    config.add_account(
        'VA-000-001',
        'Account 1',
        'ApiKey XXXX:YYYY',
    )
    config.activate('VA-000-001')

    mocker.patch('connect.cli.plugins.report.helpers.load_repo')

    mocker.patch(
        'connect.cli.plugins.report.helpers.get_report_by_id',
        return_value=mocker.MagicMock(
            renderers=[
                RendererDefinition('path', 'pdf', 'pdf', 'test'),
            ],
            audience=['vendor'],
        ),
    )

    with pytest.raises(ClickException) as cv:
        execute_report(config, 'root_dir', 'local_id', 'out_file', 'out_format')

    assert str(cv.value) == 'The format out_format is not available for report local_id'
Example #2
0
def test_execute_report_fail(mocker):
    mocker.patch('connect.cli.plugins.report.helpers.get_report_inputs')
    mocker.patch('connect.cli.plugins.report.helpers.get_renderer')
    ep_mock = mocker.MagicMock()
    mocker.patch(
        'connect.cli.plugins.report.helpers.get_report_entrypoint',
        return_value=ep_mock,
    )
    ep_mock.side_effect = Exception('this is an error')
    mocked_handle_exc = mocker.patch(
        'connect.cli.plugins.report.helpers.handle_report_exception')
    config = Config()
    config.add_account(
        'VA-000',
        'Account 1',
        'ApiKey XXXX:YYYY',
    )
    config.activate('VA-000')

    execute_report(
        config,
        './tests/fixtures/reports/basic_report',
        'entrypoint',
        'out_file',
        None,
    )

    mocked_handle_exc.assert_called_once()
Example #3
0
def cmd_execute_report(config, reports_dir, report_id, output_file,
                       output_format):
    if not output_file:
        output_file = os.path.join(
            os.getcwd(),
            f'report_{report_id}_{datetime.now().strftime("%Y%m%d_%H%M")}',
        )
    execute_report(config, reports_dir, report_id, output_file, output_format)
Example #4
0
def test_execute_report_v2(mocker):
    report_data = [('a', 'b', 'c')]
    param_inputs = {'param_id': 'param_value'}
    mocked_input = mocker.patch(
        'connect.cli.plugins.report.helpers.get_report_inputs',
        return_value=param_inputs,
    )
    ex_ctx_callback = mocker.MagicMock()
    renderer_mock = mocker.MagicMock()
    renderer_mock.type = 'pdf'
    renderer_mock.render.return_value = 'outfile.pdf'
    renderer_mock.set_extra_context = ex_ctx_callback
    mocker.patch(
        'connect.cli.plugins.report.helpers.get_renderer',
        return_value=renderer_mock,
    )
    ep_mock = mocker.MagicMock()
    mocker.patch(
        'connect.cli.plugins.report.helpers.get_report_entrypoint',
        return_value=ep_mock,
    )
    ep_mock.return_value = report_data
    config = Config()
    config.add_account(
        'PA-000',
        'Account 1',
        'ApiKey XXXX:YYYY',
    )
    config.activate('PA-000')

    execute_report(
        config,
        './tests/fixtures/reports/report_v2',
        'test_v2',
        'out_file',
        None,
    )

    assert mocked_input.mock_calls[0].args[0] == config
    assert isinstance(mocked_input.mock_calls[0].args[1], ConnectClient)
    assert mocked_input.mock_calls[0].args[2] == []

    assert renderer_mock.render.mock_calls[0].args[0] == report_data
    assert renderer_mock.render.mock_calls[0].args[1] == 'out_file'
    assert isinstance(ep_mock.mock_calls[0].args[0], ConnectClient)
    assert ep_mock.mock_calls[0].args[1] == param_inputs
    assert isinstance(ep_mock.mock_calls[0].args[2], Progress)
    assert ep_mock.mock_calls[0].args[3] == 'pdf'
    assert ep_mock.mock_calls[0].args[4] == ex_ctx_callback
Example #5
0
def test_execute_report_invalid_account(mocker, account_id, audience, expected_error):
    config = Config()
    config.add_account(
        account_id,
        'Account 1',
        'ApiKey XXXX:YYYY',
    )
    config.activate(account_id)

    mocker.patch('connect.cli.plugins.report.helpers.load_repo')

    mocker.patch(
        'connect.cli.plugins.report.helpers.get_report_by_id',
        return_value=mocker.MagicMock(audience=[audience]),
    )

    with pytest.raises(ClickException) as cv:
        execute_report(config, 'root_dir', 'local_id', 'out_file', 'out_format')

    assert str(cv.value) == expected_error
Example #6
0
def test_execute_report_v1(mocker):
    report_data = [('a', 'b', 'c')]
    param_inputs = {'param_id': 'param_value'}
    mocked_input = mocker.patch(
        'connect.cli.plugins.report.helpers.get_report_inputs',
        return_value=param_inputs,
    )
    renderer_mock = mocker.MagicMock()
    renderer_mock.render.return_value = 'outfile.ext'
    mocker.patch(
        'connect.cli.plugins.report.helpers.get_renderer',
        return_value=renderer_mock,
    )
    ep_mock = mocker.MagicMock()
    mocker.patch(
        'connect.cli.plugins.report.helpers.get_report_entrypoint',
        return_value=ep_mock,
    )
    ep_mock.return_value = report_data
    config = Config()
    config.add_account(
        'VA-000',
        'Account 1',
        'ApiKey XXXX:YYYY',
    )
    config.activate('VA-000')

    execute_report(
        config, './tests/fixtures/reports/basic_report',
        'entrypoint', 'out_file', None,
    )

    assert mocked_input.mock_calls[0].args[0] == config
    assert isinstance(mocked_input.mock_calls[0].args[1], ConnectClient)
    assert isinstance(mocked_input.mock_calls[0].args[2], ReportDefinition)

    assert renderer_mock.render.mock_calls[0].args[0] == report_data
    assert renderer_mock.render.mock_calls[0].args[1] == 'out_file'
    assert isinstance(ep_mock.mock_calls[0].args[0], ConnectClient)
    assert ep_mock.mock_calls[0].args[1] == param_inputs
    assert isinstance(ep_mock.mock_calls[0].args[2], Progress)