Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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]