File size: 3,892 Bytes
56b6519
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
  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');
      });
    });
  });
};