auditforge / backend /tests /audit.test.js
Kaballas's picture
initialize project structure with essential configurations and components
56b6519
/*
At the end
1 Audit: {name: "Audit 1", language: "en", auditType: "Web"}
*/
module.exports = function (request, app) {
describe('Audit Suite Tests', () => {
var userToken = '';
var audit1Id = '';
var audit2Id = '';
beforeAll(async () => {
var response = await request(app)
.post('/api/users/token')
.send({ username: 'admin', password: 'Admin123' });
userToken = response.body.datas.token;
});
describe('Audit CRUD operations', () => {
it('Get Audits (no existing audit in db)', async () => {
var response = await request(app)
.get('/api/audits')
.set('Cookie', [`token=JWT ${userToken}`]);
expect(response.status).toBe(200);
expect(response.body.datas).toHaveLength(0);
});
it('Create audit with partial information', async () => {
var audit = { name: 'Audit 1' };
var response = await request(app)
.post('/api/audits')
.set('Cookie', [`token=JWT ${userToken}`])
.send(audit);
expect(response.status).toBe(422);
});
it('Create audit with invalid audit type', async () => {
var audit = {
name: 'Audit 1',
language: 'en',
auditType: 'Internal Test',
};
var response = await request(app)
.post('/api/audits')
.set('Cookie', [`token=JWT ${userToken}`])
.send(audit);
expect(response.status).toBe(404);
});
it('Create audit', async () => {
var audit = { name: 'Audit 1', language: 'en', auditType: 'Web' };
var response = await request(app)
.post('/api/audits')
.set('Cookie', [`token=JWT ${userToken}`])
.send(audit);
expect(response.status).toBe(201);
audit1Id = response.body.datas.audit._id;
});
it('Create second audit', async () => {
var audit = { name: 'Audit 2', language: 'fr', auditType: 'Web' };
var response = await request(app)
.post('/api/audits')
.set('Cookie', [`token=JWT ${userToken}`])
.send(audit);
expect(response.status).toBe(201);
audit2Id = response.body.datas.audit._id;
});
it('Delete audit', async () => {
var response = await request(app)
.delete(`/api/audits/${audit2Id}`)
.set('Cookie', [`token=JWT ${userToken}`]);
expect(response.status).toBe(200);
response = await request(app)
.get('/api/audits')
.set('Cookie', [`token=JWT ${userToken}`]);
expect(response.body.datas).toHaveLength(1);
});
it('Update audit general info', async () => {
var auditGeneralInfo = {
_id: audit1Id,
scope: ['Scope Item 1', 'Scope Item 2'],
};
var response = await request(app)
.put(`/api/audits/${audit1Id}/general`)
.set('Cookie', [`token=JWT ${userToken}`])
.send(auditGeneralInfo);
expect(response.status).toBe(200);
});
it('Get audit general info', async () => {
var response = await request(app)
.get(`/api/audits/${audit1Id}/general`)
.set('Cookie', [`token=JWT ${userToken}`]);
expect(response.status).toBe(200);
expect(response.body.datas.name).toBe('Audit 1');
expect(response.body.datas.auditType).toBe('Web');
expect(response.body.datas.language).toBe('en');
expect(response.body.datas.collaborators).toHaveLength(0);
expect(response.body.datas.reviewers).toHaveLength(0);
expect(response.body.datas.customFields).toHaveLength(0);
expect(response.body.datas.scope).toHaveLength(2);
expect(response.body.datas.scope[0]).toBe('Scope Item 1');
expect(response.body.datas.scope[1]).toBe('Scope Item 2');
});
});
});
};