-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathrole.test.js
More file actions
128 lines (117 loc) · 4.4 KB
/
role.test.js
File metadata and controls
128 lines (117 loc) · 4.4 KB
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
123
124
125
126
127
128
"use strict";
const chai = require("chai");
const chaiHttp = require("chai-http");
chai.use(chaiHttp);
const server = require("../app");
const Role = require("../models/role.model");
const agent = chai.request.agent(server.app);
const should = chai.should();
const util = {
role: require("./util/role.test.util"),
account: require("./util/account.test.util"),
auth: require("./util/auth.test.util")
};
const Constants = {
Error: require("../constants/error.constant"),
Success: require("../constants/success.constant")
};
const Admin0 = util.account.adminAccounts.stored[0];
const Hacker0 = util.account.hackerAccounts.stored.team[0];
describe("POST create role", function() {
it("should Fail to create a role because admin is not logged in", function(done) {
chai.request(server.app)
.post(`/api/role/`)
.type("application/json")
.send(util.role.newRole1)
.end(function(err, res) {
res.should.have.status(401);
res.should.be.json;
res.body.should.have.property("message");
res.body.message.should.equal(Constants.Error.AUTH_401_MESSAGE);
done();
});
});
// should succeed on logged in admin
it("should SUCCEED and add new role", function(done) {
util.auth.login(agent, Admin0, (error) => {
if (error) {
agent.close();
return done(error);
}
return agent
.post(`/api/role/`)
.type("application/json")
.send(util.role.newRole1)
.end(function(err, res) {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property("message");
res.body.message.should.equal(
Constants.Success.ROLE_CREATE
);
res.body.should.have.property("data");
// create JSON version of model
// delete id as they will be different between model objects
// delete ids of route objects in 'routes'
const role = new Role(util.role.newRole1).toJSON();
delete res.body.data.id;
for (var route of res.body.data.routes) {
delete route._id;
}
delete role.id;
for (route of role.routes) {
delete route._id;
}
chai.assert.equal(
JSON.stringify(res.body.data),
JSON.stringify(role)
);
done();
});
});
});
// should FAIL due to lack of authorization
it("should Fail to add new role due to lack of authorization", function(done) {
util.auth.login(agent, Hacker0, (error) => {
if (error) {
agent.close();
return done(error);
}
return agent
.post(`/api/role/`)
.type("application/json")
.send(util.role.newRole1)
.end(function(err, res) {
res.should.have.status(403);
res.should.be.json;
res.body.should.have.property("message");
res.body.message.should.equal(
Constants.Error.AUTH_403_MESSAGE
);
done();
});
});
});
// should succeed despite duplicate routes
it("should Suceed to add new role despite to duplicate routes", function(done) {
util.auth.login(agent, Admin0, (error) => {
if (error) {
agent.close();
return done(error);
}
return agent
.post(`/api/role/`)
.type("application/json")
.send(util.role.duplicateRole1)
.end(function(err, res) {
res.should.have.status(200);
res.should.be.json;
res.body.should.have.property("message");
res.body.message.should.equal(
Constants.Success.ROLE_CREATE
);
done();
});
});
});
});