Skip to content
Snippets Groups Projects
test_update.py 3.13 KiB
Newer Older
Bjarke Madsen's avatar
Bjarke Madsen committed
import responses
import json

DEFAULT_REQUEST_HEADERS = {
    "Content-type": "application/json",
    "Accept": ["application/json"]
}


@responses.activate
def test_provision(data_config, mocker, client):

    TEST_DATASOURCE = [{
        "name": "brian-influx-datasource",
        "type": "influxdb",
        "access": "proxy",
        "url": "http://test-brian-datasource.geant.org:8086",
        "database": "test-db",
        "basicAuth": False,
        "isDefault": True,
        "readOnly": False
    }]

    PROVISIONED_ORGANIZATION = {
        'name': data_config['organizations'][0],
        'id': 0
    }

    EXISTING_ORGS = [{'name': org, 'id': i + 1}
                     for i, org in enumerate(data_config['organizations'][1:])]

    _mocked_get_organizations = mocker.patch(
        'brian_dashboard_manager.grafana.provision.get_organizations')
    # all organizations are provisioned except the first one.
    _mocked_get_organizations.return_value = EXISTING_ORGS.copy()

    _mocked_create_organization = mocker.patch(
        'brian_dashboard_manager.grafana.provision.create_organization')

    # spoof creating first organization
    _mocked_create_organization.return_value = PROVISIONED_ORGANIZATION

    _mocked_delete_expired_api_tokens = mocker.patch(
        'brian_dashboard_manager.grafana.provision.delete_expired_api_tokens')
    # we dont care about this, , tested separately
    _mocked_delete_expired_api_tokens.return_value = None

    _mocked_create_api_token = mocker.patch(
        'brian_dashboard_manager.grafana.provision.create_api_token')
    _mocked_create_api_token.return_value = {
        'key': 'testtoken', 'id': 0}  # api token

Bjarke Madsen's avatar
Bjarke Madsen committed
    _mocked_get_missing_ds_defs = mocker.patch(
        'brian_dashboard_manager.grafana.provision.' +
        'get_missing_datasource_definitions')
    _mocked_get_missing_ds_defs.return_value = TEST_DATASOURCE
Bjarke Madsen's avatar
Bjarke Madsen committed

    _mocked_create_datasource = mocker.patch(
        'brian_dashboard_manager.grafana.provision.create_datasource')
    # we dont care about this, just mark it created
    _mocked_create_datasource.return_value = True

    _mocked_get_dashboard_definitions = mocker.patch(
        'brian_dashboard_manager.grafana.provision.get_dashboard_definitions')

    UID = 1
    ID = 1
    VERSION = 1
    TITLE = 'testdashboard'
    dashboard = {'id': ID, 'uid': UID, 'title': TITLE, 'version': VERSION}
    _mocked_get_dashboard_definitions.return_value = [
        dashboard  # test dashboard
    ]

    _mocked_create_dashboard = mocker.patch(
        'brian_dashboard_manager.grafana.provision.create_dashboard')
    # we dont care about this, just mark it created
    # we dont care about this, tested separately
    _mocked_create_dashboard.return_value = None

    _mocked_delete_api_token = mocker.patch(
        'brian_dashboard_manager.grafana.provision.delete_api_token')
    # we dont care about this, tested separately
    _mocked_delete_api_token.return_value = None
    response = client.get('/update/', headers=DEFAULT_REQUEST_HEADERS)
    assert response.status_code == 200
    data = json.loads(response.data.decode('utf-8'))['data']
    assert data == EXISTING_ORGS + [PROVISIONED_ORGANIZATION]