@tiledesk/tiledesk-server 2.17.4 → 2.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -3
- package/app.js +2 -0
- package/channels/chat21/chat21WebHook.js +6 -1
- package/event/authEvent.js +16 -0
- package/event/projectUserEvent.js +39 -0
- package/event/roleEvent.js +9 -0
- package/middleware/has-role.js +160 -121
- package/middleware/passport.js +180 -179
- package/migrations/1757601159298-project_user_role_type.js +45 -0
- package/models/department.js +3 -0
- package/models/groupMemberSchama.js +19 -0
- package/models/kb_setting.js +6 -2
- package/models/permissionConstants.js +19 -0
- package/models/project_user.js +86 -8
- package/models/request.js +1 -0
- package/models/role.js +31 -0
- package/models/roleConstants.js +2 -0
- package/package.json +1 -1
- package/pubmodules/analytics/analytics.js +2 -2
- package/pubmodules/cache/mongoose-cachegoose-fn.js +37 -0
- package/pubmodules/canned/cannedResponseRoute.js +34 -6
- package/pubmodules/routing-queue/listener.js +7 -1
- package/pubmodules/trigger/rulesTrigger.js +1 -6
- package/routes/auth.js +3 -1
- package/routes/department.js +7 -1
- package/routes/message.js +4 -1
- package/routes/project.js +41 -3
- package/routes/project_user.js +62 -11
- package/routes/request.js +32 -30
- package/routes/roles.js +151 -0
- package/routes/unanswered.js +1 -1
- package/routes/widget.js +3 -1
- package/services/cacheEnabler.js +5 -8
- package/services/departmentService.js +39 -11
- package/services/emailService.js +2 -2
- package/services/pendingInvitationService.js +2 -0
- package/services/projectService.js +3 -1
- package/services/projectUserService.js +67 -4
- package/services/subscriptionNotifierQueued.js +8 -0
- package/services/updateRequestSnapshotQueued.js +0 -3
- package/test/departmentService.js +5 -0
- package/test/messageRoute.js +7 -4
- package/test/projectUserRoute.js +116 -0
- package/test/requestService.js +7 -3
- package/test-int/bot.js +3 -2
- package/websocket/webSocketServer.js +273 -225
- package/routes/auth_newjwt.js +0 -648
package/test/messageRoute.js
CHANGED
|
@@ -9,7 +9,7 @@ var userService = require('../services/userService');
|
|
|
9
9
|
var leadService = require('../services/leadService');
|
|
10
10
|
var messageService = require('../services/messageService');
|
|
11
11
|
var Project_user = require("../models/project_user");
|
|
12
|
-
var
|
|
12
|
+
var RoleConstants = require('../models/roleConstants');
|
|
13
13
|
const uuidv4 = require('uuid/v4');
|
|
14
14
|
|
|
15
15
|
//Require the dev-dependencies
|
|
@@ -223,7 +223,8 @@ describe('MessageRoute', () => {
|
|
|
223
223
|
// _id: new mongoose.Types.ObjectId(),
|
|
224
224
|
id_project: savedProject._id,
|
|
225
225
|
id_user: savedUser2._id,
|
|
226
|
-
role:
|
|
226
|
+
role: RoleConstants.AGENT,
|
|
227
|
+
roleType : RoleConstants.TYPE_AGENTS,
|
|
227
228
|
user_available: true,
|
|
228
229
|
createdBy: savedUser2._id,
|
|
229
230
|
updatedBy: savedUser2._id,
|
|
@@ -298,7 +299,8 @@ describe('MessageRoute', () => {
|
|
|
298
299
|
// _id: new mongoose.Types.ObjectId(),
|
|
299
300
|
id_project: savedProject._id,
|
|
300
301
|
uuid_user: uid,
|
|
301
|
-
role:
|
|
302
|
+
role: RoleConstants.USER,
|
|
303
|
+
roleType : RoleConstants.TYPE_USERS,
|
|
302
304
|
user_available: true,
|
|
303
305
|
createdBy: savedUser._id,
|
|
304
306
|
updatedBy: savedUser._id,
|
|
@@ -875,7 +877,8 @@ describe('MessageRoute', () => {
|
|
|
875
877
|
// _id: new mongoose.Types.ObjectId(),
|
|
876
878
|
id_project: savedProject._id,
|
|
877
879
|
id_user: savedUser2._id,
|
|
878
|
-
role:
|
|
880
|
+
role: RoleConstants.USER,
|
|
881
|
+
roleType : RoleConstants.TYPE_USERS,
|
|
879
882
|
user_available: true,
|
|
880
883
|
createdBy: savedUser2._id,
|
|
881
884
|
updatedBy: savedUser2._id,
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
//During the test the env variable is set to test
|
|
2
|
+
process.env.NODE_ENV = 'test';
|
|
3
|
+
process.env.LOG_LEVEL = 'error';
|
|
4
|
+
process.env.ADMIN_EMAIL = "admin@tiledesk.com";
|
|
5
|
+
|
|
6
|
+
let log = false;
|
|
7
|
+
var projectService = require('../services/projectService');
|
|
8
|
+
var userService = require('../services/userService');
|
|
9
|
+
|
|
10
|
+
//Require the dev-dependencies
|
|
11
|
+
let chai = require('chai');
|
|
12
|
+
let chaiHttp = require('chai-http');
|
|
13
|
+
let server = require('../app');
|
|
14
|
+
let should = chai.should();
|
|
15
|
+
var fs = require('fs');
|
|
16
|
+
const path = require('path');
|
|
17
|
+
|
|
18
|
+
// chai.config.includeStack = true;
|
|
19
|
+
|
|
20
|
+
var expect = chai.expect;
|
|
21
|
+
var assert = chai.assert;
|
|
22
|
+
|
|
23
|
+
chai.use(chaiHttp);
|
|
24
|
+
|
|
25
|
+
describe('ProjectUserRoute', () => {
|
|
26
|
+
|
|
27
|
+
describe('Delete', () => {
|
|
28
|
+
|
|
29
|
+
it('delete-project-user-and-remove-from-group', (done) => {
|
|
30
|
+
|
|
31
|
+
let email_owner = "owner-signup-" + Date.now() + "@email.com";
|
|
32
|
+
let email_agent = "agent-signup-" + Date.now() + "@email.com";
|
|
33
|
+
var pwd = "pwd";
|
|
34
|
+
|
|
35
|
+
userService.signup(email_owner, pwd, "Owner Firstname", "Owner Lastname").then((owner) => {
|
|
36
|
+
userService.signup(email_agent, pwd, "Agent Firstname", "Agent Lastname").then((agent) => {
|
|
37
|
+
projectService.create("test-project", owner._id).then((project) => {
|
|
38
|
+
|
|
39
|
+
// Invite agent on the project
|
|
40
|
+
chai.request(server)
|
|
41
|
+
.post('/' + project._id + "/project_users/invite")
|
|
42
|
+
.auth(email_owner, pwd)
|
|
43
|
+
.set('content-type', 'application/json')
|
|
44
|
+
.send({ email: email_agent, role: "agent", userAvailable: false })
|
|
45
|
+
.end((err, res) => {
|
|
46
|
+
|
|
47
|
+
if (err) { console.error("err: ", err); }
|
|
48
|
+
if (log) { console.log("Invite agent to project res.body: ", res.body) };
|
|
49
|
+
|
|
50
|
+
res.should.have.status(200);
|
|
51
|
+
res.body.should.be.a('object');
|
|
52
|
+
expect(res.body.id_user).to.equal(agent._id.toString());
|
|
53
|
+
|
|
54
|
+
let pu_id = res.body._id;
|
|
55
|
+
|
|
56
|
+
// Create group
|
|
57
|
+
chai.request(server)
|
|
58
|
+
.post('/' + project._id + "/groups")
|
|
59
|
+
.auth(email_owner, pwd)
|
|
60
|
+
.set('content-type', 'application/json')
|
|
61
|
+
.send({ name: "test-group", members: [owner._id, agent._id] })
|
|
62
|
+
.end((err, res) => {
|
|
63
|
+
|
|
64
|
+
if (err) { console.error("err: ", err); }
|
|
65
|
+
if (log) { console.log("Create group res.body: ", res.body) };
|
|
66
|
+
|
|
67
|
+
res.should.have.status(200);
|
|
68
|
+
res.body.should.be.a('object');
|
|
69
|
+
expect(res.body.name).to.equal("test-group");
|
|
70
|
+
expect(res.body.members.length).to.equal(2);
|
|
71
|
+
expect(res.body.members[0]).to.equal(owner._id.toString())
|
|
72
|
+
expect(res.body.members[1]).to.equal(agent._id.toString())
|
|
73
|
+
|
|
74
|
+
let group_id = res.body._id;
|
|
75
|
+
|
|
76
|
+
// Remove project user from project
|
|
77
|
+
chai.request(server)
|
|
78
|
+
.delete('/' + project._id + '/project_users/' + pu_id + '?soft=true')
|
|
79
|
+
.auth(email_owner, pwd)
|
|
80
|
+
.set('content-type', 'application/json')
|
|
81
|
+
.end((err, res) => {
|
|
82
|
+
|
|
83
|
+
if (err) { console.error("err: ", err); }
|
|
84
|
+
if (log) { console.log("Delete project user res.body: ", res.body) };
|
|
85
|
+
|
|
86
|
+
res.should.have.status(200);
|
|
87
|
+
res.body.should.be.a('object');
|
|
88
|
+
|
|
89
|
+
// Check group
|
|
90
|
+
chai.request(server)
|
|
91
|
+
.get('/' + project._id + '/groups/' + group_id)
|
|
92
|
+
.auth(email_owner, pwd)
|
|
93
|
+
.set('content-type', 'application/json')
|
|
94
|
+
.end((err, res) => {
|
|
95
|
+
if (err) { console.error("err: ", err); }
|
|
96
|
+
if (log) { console.log("Check group res.body: ", res.body) };
|
|
97
|
+
|
|
98
|
+
res.should.have.status(200);
|
|
99
|
+
res.body.should.be.a('object');
|
|
100
|
+
expect(res.body.members.length).to.equal(1);
|
|
101
|
+
expect(res.body.members[0]).to.equal(owner._id.toString())
|
|
102
|
+
|
|
103
|
+
done()
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
})
|
|
107
|
+
})
|
|
108
|
+
})
|
|
109
|
+
})
|
|
110
|
+
})
|
|
111
|
+
})
|
|
112
|
+
}).timeout(5000);
|
|
113
|
+
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
});
|
package/test/requestService.js
CHANGED
|
@@ -10,6 +10,7 @@ let should = chai.should();
|
|
|
10
10
|
var config = require('../config/database');
|
|
11
11
|
var mongoose = require('mongoose');
|
|
12
12
|
var winston = require('../config/winston');
|
|
13
|
+
var RoleConstants = require('../models/roleConstants');
|
|
13
14
|
|
|
14
15
|
let log = false;
|
|
15
16
|
|
|
@@ -991,7 +992,8 @@ describe('RequestService', function () {
|
|
|
991
992
|
// _id: new mongoose.Types.ObjectId(),
|
|
992
993
|
id_project: savedProject._id.toString(),
|
|
993
994
|
id_user: savedUser2._id.toString(),
|
|
994
|
-
role:
|
|
995
|
+
role: RoleConstants.AGENT,
|
|
996
|
+
roleType : RoleConstants.TYPE_AGENTS,
|
|
995
997
|
user_available: false,
|
|
996
998
|
createdBy: userid,
|
|
997
999
|
updatedBy: userid
|
|
@@ -1073,7 +1075,8 @@ describe('RequestService', function () {
|
|
|
1073
1075
|
// _id: new mongoose.Types.ObjectId(),
|
|
1074
1076
|
id_project: savedProject._id.toString(),
|
|
1075
1077
|
id_user: savedUser2._id.toString(),
|
|
1076
|
-
role:
|
|
1078
|
+
role: RoleConstants.AGENT,
|
|
1079
|
+
roleType : RoleConstants.TYPE_AGENTS,
|
|
1077
1080
|
user_available: false,
|
|
1078
1081
|
createdBy: userid,
|
|
1079
1082
|
updatedBy: userid
|
|
@@ -1338,7 +1341,8 @@ describe('RequestService', function () {
|
|
|
1338
1341
|
// _id: new mongoose.Types.ObjectId(),
|
|
1339
1342
|
id_project: savedProject._id.toString(),
|
|
1340
1343
|
id_user: savedUser2._id.toString(),
|
|
1341
|
-
role:
|
|
1344
|
+
role: RoleConstants.AGENT,
|
|
1345
|
+
roleType : RoleConstants.TYPE_AGENTS,
|
|
1342
1346
|
user_available: true,
|
|
1343
1347
|
createdBy: userid,
|
|
1344
1348
|
updatedBy: userid
|
package/test-int/bot.js
CHANGED
|
@@ -16,7 +16,7 @@ var Department = require('../models/department');
|
|
|
16
16
|
var Faq = require('../models/faq');
|
|
17
17
|
var faqBotSupport = require('../services/faqBotSupport');
|
|
18
18
|
var Project_user = require("../models/project_user");
|
|
19
|
-
|
|
19
|
+
var RoleConstants = require('../models/roleConstants');
|
|
20
20
|
var expect = chai.expect;
|
|
21
21
|
var assert = chai.assert;
|
|
22
22
|
|
|
@@ -255,7 +255,8 @@ describe('bot', () => {
|
|
|
255
255
|
// _id: new mongoose.Types.ObjectId(),
|
|
256
256
|
id_project: savedProject._id.toString(),
|
|
257
257
|
id_user: savedUser2._id.toString(),
|
|
258
|
-
role:
|
|
258
|
+
role: RoleConstants.AGENT,
|
|
259
|
+
roleType : RoleConstants.TYPE_AGENTS,
|
|
259
260
|
user_available: true,
|
|
260
261
|
createdBy: savedUser._id,
|
|
261
262
|
updatedBy: savedUser._id
|