Files
cloudron-box/src/routes/test/eventlog-test.js

124 lines
4.6 KiB
JavaScript
Raw Normal View History

2016-05-02 14:54:25 -07:00
/* jslint node:true */
/* global it:false */
/* global describe:false */
/* global before:false */
/* global after:false */
'use strict';
2021-06-01 09:35:20 -07:00
const async = require('async'),
common = require('./common.js'),
eventlog = require('../../eventlog.js'),
2016-05-02 14:54:25 -07:00
expect = require('expect.js'),
2021-06-01 09:35:20 -07:00
superagent = require('superagent');
2016-05-02 14:54:25 -07:00
describe('Eventlog API', function () {
2021-06-01 09:35:20 -07:00
const { setup, cleanup, serverUrl, owner, user } = common;
const EVENT_0 = {
id: null,
action: 'foobaraction',
source: {ip: '127.0.0.1' },
data: { something: 'is there' }
};
before(function (done) {
async.series([
setup,
async () => { EVENT_0.id = await eventlog.add(EVENT_0.action, EVENT_0.source, EVENT_0.data); },
], done);
});
2016-05-02 14:54:25 -07:00
after(cleanup);
describe('get', function () {
2021-06-01 09:35:20 -07:00
it('fails due to wrong token', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog/someid`)
2021-06-01 09:35:20 -07:00
.query({ access_token: 'badtoken' })
.ok(() => true);
expect(response.statusCode).to.be(401);
});
2021-06-01 09:35:20 -07:00
it('fails for non-admin', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog/someid`)
2021-06-01 09:35:20 -07:00
.query({ access_token: user.token })
.ok(() => true);
expect(response.statusCode).to.equal(403);
});
2021-06-01 09:35:20 -07:00
it('fails if not exists', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog/someid`)
2021-06-01 09:35:20 -07:00
.query({ access_token: owner.token })
.ok(() => true);
2021-06-01 09:35:20 -07:00
expect(response.statusCode).to.equal(404);
});
2021-06-01 09:35:20 -07:00
it('succeeds for admin', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog/${EVENT_0.id}`)
2021-06-01 09:35:20 -07:00
.query({ access_token: owner.token })
.ok(() => true);
2021-06-01 09:35:20 -07:00
expect(response.statusCode).to.equal(200);
delete response.body.event.creationTime;
expect(response.body.event).to.eql(EVENT_0);
});
});
describe('list', function () {
2021-06-01 09:35:20 -07:00
it('fails due to wrong token', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog`)
2021-06-01 09:35:20 -07:00
.query({ access_token: 'badtoken' })
.ok(() => true);
expect(response.statusCode).to.equal(401);
2016-05-02 14:54:25 -07:00
});
2021-06-01 09:35:20 -07:00
it('fails for non-admin', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog`)
2021-06-01 09:35:20 -07:00
.query({ access_token: user.token, page: 1, per_page: 10 })
.ok(() => true);
2016-05-02 14:54:25 -07:00
2021-06-01 09:35:20 -07:00
expect(response.statusCode).to.equal(403);
2016-05-02 14:54:25 -07:00
});
2021-06-01 09:35:20 -07:00
it('succeeds for admin', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog`)
2021-06-01 09:35:20 -07:00
.query({ access_token: owner.token, page: 1, per_page: 10 });
2016-05-02 14:54:25 -07:00
2021-06-01 09:35:20 -07:00
expect(response.statusCode).to.equal(200);
expect(response.body.eventlogs.length >= 2).to.be.ok(); // activate, user.add
2016-05-02 14:54:25 -07:00
});
2021-06-01 09:35:20 -07:00
it('succeeds with action', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog`)
2021-06-01 09:35:20 -07:00
.query({ access_token: owner.token, page: 1, per_page: 10, action: 'cloudron.activate' });
2021-06-01 09:35:20 -07:00
expect(response.statusCode).to.equal(200);
expect(response.body.eventlogs.length).to.equal(1);
});
2021-06-01 09:35:20 -07:00
it('succeeds with actions', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog`)
2021-06-01 09:35:20 -07:00
.query({ access_token: owner.token, page: 1, per_page: 10, actions: 'cloudron.activate, user.add' });
2021-06-01 09:35:20 -07:00
expect(response.statusCode).to.equal(200);
expect(response.body.eventlogs.length).to.equal(4);
});
2021-06-01 09:35:20 -07:00
it('succeeds with search', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog`)
2021-06-01 09:35:20 -07:00
.query({ access_token: owner.token, page: 1, per_page: 10, search: owner.email });
2021-06-01 09:35:20 -07:00
expect(response.statusCode).to.equal(200);
expect(response.body.eventlogs.length).to.equal(1);
});
2021-06-01 09:35:20 -07:00
it('succeeds with search and actions', async function () {
2023-08-04 12:46:54 +05:30
const response = await superagent.get(`${serverUrl}/api/v1/eventlog`)
2021-06-01 09:35:20 -07:00
.query({ access_token: owner.token, page: 1, per_page: 10, search: owner.email, actions: 'cloudron.activate' });
2021-06-01 09:35:20 -07:00
expect(response.statusCode).to.equal(200);
expect(response.body.eventlogs.length).to.equal(0);
});
2016-05-02 14:54:25 -07:00
});
});