Spaces:
Runtime error
Runtime error
/* | |
At the end | |
2 Languages: [ | |
{locale: 'en', language: 'English'}, | |
{locale: 'fr', language: 'French'} | |
] | |
1 Audit type: {locale: 'en', name: 'Web'} | |
1 Vulnerability type: {locale: 'en', name: 'Internal'} | |
3 Sections: [ | |
{locale: 'en', name: 'Attack Scenario', field: 'attack_scenario'}, | |
{locale: 'en', name: 'Goal', field: 'goal'}, | |
{locale: 'fr', name: 'But', field: 'goal'} | |
] | |
*/ | |
module.exports = function (request, app) { | |
describe('Data Suite Tests', () => { | |
var userToken = ''; | |
beforeAll(async () => { | |
var response = await request(app) | |
.post('/api/users/token') | |
.send({ username: 'admin', password: 'Admin123' }); | |
userToken = response.body.datas.token; | |
}); | |
describe('Language CRUD operations', () => { | |
it('Get languages', async () => { | |
var response = await request(app) | |
.get('/api/data/languages') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
expect(response.body.datas).toHaveLength(0); | |
}); | |
it('Create 3 languages', async () => { | |
var english = { | |
locale: 'en', | |
language: 'English', | |
}; | |
var french = { | |
locale: 'fr', | |
language: 'French', | |
}; | |
var espagnol = { | |
locale: 'es', | |
language: 'Espagnol', | |
}; | |
var response = await request(app) | |
.post('/api/data/languages') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(english); | |
expect(response.status).toBe(201); | |
var response = await request(app) | |
.post('/api/data/languages') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(french); | |
expect(response.status).toBe(201); | |
var response = await request(app) | |
.post('/api/data/languages') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(espagnol); | |
expect(response.status).toBe(201); | |
}); | |
it('Should not create with existing locale', async () => { | |
var language = { | |
locale: 'fr', | |
language: 'French2', | |
}; | |
var response = await request(app) | |
.post('/api/data/languages') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(language); | |
expect(response.status).toBe(422); | |
}); | |
it('Should not create with existing name', async () => { | |
var language = { | |
locale: 'us', | |
language: 'English', | |
}; | |
var response = await request(app) | |
.post('/api/data/languages') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(language); | |
expect(response.status).toBe(422); | |
}); | |
it('Get languages', async () => { | |
const expected = [ | |
{ locale: 'en', language: 'English' }, | |
{ locale: 'fr', language: 'French' }, | |
{ locale: 'es', language: 'Espagnol' }, | |
]; | |
var response = await request(app) | |
.get('/api/data/languages') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
expect(response.body.datas).toEqual(expect.arrayContaining(expected)); | |
}); | |
it('Delete language', async () => { | |
var response = await request(app) | |
.delete('/api/data/languages/es') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
var response = await request(app) | |
.get('/api/data/languages') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.body.datas).toHaveLength(2); | |
}); | |
it('Should not delete language with nonexistent locale', async () => { | |
var response = await request(app) | |
.delete('/api/data/languages/us') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(404); | |
}); | |
}); | |
describe('Audit types CRUD operations', () => { | |
it('Get audit types', async () => { | |
var response = await request(app) | |
.get('/api/data/audit-types') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
expect(response.body.datas).toHaveLength(0); | |
}); | |
it('Create audit type Retest', async () => { | |
// Get the template ID first | |
response = await request(app) | |
.get('/api/templates') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
var templates = response.body.datas; | |
var auditType = { | |
name: 'Retest', | |
templates: templates, | |
stage: 'retest', | |
}; | |
var response = await request(app) | |
.post('/api/data/audit-types') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(auditType); | |
expect(response.status).toBe(201); | |
}); | |
it('Create audit type Multi', async () => { | |
// Get the template ID first | |
response = await request(app) | |
.get('/api/templates') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
var templates = response.body.datas; | |
var auditType = { | |
name: 'Multi', | |
templates: templates, | |
stage: 'multi', | |
}; | |
var response = await request(app) | |
.post('/api/data/audit-types') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(auditType); | |
expect(response.status).toBe(201); | |
}); | |
it('Create audit type with wrong stage', async () => { | |
// Get the template ID first | |
response = await request(app) | |
.get('/api/templates') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
var templates = response.body.datas; | |
var auditType = { | |
name: 'Wifi', | |
templates: templates, | |
stage: 'itdoesnotexist', | |
}; | |
var response = await request(app) | |
.post('/api/data/audit-types') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(auditType); | |
expect(response.status).toBe(201); | |
}); | |
it('Create audit type Web', async () => { | |
// Get the template ID first | |
response = await request(app) | |
.get('/api/templates') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
var templates = response.body.datas; | |
var auditType = { | |
name: 'Web', | |
templates: templates, | |
}; | |
var response = await request(app) | |
.post('/api/data/audit-types') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(auditType); | |
expect(response.status).toBe(201); | |
}); | |
it('Should not create with existing name', async () => { | |
// Get the template ID first | |
response = await request(app) | |
.get('/api/templates') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
var templates = response.body.datas; | |
var auditType = { | |
name: 'Web', | |
templates: templates, | |
}; | |
var response = await request(app) | |
.post('/api/data/audit-types') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(auditType); | |
expect(response.status).toBe(422); | |
}); | |
it('Get audit types', async () => { | |
const expected = [ | |
{ | |
hidden: ['network'], | |
name: 'Retest', | |
sections: [], | |
templates: [{}], | |
stage: 'retest', | |
}, | |
{ | |
hidden: ['network'], | |
name: 'Multi', | |
sections: [], | |
templates: [{}], | |
stage: 'multi', | |
}, | |
{ | |
hidden: [], | |
name: 'Wifi', | |
sections: [], | |
templates: [{}], | |
stage: 'default', | |
}, | |
{ | |
hidden: [], | |
name: 'Web', | |
sections: [], | |
templates: [{}], | |
stage: 'default', | |
}, | |
]; | |
var response = await request(app) | |
.get('/api/data/audit-types') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
expect(response.body.datas).toEqual(expect.arrayContaining(expected)); | |
}); | |
it('Delete audit type', async () => { | |
var response = await request(app) | |
.delete('/api/data/audit-types/Wifi') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
var response = await request(app) | |
.get('/api/data/audit-types') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.body.datas).toHaveLength(3); | |
}); | |
it('Should not delete audit type with nonexistent name', async () => { | |
var response = await request(app) | |
.delete('/api/data/audit-types/nonexistent') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(404); | |
}); | |
}); | |
describe('Vulnerability types CRUD operations', () => { | |
it('Get vulnerability types', async () => { | |
var response = await request(app) | |
.get('/api/data/vulnerability-types') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
expect(response.body.datas).toHaveLength(0); | |
}); | |
it('Create vulnerability type Internal', async () => { | |
var type = { | |
locale: 'en', | |
name: 'Internal', | |
}; | |
var response = await request(app) | |
.post('/api/data/vulnerability-types') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(type); | |
expect(response.status).toBe(201); | |
}); | |
it('Create vulnerability type Web', async () => { | |
var type = { | |
locale: 'en', | |
name: 'Web', | |
}; | |
var response = await request(app) | |
.post('/api/data/vulnerability-types') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(type); | |
expect(response.status).toBe(201); | |
}); | |
it('Should not create with existing name', async () => { | |
var type = { | |
locale: 'en', | |
name: 'Web', | |
}; | |
var response = await request(app) | |
.post('/api/data/vulnerability-types') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(type); | |
expect(response.status).toBe(422); | |
}); | |
it('Get vulnerability types', async () => { | |
const expected = [ | |
{ locale: 'en', name: 'Internal' }, | |
{ locale: 'en', name: 'Web' }, | |
]; | |
var response = await request(app) | |
.get('/api/data/vulnerability-types') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
expect(response.body.datas).toEqual(expect.arrayContaining(expected)); | |
}); | |
it('Delete vulnerability type', async () => { | |
var response = await request(app) | |
.delete('/api/data/vulnerability-types/Web') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
var response = await request(app) | |
.get('/api/data/vulnerability-types') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.body.datas).toHaveLength(1); | |
}); | |
it('Should not delete vulnerability type with nonexistent name', async () => { | |
var response = await request(app) | |
.delete('/api/data/vulnerability-types/nonexistent') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(404); | |
}); | |
}); | |
describe('Sections CRUD operations', () => { | |
it('Get sections', async () => { | |
var response = await request(app) | |
.get('/api/data/sections') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
expect(response.body.datas).toHaveLength(0); | |
}); | |
it('Create section Attack Scenario locale en', async () => { | |
var section = { | |
name: 'Attack Scenario', | |
field: 'attack_scenario', | |
}; | |
var response = await request(app) | |
.post('/api/data/sections') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(section); | |
expect(response.status).toBe(201); | |
}); | |
it('Create section But locale fr', async () => { | |
var section = { | |
name: 'But', | |
field: 'goal', | |
}; | |
var response = await request(app) | |
.post('/api/data/sections') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(section); | |
expect(response.status).toBe(201); | |
}); | |
it('Should not create section with existing name', async () => { | |
var section = { | |
name: 'Attack Scenario', | |
field: 'goal', | |
}; | |
var response = await request(app) | |
.post('/api/data/sections') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(section); | |
expect(response.status).toBe(422); | |
}); | |
it('Should not create section with existing field', async () => { | |
var section = { | |
name: 'But2', | |
field: 'goal', | |
}; | |
var response = await request(app) | |
.post('/api/data/sections') | |
.set('Cookie', [`token=JWT ${userToken}`]) | |
.send(section); | |
expect(response.status).toBe(422); | |
}); | |
it('Get sections', async () => { | |
const expected = [ | |
{ name: 'Attack Scenario', field: 'attack_scenario' }, | |
{ name: 'But', field: 'goal' }, | |
]; | |
var response = await request(app) | |
.get('/api/data/sections') | |
.set('Cookie', [`token=JWT ${userToken}`]); | |
expect(response.status).toBe(200); | |
expect(response.body.datas).toEqual(expect.arrayContaining(expected)); | |
}); | |
//it('Should not delete nonexistent section', async () => { | |
// var response = await request(app).delete('/api/data/sections/attack_scenario/ru') | |
// .set('Cookie', [ | |
// `token=JWT ${userToken}` | |
// ]) | |
// expect(response.status).toBe(404) | |
//}) | |
//it('Delete section', async () => { | |
// const expected = [ | |
// {locale: "en", name: 'Attack Scenario', field: 'attack_scenario'}, | |
// {locale: "fr", name: 'Scenario', field: 'attack_scenario'}, | |
// {locale: "en", name: 'Goal', field: 'goal'}, | |
// ] | |
// var response = await request(app).delete('/api/data/sections/but/fr') | |
// .set('Cookie', [ | |
// `token=JWT ${userToken}` | |
// ]) | |
// expect(response.status).toBe(200) | |
// var response = await request(app).get('/api/data/sections') | |
// .set('Cookie', [ | |
// `token=JWT ${userToken}` | |
// ]) | |
// expect(response.body.datas).toHaveLength(3) | |
// expect(response.body.datas).toEqual(expect.arrayContaining(expected)) | |
//}) | |
}); | |
}); | |
}; | |