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 _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 _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]