mirror of
https://github.com/nodemailer/wildduck.git
synced 2025-01-08 00:48:52 +08:00
301 lines
11 KiB
JavaScript
301 lines
11 KiB
JavaScript
/*eslint no-unused-expressions: 0, prefer-arrow-callback: 0, no-console:0 */
|
|
|
|
/* globals before: false, after: false */
|
|
|
|
'use strict';
|
|
|
|
const supertest = require('supertest');
|
|
const chai = require('chai');
|
|
|
|
const expect = chai.expect;
|
|
chai.config.includeStack = true;
|
|
const config = require('wild-config');
|
|
|
|
const server = supertest.agent(`http://127.0.0.1:${config.api.port}`);
|
|
|
|
describe('API Filters', function () {
|
|
this.timeout(10000); // eslint-disable-line no-invalid-this
|
|
|
|
let user, user2;
|
|
|
|
before(async () => {
|
|
// ensure that we have an existing user account
|
|
const response = await server
|
|
.post('/users')
|
|
.send({
|
|
username: 'filteruser',
|
|
password: 'secretvalue',
|
|
address: 'filteruser.addrtest@example.com',
|
|
name: 'Filter User'
|
|
})
|
|
.expect(200);
|
|
expect(response.body.success).to.be.true;
|
|
expect(response.body.id).to.exist;
|
|
|
|
user = response.body.id;
|
|
|
|
const response2 = await server
|
|
.post('/users')
|
|
.send({
|
|
username: 'filteruser2',
|
|
password: 'secretvalue',
|
|
address: 'filteruser2.addrtest@example.com',
|
|
name: 'Filter User 2'
|
|
})
|
|
.expect(200);
|
|
expect(response2.body.success).to.be.true;
|
|
expect(response2.body.id).to.exist;
|
|
|
|
user2 = response2.body.id;
|
|
});
|
|
|
|
after(async () => {
|
|
if (!user) {
|
|
return;
|
|
}
|
|
|
|
const response = await server.delete(`/users/${user}`).expect(200);
|
|
expect(response.body.success).to.be.true;
|
|
|
|
user = false;
|
|
});
|
|
|
|
it('should POST /users/{user}/filters', async () => {
|
|
const response = await server
|
|
.post(`/users/${user}/filters`)
|
|
.send({
|
|
name: 'test filter 1',
|
|
query: {
|
|
from: 'andris1'
|
|
},
|
|
action: {
|
|
seen: true
|
|
}
|
|
})
|
|
.expect(200);
|
|
expect(response.body.success).to.be.true;
|
|
|
|
const response2 = await server
|
|
.post(`/users/${user2}/filters`)
|
|
.send({
|
|
name: 'test filter 2',
|
|
query: {
|
|
from: 'andris2'
|
|
},
|
|
action: {
|
|
seen: true
|
|
}
|
|
})
|
|
.expect(200);
|
|
expect(response2.body.success).to.be.true;
|
|
|
|
const response3 = await server
|
|
.post(`/users/${user}/filters`)
|
|
.send({
|
|
name: 'test filter 3',
|
|
query: {
|
|
from: 'andris'
|
|
},
|
|
action: {
|
|
seen: false
|
|
}
|
|
})
|
|
.expect(200);
|
|
|
|
expect(response3.body.success).to.be.true;
|
|
});
|
|
|
|
it('should GET /filters', async () => {
|
|
const filterListResponse = await server.get(`/filters`).expect(200);
|
|
expect(filterListResponse.body.success).to.be.true;
|
|
expect(filterListResponse.body.total).to.equal(3);
|
|
});
|
|
|
|
it('should GET /filters with a user token', async () => {
|
|
const authResponse = await server
|
|
.post('/authenticate')
|
|
.send({
|
|
username: 'filteruser',
|
|
password: 'secretvalue',
|
|
token: true
|
|
})
|
|
.expect(200);
|
|
|
|
expect(authResponse.body.success).to.be.true;
|
|
expect(authResponse.body.token).to.exist;
|
|
|
|
let token = authResponse.body.token;
|
|
|
|
const userListResponse = await server.get(`/filters?accessToken=${token}`).expect(200);
|
|
expect(userListResponse.body.success).to.be.true;
|
|
|
|
expect(userListResponse.body.total).to.equal(2);
|
|
});
|
|
|
|
it('should GET /users/{user}/filters', async () => {
|
|
const filterListResponse = await server.get(`/users/${user}/filters`).expect(200);
|
|
expect(filterListResponse.body.success).to.be.true;
|
|
|
|
expect(filterListResponse.body.results.length).to.equal(2);
|
|
});
|
|
|
|
it('should PUT /users/{user}/filters/{filter}', async () => {
|
|
let filterListResponse = await server.get(`/users/${user}/filters`).expect(200);
|
|
expect(filterListResponse.body.success).to.be.true;
|
|
let filters = filterListResponse.body.results;
|
|
let filter = filters[0].id;
|
|
|
|
expect(filters[0].disabled).to.equal(false);
|
|
|
|
const response = await server
|
|
.put(`/users/${user}/filters/${filter}`)
|
|
.send({
|
|
disabled: true
|
|
})
|
|
.expect(200);
|
|
expect(response.body.success).to.be.true;
|
|
|
|
filterListResponse = await server.get(`/users/${user}/filters`).expect(200);
|
|
expect(filterListResponse.body.success).to.be.true;
|
|
|
|
expect(filterListResponse.body.results.length).to.equal(2);
|
|
|
|
expect(filterListResponse.body.results.find(f => f.id === filter).disabled).to.equal(true);
|
|
});
|
|
|
|
it('should DELETE /users/{user}/filters/{filter}', async () => {
|
|
let filterListResponse = await server.get(`/users/${user}/filters`).expect(200);
|
|
expect(filterListResponse.body.success).to.be.true;
|
|
let filters = filterListResponse.body.results;
|
|
let filter = filters[0].id;
|
|
|
|
const response = await server.delete(`/users/${user}/filters/${filter}`).expect(200);
|
|
expect(response.body.success).to.be.true;
|
|
|
|
filterListResponse = await server.get(`/users/${user}/filters`).expect(200);
|
|
expect(filterListResponse.body.success).to.be.true;
|
|
|
|
expect(filterListResponse.body.results.length).to.equal(1);
|
|
});
|
|
|
|
describe('Filter metaData', function () {
|
|
let metaDataFilter;
|
|
|
|
it('should POST /users/{user}/filters', async () => {
|
|
const response = await server
|
|
.post(`/users/${user}/filters`)
|
|
.send({
|
|
name: 'test filter 4',
|
|
query: {
|
|
from: 'andris'
|
|
},
|
|
action: {
|
|
seen: true
|
|
},
|
|
metaData: '{"hello": "world"}'
|
|
})
|
|
.expect(200);
|
|
expect(response.body.success).to.be.true;
|
|
metaDataFilter = response.body.id;
|
|
|
|
const filterDataResponse = await server.get(`/users/${user}/filters/${metaDataFilter}`);
|
|
expect(filterDataResponse.body.success).to.be.true;
|
|
expect(filterDataResponse.body.metaData.hello).to.equal('world');
|
|
});
|
|
|
|
it('should POST /users/{user}/filters as object', async () => {
|
|
const response = await server
|
|
.post(`/users/${user}/filters`)
|
|
.send({
|
|
name: 'test filter 5',
|
|
query: {
|
|
from: 'andris'
|
|
},
|
|
action: {
|
|
seen: true
|
|
},
|
|
metaData: { hello: 'palderjan' }
|
|
})
|
|
.expect(200);
|
|
expect(response.body.success).to.be.true;
|
|
|
|
const filterDataResponse = await server.get(`/users/${user}/filters/${response.body.id}`);
|
|
expect(filterDataResponse.body.success).to.be.true;
|
|
expect(filterDataResponse.body.metaData.hello).to.equal('palderjan');
|
|
});
|
|
|
|
it('should PUT /users/{user}/filters/{filter}', async () => {
|
|
const response = await server
|
|
.put(`/users/${user}/filters/${metaDataFilter}`)
|
|
.send({
|
|
metaData: '{"hello": "torbik"}'
|
|
})
|
|
.expect(200);
|
|
expect(response.body.success).to.be.true;
|
|
|
|
const filterDataResponse = await server.get(`/users/${user}/filters/${metaDataFilter}`);
|
|
expect(filterDataResponse.body.success).to.be.true;
|
|
expect(filterDataResponse.body.metaData.hello).to.equal('torbik');
|
|
});
|
|
|
|
it('should PUT /users/{user}/filters/{filter} as object', async () => {
|
|
const response = await server
|
|
.put(`/users/${user}/filters/${metaDataFilter}`)
|
|
.send({
|
|
metaData: { hello: 'kapsas' }
|
|
})
|
|
.expect(200);
|
|
expect(response.body.success).to.be.true;
|
|
|
|
const filterDataResponse = await server.get(`/users/${user}/filters/${metaDataFilter}`);
|
|
expect(filterDataResponse.body.success).to.be.true;
|
|
expect(filterDataResponse.body.metaData.hello).to.equal('kapsas');
|
|
});
|
|
|
|
it('should PUT /users/{user}/filters/{filter}', async () => {
|
|
const response = await server
|
|
.put(`/users/${user}/filters/${metaDataFilter}`)
|
|
.send({
|
|
metaData: '{"hello": "torbik"}'
|
|
})
|
|
.expect(200);
|
|
expect(response.body.success).to.be.true;
|
|
|
|
const filterDataResponse = await server.get(`/users/${user}/filters/${metaDataFilter}`);
|
|
expect(filterDataResponse.body.success).to.be.true;
|
|
expect(filterDataResponse.body.metaData.hello).to.equal('torbik');
|
|
});
|
|
|
|
it('should GET /filters without metaData', async () => {
|
|
const filterListResponse = await server.get(`/filters`).expect(200);
|
|
expect(filterListResponse.body.success).to.be.true;
|
|
let filterData = filterListResponse.body.results.find(f => f.id === metaDataFilter);
|
|
expect(filterData).to.exist;
|
|
expect(filterData.metaData).to.not.exist;
|
|
});
|
|
|
|
it('should GET /filters with metaData', async () => {
|
|
const filterListResponse = await server.get(`/filters?metaData=true`).expect(200);
|
|
expect(filterListResponse.body.success).to.be.true;
|
|
let filterData = filterListResponse.body.results.find(f => f.id === metaDataFilter);
|
|
expect(filterData).to.exist;
|
|
expect(filterData.metaData).to.exist;
|
|
});
|
|
|
|
it('should GET /users/{user}/filters without metaData', async () => {
|
|
const filterListResponse = await server.get(`/users/${user}/filters`).expect(200);
|
|
expect(filterListResponse.body.success).to.be.true;
|
|
let filterData = filterListResponse.body.results.find(f => f.id === metaDataFilter);
|
|
expect(filterData).to.exist;
|
|
expect(filterData.metaData).to.not.exist;
|
|
});
|
|
|
|
it('should GET /users/{user}/filters with metaData', async () => {
|
|
const filterListResponse = await server.get(`/users/${user}/filters?metaData=true`).expect(200);
|
|
expect(filterListResponse.body.success).to.be.true;
|
|
let filterData = filterListResponse.body.results.find(f => f.id === metaDataFilter);
|
|
expect(filterData).to.exist;
|
|
expect(filterData.metaData).to.exist;
|
|
});
|
|
});
|
|
});
|