Skip to content
Snippets Groups Projects
test_ims_worker.py 1.62 KiB
Newer Older
Robert Latta's avatar
Robert Latta committed
import os
import re

from inventory_provider.tasks.ims_worker import export_data_for_otrs, OTRSFiles


def test_otrs_exports(data_config_filename, data_config, mocker):
    os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME'] = data_config_filename
    otrs_config = data_config["otrs-export"]
    mocked_writer = \
        mocker.patch('inventory_provider.tasks.ims_worker.csv.writer')
    mocked_row_writer = mocked_writer.return_value.writerows
    mocked_run = mocker.patch(
        'inventory_provider.tasks.ims_worker.subprocess.run')
    mocker.patch(
        'inventory_provider.tasks.ims_worker.ims_data.otrs_get_customer_company_rows',  # noqa
        return_value=[[1, 2, 3, 4], [5, 6, 7, 8]]
    )
    mocker.patch(
        'inventory_provider.tasks.ims_worker.ims_data.otrs_get_customer_users_rows',  # noqa
        return_value=[[9, 10, 11, 12], [13, 14, 15, 16]]
    )

    export_data_for_otrs(OTRSFiles.CUSTOMER_COMPANIES)
    mocked_row_writer.assert_called_with([[1, 2, 3, 4], [5, 6, 7, 8]])

    export_data_for_otrs(OTRSFiles.CUSTOMER_USERS)
    mocked_row_writer.assert_called_with([[9, 10, 11, 12], [13, 14, 15, 16]])

    export_data_for_otrs()
    assert mocked_row_writer.call_count == 4

    args, kwargs = mocked_run.call_args
    called_with = args[0]

    t = r'^rsync -aP --rsh="ssh -l {user} -p 22 -i {key_file} -o \'UserKnownHostsFile {known_hosts}\'" /\w+/\w+/\* {destination}$'  # noqa
Robert Latta's avatar
Robert Latta committed

    p = t.format(
        user=otrs_config['username'],
        key_file=otrs_config['private-key'],
        destination=otrs_config['destination'],
        known_hosts=otrs_config['known-hosts']
    )
    assert bool(re.match(p, called_with))