mirror of
https://github.com/grafana/grafana.git
synced 2024-11-30 12:44:10 -06:00
8e5000fb31
ref #11433
124 lines
2.7 KiB
TypeScript
124 lines
2.7 KiB
TypeScript
import client from './client';
|
|
import _ from 'lodash;';
|
|
|
|
export const editor = {
|
|
email: 'api-test-editor@grafana.com',
|
|
login: 'api-test-editor',
|
|
password: 'password',
|
|
name: 'Api Test Editor',
|
|
};
|
|
|
|
export const admin = {
|
|
email: 'api-test-admin@grafana.com',
|
|
login: 'api-test-admin',
|
|
password: 'password',
|
|
name: 'Api Test Super',
|
|
};
|
|
|
|
export const viewer = {
|
|
email: 'api-test-viewer@grafana.com',
|
|
login: 'api-test-viewer',
|
|
password: 'password',
|
|
name: 'Api Test Viewer',
|
|
};
|
|
|
|
export async function expectError(callback) {
|
|
try {
|
|
let rsp = await callback();
|
|
return rsp;
|
|
} catch (err) {
|
|
return err;
|
|
}
|
|
|
|
return rsp;
|
|
}
|
|
|
|
// deletes org if it's already there
|
|
export async function getOrg(orgName) {
|
|
try {
|
|
const rsp = await client.get(`/api/orgs/name/${orgName}`);
|
|
await client.delete(`/api/orgs/${rsp.data.id}`);
|
|
} catch {}
|
|
|
|
const rsp = await client.post(`/api/orgs`, { name: orgName });
|
|
return { name: orgName, id: rsp.data.orgId };
|
|
}
|
|
|
|
export async function getUser(user) {
|
|
const search = await client.get('/api/users/search', {
|
|
params: { query: user.login },
|
|
});
|
|
|
|
if (search.data.totalCount === 1) {
|
|
user.id = search.data.users[0].id;
|
|
return user;
|
|
}
|
|
|
|
const rsp = await client.post('/api/admin/users', user);
|
|
user.id = rsp.data.id;
|
|
|
|
return user;
|
|
}
|
|
|
|
export async function addUserToOrg(org, user, role) {
|
|
const rsp = await client.post(`/api/orgs/${org.id}/users`, {
|
|
loginOrEmail: user.login,
|
|
role: role,
|
|
});
|
|
|
|
return rsp.data;
|
|
}
|
|
|
|
export async function clearState() {
|
|
const admin = await getUser(adminUser);
|
|
const rsp = await client.delete(`/api/admin/users/${admin.id}`);
|
|
return rsp.data;
|
|
}
|
|
|
|
export async function setUsingOrg(user, org) {
|
|
await client.callAs(user).post(`/api/user/using/${org.id}`);
|
|
}
|
|
|
|
export async function createDashboard(user, dashboard) {
|
|
const rsp = await client.callAs(user).post(`/api/dashboards/db`, {
|
|
dashboard: dashboard,
|
|
overwrite: true,
|
|
});
|
|
dashboard.id = rsp.data.id;
|
|
dashboard.url = rsp.data.url;
|
|
|
|
return dashboard;
|
|
}
|
|
|
|
export async function createFolder(user, folder) {
|
|
const rsp = await client.callAs(user).post(`/api/folders`, {
|
|
uid: folder.uid,
|
|
title: folder.title,
|
|
overwrite: true,
|
|
});
|
|
folder.id = rsp.id;
|
|
folder.url = rsp.url;
|
|
|
|
return folder;
|
|
}
|
|
|
|
export async function ensureState(state) {
|
|
const org = await getOrg(state.orgName);
|
|
|
|
for (let orgUser of state.users) {
|
|
const user = await getUser(orgUser.user);
|
|
await addUserToOrg(org, user, orgUser.role);
|
|
await setUsingOrg(user, org);
|
|
}
|
|
|
|
for (let dashboard of state.dashboards || []) {
|
|
await createDashboard(state.admin, dashboard);
|
|
}
|
|
|
|
for (let folder of state.folders || []) {
|
|
await createFolder(state.admin, folder);
|
|
}
|
|
|
|
return state;
|
|
}
|