The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/tests/steps/API.js

88 lines
2.3 KiB

/* eslint-env mocha */
/* globals expect */
/* eslint no-unused-vars: 0 */
import supertest from 'supertest';
const request = supertest('http://localhost:3000');
const prefix = '/api/v1/';
import {adminUsername, adminEmail, adminPassword} from '../data/user.js';
function api(path) {
return prefix + path;
}
function log(res) {
console.log(res.req.path);
console.log({
body: res.body,
headers: res.headers
});
}
const credentials = {
['X-Auth-Token']: undefined,
['X-User-Id']: undefined
};
const login = {
user: adminUsername,
password: adminPassword
};
describe('API default', () => {
// Required by mobile apps
it('/info', (done) => {
request.get('/api/info')
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res) => {
expect(res.body).to.have.property('version');
expect(res.body).to.have.deep.property('build.date');
expect(res.body).to.have.deep.property('build.nodeVersion');
expect(res.body).to.have.deep.property('build.arch');
expect(res.body).to.have.deep.property('build.platform');
expect(res.body).to.have.deep.property('build.osRelease');
expect(res.body).to.have.deep.property('build.totalMemory');
expect(res.body).to.have.deep.property('build.freeMemory');
expect(res.body).to.have.deep.property('build.cpus');
})
.end(done);
});
});
describe('API v1', () => {
before((done) => {
request.post(api('login'))
.send(login)
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res) => {
credentials['X-Auth-Token'] = res.body.data.authToken;
credentials['X-User-Id'] = res.body.data.userId;
})
.end(done);
});
it('/login', () => {
expect(credentials).to.have.property('X-Auth-Token').with.length.at.least(1);
expect(credentials).to.have.property('X-User-Id').with.length.at.least(1);
});
it('/me', (done) => {
request.get(api('me'))
.set(credentials)
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res) => {
expect(res.body).to.have.property('success', true);
expect(res.body).to.have.property('_id', credentials['X-User-Id']);
expect(res.body).to.have.property('username', login.user);
expect(res.body).to.have.property('active');
expect(res.body).to.have.property('name');
expect(res.body).to.have.deep.property('emails[0].address', adminEmail);
})
.end(done);
});
});