searchTestDataSetup.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import axios from 'axios';
  2. import _ from 'lodash';
  3. import { Task, TaskRunner } from './task';
  4. interface SearchTestDataSetupOptions {
  5. count: number;
  6. }
  7. const client = axios.create({
  8. baseURL: 'http://localhost:3000/api',
  9. auth: {
  10. username: 'admin',
  11. password: 'admin2',
  12. },
  13. });
  14. export async function getUser(user): Promise<any> {
  15. console.log('Creating user ' + user.name);
  16. const search = await client.get('/users/search', {
  17. params: { query: user.login },
  18. });
  19. if (search.data.totalCount === 1) {
  20. user.id = search.data.users[0].id;
  21. return user;
  22. }
  23. const rsp = await client.post('/admin/users', user);
  24. user.id = rsp.data.id;
  25. return user;
  26. }
  27. export async function getTeam(team: any): Promise<any> {
  28. // delete if exists
  29. const teams = await client.get('/teams/search');
  30. for (const existing of teams.data.teams) {
  31. if (existing.name === team.name) {
  32. console.log('Team exists, deleting');
  33. await client.delete('/teams/' + existing.id);
  34. }
  35. }
  36. console.log('Creating team ' + team.name);
  37. const teamRsp = await client.post(`/teams`, team);
  38. team.id = teamRsp.data.teamId;
  39. return team;
  40. }
  41. export async function addToTeam(team: any, user: any): Promise<any> {
  42. const members = await client.get(`/teams/${team.id}/members`);
  43. console.log(`Adding user ${user.name} to team ${team.name}`);
  44. await client.post(`/teams/${team.id}/members`, { userId: user.id });
  45. }
  46. export async function setDashboardAcl(dashboardId: any, aclList: any) {
  47. console.log('Setting Dashboard ACL ' + dashboardId);
  48. await client.post(`/dashboards/id/${dashboardId}/permissions`, { items: aclList });
  49. }
  50. const searchTestDataSetupRunnner: TaskRunner<SearchTestDataSetupOptions> = async ({ count }) => {
  51. const user1 = await getUser({
  52. name: 'searchTestUser1',
  53. email: 'searchTestUser@team.com',
  54. login: 'searchTestUser1',
  55. password: '12345',
  56. });
  57. const team1 = await getTeam({ name: 'searchTestTeam1', email: 'searchtestdata@team.com' });
  58. addToTeam(team1, user1);
  59. // create or update folder
  60. const folder: any = {
  61. uid: 'search-test-data',
  62. title: 'Search test data folder',
  63. version: 1,
  64. };
  65. try {
  66. await client.delete(`/folders/${folder.uid}`);
  67. } catch (err) {}
  68. console.log('Creating folder');
  69. const rsp = await client.post(`/folders`, folder);
  70. folder.id = rsp.data.id;
  71. folder.url = rsp.data.url;
  72. await setDashboardAcl(folder.id, []);
  73. console.log('Creating dashboards');
  74. const dashboards: any = [];
  75. for (let i = 0; i < count; i++) {
  76. const dashboard: any = {
  77. uid: 'search-test-dash-' + i.toString().padStart(5, '0'),
  78. title: 'Search test dash ' + i.toString().padStart(5, '0'),
  79. };
  80. const rsp = await client.post(`/dashboards/db`, {
  81. dashboard: dashboard,
  82. folderId: folder.id,
  83. overwrite: true,
  84. });
  85. dashboard.id = rsp.data.id;
  86. dashboard.url = rsp.data.url;
  87. console.log('Created dashboard ' + dashboard.title);
  88. dashboards.push(dashboard);
  89. await setDashboardAcl(dashboard.id, [{ userId: 0, teamId: team1.id, permission: 4 }]);
  90. }
  91. };
  92. export const searchTestDataSetupTask = new Task<SearchTestDataSetupOptions>();
  93. searchTestDataSetupTask.setName('Search test data setup');
  94. searchTestDataSetupTask.setRunner(searchTestDataSetupRunnner);