mirror of https://github.com/grafana/grafana
remove e2e-api-tests + axios dependency (#58148)
parent
0792ff8e20
commit
c1c8dc8749
@ -1,7 +0,0 @@ |
||||
import * as setup from './setup'; |
||||
|
||||
describe.skip('clear state', () => { |
||||
it('will clear state', () => { |
||||
return setup.clearState(); |
||||
}); |
||||
}); |
||||
@ -1,30 +0,0 @@ |
||||
const axios = require('axios'); |
||||
|
||||
export function getClient(options) { |
||||
return axios.create({ |
||||
baseURL: 'http://localhost:3000', |
||||
timeout: 1000, |
||||
auth: { |
||||
username: options.username, |
||||
password: options.password, |
||||
}, |
||||
}); |
||||
} |
||||
|
||||
export function getAdminClient() { |
||||
return getClient({ |
||||
username: 'admin', |
||||
password: 'admin', |
||||
}); |
||||
} |
||||
|
||||
let client = getAdminClient(); |
||||
|
||||
client.callAs = function (user) { |
||||
return getClient({ |
||||
username: user.login, |
||||
password: 'password', |
||||
}); |
||||
}; |
||||
|
||||
export default client; |
||||
@ -1,45 +0,0 @@ |
||||
import client from './client'; |
||||
import * as setup from './setup'; |
||||
|
||||
describe('/api/dashboards', () => { |
||||
let state = {}; |
||||
|
||||
beforeAll(async () => { |
||||
state = await setup.ensureState({ |
||||
orgName: 'api-test-org', |
||||
users: [ |
||||
{ user: setup.admin, role: 'Admin' }, |
||||
{ user: setup.editor, role: 'Editor' }, |
||||
{ user: setup.viewer, role: 'Viewer' }, |
||||
], |
||||
admin: setup.admin, |
||||
dashboards: [ |
||||
{ |
||||
title: 'aaa', |
||||
uid: 'aaa', |
||||
}, |
||||
{ |
||||
title: 'bbb', |
||||
uid: 'bbb', |
||||
}, |
||||
], |
||||
}); |
||||
}); |
||||
|
||||
describe('With admin user', () => { |
||||
it('can delete dashboard', async () => { |
||||
let rsp = await client.callAs(setup.admin).delete(`/api/dashboards/uid/aaa`); |
||||
expect(rsp.data.title).toBe('aaa'); |
||||
}); |
||||
}); |
||||
|
||||
describe('With viewer user', () => { |
||||
it('Cannot delete dashboard', async () => { |
||||
let rsp = await setup.expectError(() => { |
||||
return client.callAs(setup.viewer).delete(`/api/dashboards/uid/bbb`); |
||||
}); |
||||
|
||||
expect(rsp.response.status).toBe(403); |
||||
}); |
||||
}); |
||||
}); |
||||
@ -1,76 +0,0 @@ |
||||
import client from './client'; |
||||
import * as setup from './setup'; |
||||
|
||||
describe('/api/folders', () => { |
||||
beforeAll(async () => { |
||||
await setup.ensureState({ |
||||
orgName: 'api-test-org', |
||||
users: [ |
||||
{ user: setup.admin, role: 'Admin' }, |
||||
{ user: setup.editor, role: 'Editor' }, |
||||
{ user: setup.viewer, role: 'Viewer' }, |
||||
], |
||||
admin: setup.admin, |
||||
folders: [ |
||||
{ |
||||
title: 'Folder 1', |
||||
uid: 'f-01', |
||||
}, |
||||
{ |
||||
title: 'Folder 2', |
||||
uid: 'f-02', |
||||
}, |
||||
{ |
||||
title: 'Folder 3', |
||||
uid: 'f-03', |
||||
}, |
||||
], |
||||
}); |
||||
}); |
||||
|
||||
describe('With admin user', () => { |
||||
it('can delete folder', async () => { |
||||
let rsp = await client.callAs(setup.admin).delete(`/api/folders/f-01`); |
||||
expect(rsp.data.title).toBe('Folder 1'); |
||||
}); |
||||
|
||||
it('can update folder', async () => { |
||||
let rsp = await client.callAs(setup.admin).put(`/api/folders/f-02`, { |
||||
uid: 'f-02', |
||||
title: 'Folder 2 upd', |
||||
overwrite: true, |
||||
}); |
||||
expect(rsp.data.title).toBe('Folder 2 upd'); |
||||
}); |
||||
|
||||
it('can update folder uid', async () => { |
||||
let rsp = await client.callAs(setup.admin).put(`/api/folders/f-03`, { |
||||
uid: 'f-03-upd', |
||||
title: 'Folder 3 upd', |
||||
overwrite: true, |
||||
}); |
||||
expect(rsp.data.uid).toBe('f-03-upd'); |
||||
expect(rsp.data.title).toBe('Folder 3 upd'); |
||||
}); |
||||
}); |
||||
|
||||
describe('With viewer user', () => { |
||||
it('Cannot delete folder', async () => { |
||||
let rsp = await setup.expectError(() => { |
||||
return client.callAs(setup.viewer).delete(`/api/folders/f-02`); |
||||
}); |
||||
expect(rsp.response.status).toBe(403); |
||||
}); |
||||
|
||||
it('Cannot update folder', async () => { |
||||
let rsp = await setup.expectError(() => { |
||||
return client.callAs(setup.viewer).put(`/api/folders/f-02`, { |
||||
uid: 'f-02', |
||||
title: 'Folder 2 upd', |
||||
overwrite: true, |
||||
}); |
||||
}); |
||||
expect(rsp.response.status).toBe(403); |
||||
}); |
||||
}); |
||||
}); |
||||
@ -1,15 +0,0 @@ |
||||
module.exports = { |
||||
verbose: true, |
||||
globals: { |
||||
'ts-jest': { |
||||
tsConfigFile: 'tsconfig.json', |
||||
}, |
||||
}, |
||||
transform: { |
||||
'^.+\\.tsx?$': '<rootDir>/../../node_modules/ts-jest/preprocessor.js', |
||||
}, |
||||
moduleDirectories: ['node_modules'], |
||||
testRegex: '(\\.|/)(test)\\.ts$', |
||||
testEnvironment: 'node', |
||||
moduleFileExtensions: ['ts', 'js', 'json'], |
||||
}; |
||||
@ -1,27 +0,0 @@ |
||||
import client from './client'; |
||||
import * as setup from './setup'; |
||||
|
||||
describe('GET /api/search', () => { |
||||
const state = {}; |
||||
|
||||
beforeAll(async () => { |
||||
state = await setup.ensureState({ |
||||
orgName: 'api-test-org', |
||||
users: [{ user: setup.admin, role: 'Admin' }], |
||||
admin: setup.admin, |
||||
dashboards: [ |
||||
{ |
||||
title: 'Dashboard in root no permissions', |
||||
uid: 'AAA', |
||||
}, |
||||
], |
||||
}); |
||||
}); |
||||
|
||||
describe('With admin user', () => { |
||||
it('should return all dashboards', async () => { |
||||
let rsp = await client.callAs(state.admin).get('/api/search'); |
||||
expect(rsp.data).toHaveLength(1); |
||||
}); |
||||
}); |
||||
}); |
||||
@ -1,123 +0,0 @@ |
||||
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; |
||||
} |
||||
@ -1,21 +0,0 @@ |
||||
{ |
||||
"compilerOptions": { |
||||
"allowSyntheticDefaultImports": true, |
||||
"declaration": false, |
||||
"emitDecoratorMetadata": false, |
||||
"experimentalDecorators": true, |
||||
"inlineSourceMap": false, |
||||
"lib": ["es6"], |
||||
"module": "commonjs", |
||||
"moduleResolution": "node", |
||||
"noEmitOnError": false, |
||||
"noImplicitAny": false, |
||||
"noImplicitReturns": true, |
||||
"noImplicitThis": false, |
||||
"noImplicitUseStrict": false, |
||||
"noUnusedLocals": true, |
||||
"sourceMap": true, |
||||
"target": "es6" |
||||
}, |
||||
"include": ["*.ts", "**/*.ts"] |
||||
} |
||||
@ -1,22 +0,0 @@ |
||||
import client from './client'; |
||||
import * as setup from './setup'; |
||||
|
||||
describe('GET /api/user', () => { |
||||
it('should return current authed user', async () => { |
||||
let rsp = await client.get('/api/user'); |
||||
expect(rsp.data.login).toBe('admin'); |
||||
}); |
||||
}); |
||||
|
||||
describe('PUT /api/user', () => { |
||||
it('should update current authed user', async () => { |
||||
const user = await setup.getUser(setup.editor); |
||||
user.name = 'Updated via test'; |
||||
|
||||
const rsp = await client.callAs(user).put('/api/user', user); |
||||
expect(rsp.data.message).toBe('User updated'); |
||||
|
||||
const updated = await client.callAs(user).get('/api/user'); |
||||
expect(updated.data.name).toBe('Updated via test'); |
||||
}); |
||||
}); |
||||
Loading…
Reference in new issue