setup.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import client from './client';
  2. import _ from 'lodash;';
  3. export const editor = {
  4. email: 'api-test-editor@grafana.com',
  5. login: 'api-test-editor',
  6. password: 'password',
  7. name: 'Api Test Editor',
  8. };
  9. export const admin = {
  10. email: 'api-test-admin@grafana.com',
  11. login: 'api-test-admin',
  12. password: 'password',
  13. name: 'Api Test Super',
  14. };
  15. export const viewer = {
  16. email: 'api-test-viewer@grafana.com',
  17. login: 'api-test-viewer',
  18. password: 'password',
  19. name: 'Api Test Viewer',
  20. };
  21. export async function expectError(callback) {
  22. try {
  23. let rsp = await callback();
  24. return rsp;
  25. } catch (err) {
  26. return err;
  27. }
  28. return rsp;
  29. }
  30. // deletes org if it's already there
  31. export async function getOrg(orgName) {
  32. try {
  33. const rsp = await client.get(`/api/orgs/name/${orgName}`);
  34. await client.delete(`/api/orgs/${rsp.data.id}`);
  35. } catch {}
  36. const rsp = await client.post(`/api/orgs`, { name: orgName });
  37. return { name: orgName, id: rsp.data.orgId };
  38. }
  39. export async function getUser(user) {
  40. const search = await client.get('/api/users/search', {
  41. params: { query: user.login },
  42. });
  43. if (search.data.totalCount === 1) {
  44. user.id = search.data.users[0].id;
  45. return user;
  46. }
  47. const rsp = await client.post('/api/admin/users', user);
  48. user.id = rsp.data.id;
  49. return user;
  50. }
  51. export async function addUserToOrg(org, user, role) {
  52. const rsp = await client.post(`/api/orgs/${org.id}/users`, {
  53. loginOrEmail: user.login,
  54. role: role,
  55. });
  56. return rsp.data;
  57. }
  58. export async function clearState() {
  59. const admin = await getUser(adminUser);
  60. const rsp = await client.delete(`/api/admin/users/${admin.id}`);
  61. return rsp.data;
  62. }
  63. export async function setUsingOrg(user, org) {
  64. await client.callAs(user).post(`/api/user/using/${org.id}`);
  65. }
  66. export async function createDashboard(user, dashboard) {
  67. const rsp = await client.callAs(user).post(`/api/dashboards/db`, {
  68. dashboard: dashboard,
  69. overwrite: true,
  70. });
  71. dashboard.id = rsp.data.id;
  72. dashboard.url = rsp.data.url;
  73. return dashboard;
  74. }
  75. export async function createFolder(user, folder) {
  76. const rsp = await client.callAs(user).post(`/api/folders`, {
  77. uid: folder.uid,
  78. title: folder.title,
  79. overwrite: true,
  80. });
  81. folder.id = rsp.id;
  82. folder.url = rsp.url;
  83. return folder;
  84. }
  85. export async function ensureState(state) {
  86. const org = await getOrg(state.orgName);
  87. for (let orgUser of state.users) {
  88. const user = await getUser(orgUser.user);
  89. await addUserToOrg(org, user, orgUser.role);
  90. await setUsingOrg(user, org);
  91. }
  92. for (let dashboard of state.dashboards || []) {
  93. await createDashboard(state.admin, dashboard);
  94. }
  95. for (let folder of state.folders || []) {
  96. await createFolder(state.admin, folder);
  97. }
  98. return state;
  99. }