@tiledesk/tiledesk-server 2.2.10 → 2.2.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2074 @@
1
+ //During the test the env variable is set to test
2
+ process.env.NODE_ENV = 'test';
3
+
4
+
5
+ //Require the dev-dependencies
6
+ let chai = require('chai');
7
+ let chaiHttp = require('chai-http');
8
+ let server = require('../app');
9
+ var projectService = require('../services/projectService');
10
+ var userService = require('../services/userService');
11
+ let should = chai.should();
12
+ var messageService = require('../services/messageService');
13
+ var requestService = require('../services/requestService');
14
+ var faqService = require('../services/faqService');
15
+ var Department = require('../models/department');
16
+ var Faq = require('../models/faq');
17
+ var faqBotSupport = require('../services/faqBotSupport');
18
+ var Project_user = require("../models/project_user");
19
+
20
+ var expect = chai.expect;
21
+ var assert = chai.assert;
22
+
23
+ //server client
24
+ var express = require('express');
25
+ const bodyParser = require('body-parser');
26
+
27
+ var leadService = require('../services/leadService');
28
+
29
+ // var http = require('http');
30
+ // const { parse } = require('querystring');
31
+
32
+ //end server client
33
+
34
+ chai.use(chaiHttp);
35
+
36
+ describe('bot', () => {
37
+
38
+ describe('/messages', () => {
39
+
40
+
41
+ // mocha test-int/bot.js --grep 'createSimpleExatMatch'
42
+ it('createSimpleExatMatch', (done) => {
43
+
44
+ var email = "test-bot-" + Date.now() + "@email.com";
45
+ var pwd = "pwd";
46
+
47
+
48
+
49
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
50
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
51
+ // create(name, url, projectid, user_id, type)
52
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
53
+
54
+ var newFaq = new Faq({
55
+ id_faq_kb: savedBot._id,
56
+ question: 'question',
57
+ answer: 'answer',
58
+ id_project: savedProject._id,
59
+ createdBy: savedUser._id,
60
+ updatedBy: savedUser._id
61
+ });
62
+
63
+ newFaq.save(function (err, savedFaq) {
64
+
65
+
66
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
67
+
68
+ chai.request(server)
69
+ .post('/'+ savedProject._id + '/subscriptions')
70
+ .auth(email, pwd)
71
+ .set('content-type', 'application/json')
72
+ .send({"event":"message.create", "target":"http://localhost:3005/"})
73
+ .end((err, res) => {
74
+ console.log("res.body", JSON.stringify(res.body));
75
+ // console.dir("res.body 1", res.body);
76
+ console.log("res.headers", res.headers);
77
+ res.should.have.status(200);
78
+ res.body.should.be.a('object');
79
+ expect(res.body.event).to.equal("message.create");
80
+ var secret = res.body.secret;
81
+ expect(secret).to.not.equal(null);
82
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
83
+
84
+
85
+ let messageReceived = 0;
86
+ var serverClient = express();
87
+ serverClient.use(bodyParser.json());
88
+ serverClient.post('/', function (req, res) {
89
+ console.log('serverClient req', JSON.stringify(req.body));
90
+ console.log("serverClient.headers", JSON.stringify(req.headers));
91
+ messageReceived = messageReceived+1;
92
+ expect(req.body.hook.event).to.equal("message.create");
93
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-sending");
94
+ expect(req.body.payload.request.department).to.not.equal(null);
95
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
96
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
97
+
98
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
99
+ res.send('POST request to the homepage');
100
+ expect(req.body.payload.text).to.equal("answer");
101
+ // console.log("savedFaq",savedFaq);
102
+ expect(req.body.payload.sender).to.equal("bot_"+savedBot.id);
103
+ expect(req.body.payload.recipient).to.equal("request_id-subscription-message-sending");
104
+ // expect(req.body.payload.attributes._answer._id.toString()).to.equal(savedFaq._id.toString());
105
+ expect(req.body.payload.attributes._answerid.toString()).to.equal(savedFaq._id.toString());
106
+
107
+ expect(req.body.payload.attributes.intent_info.is_fallback).to.equal(false);
108
+
109
+ expect(req.body.payload.attributes.intent_info.question_payload.text).to.equal("question");
110
+
111
+
112
+ done();
113
+
114
+
115
+
116
+
117
+ });
118
+ var listener = serverClient.listen(3005, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
119
+
120
+
121
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
122
+ requestService.createWithId("request_id-subscription-message-sending", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
123
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "question",
124
+ savedProject._id, savedUser._id).then(function(savedMessage){
125
+ expect(savedMessage.text).to.equal("question");
126
+ // expect(savedMessage.sender).to.equal("question");
127
+ });
128
+ });
129
+ });
130
+ });
131
+ });
132
+ });
133
+ });
134
+
135
+ });
136
+ });
137
+ }).timeout(20000);
138
+
139
+
140
+
141
+
142
+
143
+ // mocha test-int/bot.js --grep 'createSimpleAgent'
144
+ it('createSimpleAgent', (done) => {
145
+
146
+ var email = "test-bot-" + Date.now() + "@email.com";
147
+ var pwd = "pwd";
148
+
149
+
150
+
151
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
152
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
153
+ // create(name, url, projectid, user_id, type)
154
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
155
+
156
+ var newFaq = new Faq({
157
+ id_faq_kb: savedBot._id,
158
+ question: 'switch agent',
159
+ answer: '\\agent',
160
+ id_project: savedProject._id,
161
+ createdBy: savedUser._id,
162
+ updatedBy: savedUser._id
163
+ });
164
+
165
+ newFaq.save(function (err, savedFaq) {
166
+
167
+
168
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
169
+ console.log('000');
170
+ chai.request(server)
171
+ .post('/'+ savedProject._id + '/subscriptions')
172
+ .auth(email, pwd)
173
+ .set('content-type', 'application/json')
174
+ .send({"event":"request.update", "target":"http://localhost:3006/"})
175
+ .end((err, res) => {
176
+ console.log("res.body", JSON.stringify(res.body));
177
+ // console.dir("res.body 1", res.body);
178
+ console.log("res.headers", res.headers);
179
+ res.should.have.status(200);
180
+ res.body.should.be.a('object');
181
+ expect(res.body.event).to.equal("request.update");
182
+ var secret = res.body.secret;
183
+ expect(secret).to.not.equal(null);
184
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
185
+ console.log('001');
186
+
187
+
188
+ let messageReceived = 0;
189
+ var serverClient = express();
190
+ serverClient.use(bodyParser.json());
191
+ serverClient.post('/', function (req, res) {
192
+ console.log('serverClient req', JSON.stringify(req.body));
193
+ console.log("serverClient.headers", JSON.stringify(req.headers));
194
+ messageReceived = messageReceived+1;
195
+ expect(req.body.hook.event).to.equal("request.update");
196
+ console.log('11');
197
+ expect(req.body.payload.request_id).to.equal("request_id-subscription-message-sending-createSimpleAgent");
198
+ console.log('12');
199
+ expect(req.body.payload.hasBot).equal(false);
200
+ console.log('savedUser._id',savedUser._id);
201
+ expect(req.body.payload.participantsAgents[0]).equal(savedUser._id.toString());
202
+ console.log('13');
203
+
204
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
205
+ res.send('POST request to the homepage');
206
+ expect(req.body.payload.first_text).to.equal("first_text");
207
+
208
+ done();
209
+
210
+
211
+
212
+
213
+ });
214
+ var listener = serverClient.listen(3006, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
215
+
216
+
217
+ leadService.createIfNotExists("leadfullname-subscription-message-sending-createSimpleAgent", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
218
+ requestService.createWithId("request_id-subscription-message-sending-createSimpleAgent", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
219
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "switch agent",
220
+ savedProject._id, savedUser._id).then(function(savedMessage){
221
+ expect(savedMessage.text).to.equal("switch agent");
222
+ // expect(savedMessage.sender).to.equal("question");
223
+ });
224
+ });
225
+ });
226
+ });
227
+ });
228
+ });
229
+ });
230
+
231
+ });
232
+ });
233
+ }).timeout(20000);
234
+
235
+
236
+
237
+
238
+
239
+ // mocha test-int/bot.js --grep 'createSimpleAgentTwoAgent'
240
+ it('createSimpleAgentTwoAgent', (done) => {
241
+
242
+ var email = "test-bot-" + Date.now() + "@email.com";
243
+ var pwd = "pwd";
244
+
245
+
246
+
247
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
248
+
249
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
250
+
251
+ userService.signup( "test-bot-" + Date.now() + "@email.com" ,pwd, "Test Firstname", "Test lastname").then(function(savedUser2) {
252
+
253
+ var newProject_user = new Project_user({
254
+ // _id: new mongoose.Types.ObjectId(),
255
+ id_project: savedProject._id.toString(),
256
+ id_user: savedUser2._id.toString(),
257
+ role: "agent",
258
+ user_available: true,
259
+ createdBy: savedUser._id,
260
+ updatedBy: savedUser._id
261
+ });
262
+
263
+ return newProject_user.save(function (err, savedProject_user) {
264
+
265
+ if (err) {
266
+ console.log("err",err)
267
+ }
268
+ leadService.createIfNotExists("leadfullname-subscription-message-sending-createSimpleAgent", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
269
+ requestService.createWithId("request_id-subscription-message-sending-createSimpleAgent-2", createdLead._id, savedProject._id, "first_text").then(function(savedRequest2) {
270
+ console.log("savedRequest2", savedRequest2);
271
+
272
+ expect(savedRequest2.request_id).to.equal("request_id-subscription-message-sending-createSimpleAgent-2");
273
+ // expect(savedRequest2.participantsAgents[0]).equal(savedUser2._id.toString());
274
+ var selectedAgent = savedRequest2.participantsAgents[0];
275
+ console.log("selectedAgent", selectedAgent);
276
+
277
+ expect(savedRequest2.hasBot).equal(false);
278
+
279
+ messageService.create(savedUser._id, "test sender", savedRequest2.request_id, "switch agent", savedProject._id, savedUser._id).then(function(savedMessage2){
280
+ expect(savedMessage2.text).to.equal("switch agent");
281
+ // expect(savedMessage.sender).to.equal("question");
282
+
283
+ // create(name, url, projectid, user_id, type)
284
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
285
+
286
+ var newFaq = new Faq({
287
+ id_faq_kb: savedBot._id,
288
+ question: 'switch agent',
289
+ answer: '\\agent',
290
+ id_project: savedProject._id,
291
+ createdBy: savedUser._id,
292
+ updatedBy: savedUser._id
293
+ });
294
+
295
+ newFaq.save(function (err, savedFaq) {
296
+
297
+
298
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
299
+ console.log('000');
300
+ chai.request(server)
301
+ .post('/'+ savedProject._id + '/subscriptions')
302
+ .auth(email, pwd)
303
+ .set('content-type', 'application/json')
304
+ .send({"event":"request.update", "target":"http://localhost:3021/"})
305
+ .end((err, res) => {
306
+ console.log("res.body", JSON.stringify(res.body));
307
+ // console.dir("res.body 1", res.body);
308
+ console.log("res.headers", res.headers);
309
+ res.should.have.status(200);
310
+ res.body.should.be.a('object');
311
+ expect(res.body.event).to.equal("request.update");
312
+ var secret = res.body.secret;
313
+ expect(secret).to.not.equal(null);
314
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
315
+ console.log('001');
316
+
317
+
318
+ let messageReceived = 0;
319
+ var serverClient = express();
320
+ serverClient.use(bodyParser.json());
321
+ serverClient.post('/', function (req, res) {
322
+ console.log('serverClient req', JSON.stringify(req.body));
323
+ console.log("serverClient.headers", JSON.stringify(req.headers));
324
+ messageReceived = messageReceived+1;
325
+ expect(req.body.hook.event).to.equal("request.update");
326
+ console.log('11');
327
+ expect(req.body.payload.request_id).to.equal("request_id-subscription-message-sending-createSimpleAgent");
328
+ console.log('12');
329
+ expect(req.body.payload.hasBot).equal(false);
330
+ console.log('savedUser._id',savedUser._id);
331
+ console.log('savedUser2._id',savedUser2._id);
332
+ // expect(req.body.payload.participantsAgents[0]).equal(savedUser._id.toString());
333
+ expect(req.body.payload.participantsAgents[0]).not.equal(selectedAgent);
334
+
335
+ console.log('13');
336
+
337
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
338
+ res.send('POST request to the homepage');
339
+ expect(req.body.payload.first_text).to.equal("first_text");
340
+
341
+ done();
342
+
343
+
344
+
345
+
346
+ });
347
+ var listener = serverClient.listen(3021, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
348
+
349
+
350
+
351
+ requestService.createWithId("request_id-subscription-message-sending-createSimpleAgent", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
352
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "switch agent",
353
+ savedProject._id, savedUser._id).then(function(savedMessage){
354
+ expect(savedMessage.text).to.equal("switch agent");
355
+
356
+ // expect(savedMessage.sender).to.equal("question");
357
+ });
358
+ });
359
+ });
360
+ });
361
+ });
362
+ });
363
+ });
364
+ });
365
+ });
366
+ });
367
+ });
368
+ });
369
+ });
370
+ }).timeout(20000);
371
+
372
+
373
+
374
+
375
+ // mocha test-int/bot.js --grep 'createSimpleFulltext'
376
+ it('createSimpleFulltext', (done) => {
377
+
378
+ var email = "test-bot-" + Date.now() + "@email.com";
379
+ var pwd = "pwd";
380
+
381
+
382
+
383
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
384
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
385
+ // create(name, url, projectid, user_id, type)
386
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
387
+
388
+ var newFaq = new Faq({
389
+ id_faq_kb: savedBot._id,
390
+ question: 'question number one',
391
+ answer: 'answer',
392
+ id_project: savedProject._id,
393
+ createdBy: savedUser._id,
394
+ updatedBy: savedUser._id
395
+ });
396
+
397
+ newFaq.save(function (err, savedFaq) {
398
+
399
+
400
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
401
+
402
+ chai.request(server)
403
+ .post('/'+ savedProject._id + '/subscriptions')
404
+ .auth(email, pwd)
405
+ .set('content-type', 'application/json')
406
+ .send({"event":"message.create", "target":"http://localhost:3010/"})
407
+ .end((err, res) => {
408
+ console.log("res.body", JSON.stringify(res.body));
409
+ // console.dir("res.body 1", res.body);
410
+ console.log("res.headers", res.headers);
411
+ res.should.have.status(200);
412
+ res.body.should.be.a('object');
413
+ expect(res.body.event).to.equal("message.create");
414
+ var secret = res.body.secret;
415
+ expect(secret).to.not.equal(null);
416
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
417
+
418
+
419
+ let messageReceived = 0;
420
+ var serverClient = express();
421
+ serverClient.use(bodyParser.json());
422
+ serverClient.post('/', function (req, res) {
423
+ console.log('serverClient req', JSON.stringify(req.body));
424
+ console.log("serverClient.headers", JSON.stringify(req.headers));
425
+ messageReceived = messageReceived+1;
426
+ expect(req.body.hook.event).to.equal("message.create");
427
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-sending");
428
+ expect(req.body.payload.request.department).to.not.equal(null);
429
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
430
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
431
+
432
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
433
+ res.send('POST request to the homepage');
434
+ expect(req.body.payload.text).to.equal("answer");
435
+ // console.log("savedFaq",savedFaq);
436
+ expect(req.body.payload.sender).to.equal("bot_"+savedBot.id);
437
+ expect(req.body.payload.recipient).to.equal("request_id-subscription-message-sending");
438
+ // expect(req.body.payload.attributes._answer._id.toString()).to.equal(savedFaq._id.toString());
439
+ expect(req.body.payload.attributes._answerid.toString()).to.equal(savedFaq._id.toString());
440
+ done();
441
+
442
+
443
+
444
+
445
+ });
446
+ var listener = serverClient.listen(3010, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
447
+
448
+
449
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
450
+ requestService.createWithId("request_id-subscription-message-sending", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
451
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "question",
452
+ savedProject._id, savedUser._id).then(function(savedMessage){
453
+ expect(savedMessage.text).to.equal("question");
454
+ // expect(savedMessage.sender).to.equal("question");
455
+ });
456
+ });
457
+ });
458
+ });
459
+ });
460
+ });
461
+ });
462
+
463
+ });
464
+ });
465
+ }).timeout(20000);
466
+
467
+
468
+
469
+ // mocha test-int/bot.js --grep 'createNotFoundDefaultFallback'
470
+
471
+ it('createNotFoundDefaultFallback', (done) => {
472
+
473
+ var email = "test-bot-" + Date.now() + "@email.com";
474
+ var pwd = "pwd";
475
+
476
+
477
+
478
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
479
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
480
+ // create(name, url, projectid, user_id, type)
481
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
482
+
483
+ var newFaq = new Faq({
484
+ id_faq_kb: savedBot._id,
485
+ question: 'question',
486
+ answer: 'answer',
487
+ id_project: savedProject._id,
488
+ createdBy: savedUser._id,
489
+ updatedBy: savedUser._id
490
+ });
491
+
492
+ newFaq.save(function (err, savedFaq) {
493
+
494
+
495
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
496
+
497
+ chai.request(server)
498
+ .post('/'+ savedProject._id + '/subscriptions')
499
+ .auth(email, pwd)
500
+ .set('content-type', 'application/json')
501
+ .send({"event":"message.create", "target":"http://localhost:3008/"})
502
+ .end((err, res) => {
503
+ console.log("res.body", JSON.stringify(res.body));
504
+ // console.dir("res.body 1", res.body);
505
+ console.log("res.headers", res.headers);
506
+ res.should.have.status(200);
507
+ res.body.should.be.a('object');
508
+ expect(res.body.event).to.equal("message.create");
509
+ var secret = res.body.secret;
510
+ expect(secret).to.not.equal(null);
511
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
512
+
513
+
514
+ let messageReceived = 0;
515
+ var serverClient = express();
516
+ serverClient.use(bodyParser.json());
517
+ serverClient.post('/', function (req, res) {
518
+ console.log('serverClient req', JSON.stringify(req.body));
519
+ console.log("serverClient.headers", JSON.stringify(req.headers));
520
+ messageReceived = messageReceived+1;
521
+
522
+ expect(req.body.hook.event).to.equal("message.create");
523
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-sending-createNotFoundDefaultFallback");
524
+
525
+ expect(req.body.payload.request.department).to.not.equal(null);
526
+
527
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
528
+
529
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
530
+
531
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
532
+
533
+ expect(req.body.payload.text).to.equal("I can not provide an adequate answer. Write a new question or talk to a human agent.");
534
+ // expect(req.body.payload.attributes._answer.text).to.equal("I can not provide an adequate answer. Write a new question or talk to a human agent.");
535
+ expect(req.body.payload.attributes._answerid).to.not.equal(null);
536
+
537
+ res.send('POST request to the homepage');
538
+
539
+ done();
540
+
541
+
542
+
543
+ });
544
+ var listener = serverClient.listen(3008, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
545
+
546
+
547
+ leadService.createIfNotExists("leadfullname-subscription-message-sending-createNotFoundDefaultFallback", "andrea.leo@-subscription-message-sending-createNotFoundDefaultFallback.it", savedProject._id).then(function(createdLead) {
548
+ requestService.createWithId("request_id-subscription-message-sending-createNotFoundDefaultFallback", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
549
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "questionNOTFOUND",
550
+ savedProject._id, savedUser._id).then(function(savedMessage){
551
+ expect(savedMessage.text).to.equal("questionNOTFOUND");
552
+ });
553
+ });
554
+ });
555
+ });
556
+ });
557
+ });
558
+ });
559
+
560
+ });
561
+ });
562
+ }).timeout(20000);
563
+
564
+
565
+
566
+
567
+
568
+
569
+
570
+
571
+
572
+
573
+
574
+ // mocha test-int/bot.js --grep 'createFaqWithImage'
575
+
576
+ it('createFaqWithImage', (done) => {
577
+
578
+ var email = "test-bot-" + Date.now() + "@email.com";
579
+ var pwd = "pwd";
580
+
581
+
582
+
583
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
584
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
585
+ // create(name, url, projectid, user_id, type)
586
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
587
+
588
+ var newFaq = new Faq({
589
+ id_faq_kb: savedBot._id,
590
+ question: 'question',
591
+ answer: 'answer \n\\image:https://www.tiledesk.com/wp-content/uploads/2018/03/tiledesk-logo.png',
592
+ id_project: savedProject._id,
593
+ createdBy: savedUser._id,
594
+ updatedBy: savedUser._id
595
+ });
596
+
597
+ newFaq.save(function (err, savedFaq) {
598
+
599
+
600
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
601
+
602
+ chai.request(server)
603
+ .post('/'+ savedProject._id + '/subscriptions')
604
+ .auth(email, pwd)
605
+ .set('content-type', 'application/json')
606
+ .send({"event":"message.create", "target":"http://localhost:3011/"})
607
+ .end((err, res) => {
608
+ console.log("res.body", JSON.stringify(res.body));
609
+ // console.dir("res.body 1", res.body);
610
+ console.log("res.headers", res.headers);
611
+ res.should.have.status(200);
612
+ res.body.should.be.a('object');
613
+ expect(res.body.event).to.equal("message.create");
614
+ var secret = res.body.secret;
615
+ expect(secret).to.not.equal(null);
616
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
617
+
618
+
619
+ let messageReceived = 0;
620
+ var serverClient = express();
621
+ serverClient.use(bodyParser.json());
622
+ serverClient.post('/', function (req, res) {
623
+ console.log('serverClient req', JSON.stringify(req.body));
624
+ console.log("serverClient.headers", JSON.stringify(req.headers));
625
+
626
+ if (req.body.payload.text=="question") {
627
+ return res.send('POST request to the homepage');
628
+ }
629
+
630
+ messageReceived = messageReceived+1;
631
+ expect(req.body.hook.event).to.equal("message.create");
632
+ expect(req.body.payload.type).to.equal("image");
633
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithImage");
634
+ expect(req.body.payload.request.department).to.not.equal(null);
635
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
636
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
637
+
638
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
639
+ res.send('POST request to the homepage');
640
+ expect(req.body.payload.text).to.equal("answer");
641
+ expect(req.body.payload.metadata.src).to.equal("https://www.tiledesk.com/wp-content/uploads/2018/03/tiledesk-logo.png");
642
+ expect(req.body.payload.metadata.width).to.equal(200);
643
+ expect(req.body.payload.metadata.height).to.equal(200);
644
+ expect(req.body.payload.attributes.intent_info.is_fallback).to.equal(false);
645
+ expect(req.body.payload.attributes.intent_info.question_payload.text).to.equal("question");
646
+ expect(req.body.payload.attributes._raw_message).to.equal('answer \n\\image:https://www.tiledesk.com/wp-content/uploads/2018/03/tiledesk-logo.png');
647
+
648
+ done();;
649
+
650
+
651
+
652
+ });
653
+ var listener = serverClient.listen(3011, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
654
+
655
+
656
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
657
+ requestService.createWithId("request_id-subscription-message-createFaqWithImage", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
658
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "question",
659
+ savedProject._id, savedUser._id).then(function(savedMessage){
660
+ expect(savedMessage.text).to.equal("question");
661
+ });
662
+ });
663
+ });
664
+ });
665
+ });
666
+ });
667
+ });
668
+
669
+ });
670
+ });
671
+ }).timeout(20000);
672
+
673
+
674
+
675
+
676
+
677
+
678
+
679
+
680
+
681
+ // mocha test-int/bot.js --grep 'createFaqWithButton'
682
+
683
+ it('createFaqWithButton', (done) => {
684
+
685
+ var email = "test-bot-" + Date.now() + "@email.com";
686
+ var pwd = "pwd";
687
+
688
+
689
+
690
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
691
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
692
+ // create(name, url, projectid, user_id, type)
693
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
694
+
695
+ var newFaq = new Faq({
696
+ id_faq_kb: savedBot._id,
697
+ question: 'question',
698
+ answer: 'answer\n* Button 1\n* Button 2',
699
+ id_project: savedProject._id,
700
+ createdBy: savedUser._id,
701
+ updatedBy: savedUser._id
702
+ });
703
+
704
+ newFaq.save(function (err, savedFaq) {
705
+
706
+
707
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
708
+
709
+ chai.request(server)
710
+ .post('/'+ savedProject._id + '/subscriptions')
711
+ .auth(email, pwd)
712
+ .set('content-type', 'application/json')
713
+ .send({"event":"message.create", "target":"http://localhost:3012/"})
714
+ .end((err, res) => {
715
+ console.log("res.body", JSON.stringify(res.body));
716
+ // console.dir("res.body 1", res.body);
717
+ console.log("res.headers", res.headers);
718
+ res.should.have.status(200);
719
+ res.body.should.be.a('object');
720
+ expect(res.body.event).to.equal("message.create");
721
+ var secret = res.body.secret;
722
+ expect(secret).to.not.equal(null);
723
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
724
+
725
+
726
+ let messageReceived = 0;
727
+ var serverClient = express();
728
+ serverClient.use(bodyParser.json());
729
+ serverClient.post('/', function (req, res) {
730
+ console.log('serverClient req', JSON.stringify(req.body));
731
+ console.log("serverClient.headers", JSON.stringify(req.headers));
732
+ messageReceived = messageReceived+1;
733
+ expect(req.body.hook.event).to.equal("message.create");
734
+ expect(req.body.payload.type).to.equal("text");
735
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithButton");
736
+ expect(req.body.payload.request.department).to.not.equal(null);
737
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
738
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
739
+
740
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
741
+ res.send('POST request to the homepage');
742
+ expect(req.body.payload.text).to.equal("answer");
743
+ expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("Button 1");
744
+ expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
745
+ expect(req.body.payload.attributes.intent_info.is_fallback).to.equal(false);
746
+ expect(req.body.payload.attributes.intent_info.question_payload.text).to.equal("question");
747
+ expect(req.body.payload.attributes._raw_message).to.equal('answer\n* Button 1\n* Button 2');
748
+ done();;
749
+
750
+
751
+
752
+ });
753
+ var listener = serverClient.listen(3012, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
754
+
755
+
756
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
757
+ requestService.createWithId("request_id-subscription-message-createFaqWithButton", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
758
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "question",
759
+ savedProject._id, savedUser._id).then(function(savedMessage){
760
+ expect(savedMessage.text).to.equal("question");
761
+ });
762
+ });
763
+ });
764
+ });
765
+ });
766
+ });
767
+ });
768
+
769
+ });
770
+ });
771
+ }).timeout(20000);
772
+
773
+
774
+
775
+
776
+
777
+ // mocha test-int/bot.js --grep 'createFaqWithActionButtonFromId'
778
+
779
+ it('createFaqWithActionButtonFromId', (done) => {
780
+
781
+ var email = "test-bot-" + Date.now() + "@email.com";
782
+ var pwd = "pwd";
783
+
784
+
785
+
786
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
787
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
788
+ // create(name, url, projectid, user_id, type)
789
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
790
+
791
+
792
+ var newFaq2 = new Faq({
793
+ id_faq_kb: savedBot._id,
794
+ question: 'question2',
795
+ answer: 'answer2',
796
+ id_project: savedProject._id,
797
+ createdBy: savedUser._id,
798
+ updatedBy: savedUser._id
799
+ });
800
+
801
+ newFaq2.save(function (err, savedFaq2) {
802
+
803
+ var newFaq = new Faq({
804
+ id_faq_kb: savedBot._id,
805
+ question: 'question',
806
+ answer: 'Intro\n* button1 tdAction:'+savedFaq2._id.toString(),
807
+ id_project: savedProject._id,
808
+ createdBy: savedUser._id,
809
+ updatedBy: savedUser._id
810
+ });
811
+
812
+ newFaq.save(function (err, savedFaq) {
813
+
814
+
815
+
816
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
817
+
818
+ chai.request(server)
819
+ .post('/'+ savedProject._id + '/subscriptions')
820
+ .auth(email, pwd)
821
+ .set('content-type', 'application/json')
822
+ .send({"event":"message.create", "target":"http://localhost:3016/"})
823
+ .end((err, res) => {
824
+ console.log("res.body", JSON.stringify(res.body));
825
+ // console.dir("res.body 1", res.body);
826
+ console.log("res.headers", res.headers);
827
+ res.should.have.status(200);
828
+
829
+ res.body.should.be.a('object');
830
+ expect(res.body.event).to.equal("message.create");
831
+ var secret = res.body.secret;
832
+ expect(secret).to.not.equal(null);
833
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
834
+
835
+
836
+ let messageReceived = 0;
837
+ var serverClient = express();
838
+ serverClient.use(bodyParser.json());
839
+ serverClient.post('/', function (req, res) {
840
+ console.log('serverClient req', JSON.stringify(req.body));
841
+ console.log("serverClient.headers", JSON.stringify(req.headers));
842
+
843
+ if (req.body.payload.text=="question") {
844
+ return res.send('POST request to the homepage');
845
+ }
846
+
847
+ messageReceived = messageReceived+1;
848
+ expect(req.body.hook.event).to.equal("message.create");
849
+ expect(req.body.payload.type).to.equal("text");
850
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithActionButton");
851
+ expect(req.body.payload.request.department).to.not.equal(null);
852
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
853
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
854
+
855
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
856
+ res.send('POST request to the homepage');
857
+ expect(req.body.payload.text).to.equal("answer2");
858
+ expect(req.body.payload.attributes._raw_message).to.equal('answer2');
859
+ expect(req.body.payload.attributes.intent_info.is_fallback).to.equal(false);
860
+ expect(req.body.payload.attributes.intent_info.question_payload.text).to.equal("start action");
861
+ // expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("Button 1");
862
+ // expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
863
+
864
+ done();;
865
+
866
+
867
+
868
+ });
869
+ var listener = serverClient.listen(3016, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
870
+
871
+
872
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
873
+ requestService.createWithId("request_id-subscription-message-createFaqWithActionButton", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
874
+ // create(sender, senderFullname, recipient, text, id_project, createdBy, status, attributes
875
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "start action",
876
+ savedProject._id, savedUser._id, undefined, {action: savedFaq2._id.toString()}).then(function(savedMessage){
877
+ expect(savedMessage.text).to.equal("start action");
878
+ });
879
+ });
880
+ });
881
+ });
882
+ });
883
+ });
884
+ });
885
+ });
886
+
887
+ });
888
+ });
889
+ }).timeout(20000);
890
+
891
+
892
+
893
+
894
+
895
+ // mocha test-int/bot.js --grep 'createFaqWithActionButtonFromIntentDisplayName'
896
+
897
+ it('createFaqWithActionButtonFromIntentDisplayName', (done) => {
898
+
899
+ var email = "test-bot-" + Date.now() + "@email.com";
900
+ var pwd = "pwd";
901
+
902
+
903
+
904
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
905
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
906
+ // create(name, url, projectid, user_id, type)
907
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
908
+
909
+
910
+ var newFaq2 = new Faq({
911
+ id_faq_kb: savedBot._id,
912
+ question: 'question2',
913
+ answer: 'answer2',
914
+ id_project: savedProject._id,
915
+ createdBy: savedUser._id,
916
+ updatedBy: savedUser._id
917
+ });
918
+
919
+ newFaq2.save(function (err, savedFaq2) {
920
+
921
+ var newFaq = new Faq({
922
+ id_faq_kb: savedBot._id,
923
+ question: 'question',
924
+ answer: 'Intro\n* button1 tdAction:'+savedFaq2.intent_display_name,
925
+ id_project: savedProject._id,
926
+ createdBy: savedUser._id,
927
+ updatedBy: savedUser._id
928
+ });
929
+
930
+ newFaq.save(function (err, savedFaq) {
931
+
932
+
933
+
934
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
935
+
936
+ chai.request(server)
937
+ .post('/'+ savedProject._id + '/subscriptions')
938
+ .auth(email, pwd)
939
+ .set('content-type', 'application/json')
940
+ .send({"event":"message.create", "target":"http://localhost:3017/"})
941
+ .end((err, res) => {
942
+ console.log("res.body", JSON.stringify(res.body));
943
+ // console.dir("res.body 1", res.body);
944
+ console.log("res.headers", res.headers);
945
+ res.should.have.status(200);
946
+
947
+ res.body.should.be.a('object');
948
+ expect(res.body.event).to.equal("message.create");
949
+ var secret = res.body.secret;
950
+ expect(secret).to.not.equal(null);
951
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
952
+
953
+
954
+ let messageReceived = 0;
955
+ var serverClient = express();
956
+ serverClient.use(bodyParser.json());
957
+ serverClient.post('/', function (req, res) {
958
+ console.log('serverClient req', JSON.stringify(req.body));
959
+ console.log("serverClient.headers", JSON.stringify(req.headers));
960
+
961
+ if (req.body.payload.text=="question") {
962
+ return res.send('POST request to the homepage');
963
+ }
964
+
965
+ messageReceived = messageReceived+1;
966
+ expect(req.body.hook.event).to.equal("message.create");
967
+ expect(req.body.payload.type).to.equal("text");
968
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithActionButton");
969
+ expect(req.body.payload.request.department).to.not.equal(null);
970
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
971
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
972
+
973
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
974
+ res.send('POST request to the homepage');
975
+ expect(req.body.payload.text).to.equal("answer2");
976
+ expect(req.body.payload.attributes._raw_message).to.equal('answer2');
977
+ expect(req.body.payload.attributes.intent_info.is_fallback).to.equal(false);
978
+ expect(req.body.payload.attributes.intent_info.question_payload.text).to.equal("start action");
979
+ // expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("Button 1");
980
+ // expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
981
+
982
+ done();;
983
+
984
+
985
+
986
+ });
987
+ var listener = serverClient.listen(3017, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
988
+
989
+
990
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
991
+ requestService.createWithId("request_id-subscription-message-createFaqWithActionButton", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
992
+ // create(sender, senderFullname, recipient, text, id_project, createdBy, status, attributes
993
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "start action",
994
+ savedProject._id, savedUser._id, undefined, {action: savedFaq2._id.toString()}).then(function(savedMessage){
995
+ expect(savedMessage.text).to.equal("start action");
996
+ });
997
+ });
998
+ });
999
+ });
1000
+ });
1001
+ });
1002
+ });
1003
+ });
1004
+
1005
+ });
1006
+ });
1007
+ }).timeout(20000);
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+ // // mocha test-int/bot.js --grep 'createFaqWithFrame'
1015
+
1016
+ // it('createFaqWithFrame', (done) => {
1017
+
1018
+ // var email = "test-bot-" + Date.now() + "@email.com";
1019
+ // var pwd = "pwd";
1020
+
1021
+
1022
+
1023
+ // userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
1024
+ // projectService.create("test-bot", savedUser._id).then(function(savedProject) {
1025
+ // // create(name, url, projectid, user_id, type)
1026
+ // faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
1027
+
1028
+ // var newFaq = new Faq({
1029
+ // id_faq_kb: savedBot._id,
1030
+ // question: 'question',
1031
+ // answer: 'answer frame\\frame:http://localhost:3013/',
1032
+ // id_project: savedProject._id,
1033
+ // createdBy: savedUser._id,
1034
+ // updatedBy: savedUser._id
1035
+ // });
1036
+
1037
+ // newFaq.save(function (err, savedFaq) {
1038
+
1039
+
1040
+ // Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
1041
+
1042
+ // chai.request(server)
1043
+ // .post('/'+ savedProject._id + '/subscriptions')
1044
+ // .auth(email, pwd)
1045
+ // .set('content-type', 'application/json')
1046
+ // .send({"event":"message.create", "target":"http://localhost:3013/"})
1047
+ // .end((err, res) => {
1048
+ // console.log("res.body", JSON.stringify(res.body));
1049
+ // // console.dir("res.body 1", res.body);
1050
+ // console.log("res.headers", res.headers);
1051
+ // res.should.have.status(200);
1052
+ // res.body.should.be.a('object');
1053
+ // expect(res.body.event).to.equal("message.create");
1054
+ // var secret = res.body.secret;
1055
+ // expect(secret).to.not.equal(null);
1056
+ // expect(res.headers["x-hook-secret"]).to.equal(secret);
1057
+
1058
+
1059
+ // let messageReceived = 0;
1060
+ // var serverClient = express();
1061
+ // serverClient.use(bodyParser.json());
1062
+ // serverClient.post('/', function (req, res) {
1063
+ // console.log('serverClient req', JSON.stringify(req.body));
1064
+ // console.log("serverClient.headers", JSON.stringify(req.headers));
1065
+ // if (req.body.payload.text=="question") {
1066
+ // return res.send('POST request to the homepage');
1067
+ // }
1068
+ // messageReceived = messageReceived+1;
1069
+ // expect(req.body.hook.event).to.equal("message.create");
1070
+ // expect(req.body.payload.type).to.equal("frame");
1071
+ // expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithFrame");
1072
+ // expect(req.body.payload.request.department).to.not.equal(null);
1073
+ // expect(req.body.payload.request.department.bot).to.not.equal(null);
1074
+ // expect(req.body.payload.request.department.bot.name).to.equal("testbot");
1075
+
1076
+ // expect(req.headers["x-hook-secret"]).to.equal(secret);
1077
+ // res.send('POST request to the homepage');
1078
+ // expect(req.body.payload.text).to.equal("answer frame");
1079
+ // // expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("Button 1");
1080
+ // // expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
1081
+
1082
+ // done();;
1083
+
1084
+
1085
+
1086
+ // });
1087
+ // var listener = serverClient.listen(3013, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
1088
+
1089
+
1090
+ // leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
1091
+ // requestService.createWithId("request_id-subscription-message-createFaqWithFrame", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
1092
+ // messageService.create(savedUser._id, "test sender", savedRequest.request_id, "question",
1093
+ // savedProject._id, savedUser._id).then(function(savedMessage){
1094
+ // expect(savedMessage.text).to.equal("question");
1095
+ // });
1096
+ // });
1097
+ // });
1098
+ // });
1099
+ // });
1100
+ // });
1101
+ // });
1102
+
1103
+ // });
1104
+ // });
1105
+ // }).timeout(20000);
1106
+
1107
+
1108
+
1109
+
1110
+
1111
+
1112
+
1113
+
1114
+ // mocha test-int/bot.js --grep 'createFaqWithTdFrame'
1115
+
1116
+ it('createFaqWithTdFrame', (done) => {
1117
+
1118
+ var email = "test-bot-" + Date.now() + "@email.com";
1119
+ var pwd = "pwd";
1120
+
1121
+
1122
+
1123
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
1124
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
1125
+ // create(name, url, projectid, user_id, type)
1126
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
1127
+
1128
+ var newFaq = new Faq({
1129
+ id_faq_kb: savedBot._id,
1130
+ question: 'question',
1131
+ answer: 'answer frame\ntdFrame:http://localhost:3014/',
1132
+ id_project: savedProject._id,
1133
+ createdBy: savedUser._id,
1134
+ updatedBy: savedUser._id
1135
+ });
1136
+
1137
+ newFaq.save(function (err, savedFaq) {
1138
+
1139
+
1140
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
1141
+
1142
+ chai.request(server)
1143
+ .post('/'+ savedProject._id + '/subscriptions')
1144
+ .auth(email, pwd)
1145
+ .set('content-type', 'application/json')
1146
+ .send({"event":"message.create", "target":"http://localhost:3014/"})
1147
+ .end((err, res) => {
1148
+ console.log("res.body", JSON.stringify(res.body));
1149
+ // console.dir("res.body 1", res.body);
1150
+ console.log("res.headers", res.headers);
1151
+ res.should.have.status(200);
1152
+
1153
+ res.body.should.be.a('object');
1154
+ expect(res.body.event).to.equal("message.create");
1155
+ var secret = res.body.secret;
1156
+ expect(secret).to.not.equal(null);
1157
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
1158
+
1159
+
1160
+ let messageReceived = 0;
1161
+ var serverClient = express();
1162
+ serverClient.use(bodyParser.json());
1163
+ serverClient.post('/', function (req, res) {
1164
+ console.log('serverClient req', JSON.stringify(req.body));
1165
+ console.log("serverClient.headers", JSON.stringify(req.headers));
1166
+ messageReceived = messageReceived+1;
1167
+ if (req.body.payload.text=="question") {
1168
+ return res.send('POST request to the homepage');
1169
+ }
1170
+
1171
+ expect(req.body.hook.event).to.equal("message.create");
1172
+ expect(req.body.payload.type).to.equal("frame");
1173
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithTdFrame");
1174
+ expect(req.body.payload.request.department).to.not.equal(null);
1175
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
1176
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
1177
+
1178
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
1179
+ res.send('POST request to the homepage');
1180
+ expect(req.body.payload.text).to.equal("answer frame");
1181
+ // expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("Button 1");
1182
+ // expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
1183
+
1184
+ done();;
1185
+
1186
+
1187
+
1188
+ });
1189
+ var listener = serverClient.listen(3014, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
1190
+
1191
+
1192
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
1193
+ requestService.createWithId("request_id-subscription-message-createFaqWithTdFrame", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
1194
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "question",
1195
+ savedProject._id, savedUser._id).then(function(savedMessage){
1196
+ expect(savedMessage.text).to.equal("question");
1197
+ });
1198
+ });
1199
+ });
1200
+ });
1201
+ });
1202
+ });
1203
+ });
1204
+
1205
+ });
1206
+ });
1207
+ }).timeout(20000);
1208
+
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+ // mocha test-int/bot.js --grep 'createFaqWithWebhookSimple'
1215
+
1216
+ it('createFaqWithWebhookSimple', (done) => {
1217
+
1218
+ var email = "test-bot-" + Date.now() + "@email.com";
1219
+ var pwd = "pwd";
1220
+
1221
+
1222
+
1223
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
1224
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
1225
+ // create(name, url, projectid, user_id, type)
1226
+ faqService.create("testbot", undefined, savedProject._id, savedUser._id, "internal", undefined, "http://localhost:3019/", true).then(function(savedBot) {
1227
+
1228
+ var newFaq = new Faq({
1229
+ id_faq_kb: savedBot._id,
1230
+ question: 'question',
1231
+ answer: 'answer',
1232
+ webhook_enabled: true,
1233
+ id_project: savedProject._id,
1234
+ createdBy: savedUser._id,
1235
+ updatedBy: savedUser._id
1236
+ });
1237
+
1238
+ newFaq.save(function (err, savedFaq) {
1239
+
1240
+
1241
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
1242
+
1243
+ chai.request(server)
1244
+ .post('/'+ savedProject._id + '/subscriptions')
1245
+ .auth(email, pwd)
1246
+ .set('content-type', 'application/json')
1247
+ .send({"event":"message.create", "target":"http://localhost:3020/"})
1248
+ .end((err, res) => {
1249
+ console.log("res.body", JSON.stringify(res.body));
1250
+ // console.dir("res.body 1", res.body);
1251
+ console.log("res.headers", res.headers);
1252
+ res.should.have.status(200);
1253
+ res.body.should.be.a('object');
1254
+ expect(res.body.event).to.equal("message.create");
1255
+ var secret = res.body.secret;
1256
+ expect(secret).to.not.equal(null);
1257
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
1258
+
1259
+
1260
+ let messageReceived = 0;
1261
+ var serverClient = express();
1262
+ serverClient.use(bodyParser.json());
1263
+ serverClient.post('/', function (req, res) {
1264
+ console.log('serverClient req', JSON.stringify(req.body));
1265
+ console.log("serverClient.headers", JSON.stringify(req.headers));
1266
+
1267
+ if (req.body.payload.text=="question") {
1268
+ return res.send('POST request to the homepage');
1269
+ }
1270
+
1271
+ messageReceived = messageReceived+1;
1272
+ expect(req.body.hook.event).to.equal("message.create");
1273
+ expect(req.body.payload.type).to.equal("text");
1274
+ console.log('1');
1275
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithButton");
1276
+ expect(req.body.payload.request.department).to.not.equal(null);
1277
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
1278
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
1279
+ console.log('2');
1280
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
1281
+ res.send('POST request to the homepage');
1282
+ console.log('3',req.body.payload.text);
1283
+ expect(req.body.payload.text).to.equal("ok from webhook");
1284
+ console.log('4');
1285
+ expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("button1");
1286
+ expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
1287
+
1288
+
1289
+ done();
1290
+
1291
+
1292
+ });
1293
+ var listener = serverClient.listen(3020, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
1294
+
1295
+ var serverClient2 = express();
1296
+ serverClient2.use(bodyParser.json());
1297
+ serverClient2.post('/', function (req, res) {
1298
+ console.log('serverClient req2', JSON.stringify(req.body));
1299
+ console.log("serverClient.headers2", JSON.stringify(req.headers));
1300
+ res.send({text:"ok from webhook\n* button1"});
1301
+ });
1302
+ var listener2 = serverClient2.listen(3019, '0.0.0.0', function(){ console.log('Node js Express started', listener2.address());});
1303
+
1304
+
1305
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
1306
+ requestService.createWithId("request_id-subscription-message-createFaqWithButton", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
1307
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "question",
1308
+ savedProject._id, savedUser._id).then(function(savedMessage){
1309
+ expect(savedMessage.text).to.equal("question");
1310
+ });
1311
+ });
1312
+ });
1313
+ });
1314
+ });
1315
+ });
1316
+ });
1317
+
1318
+ });
1319
+ });
1320
+ }).timeout(20000);
1321
+
1322
+
1323
+
1324
+
1325
+
1326
+
1327
+
1328
+
1329
+ // mocha test-int/bot.js --grep 'createFaqWithWebhookMicrolanguageAndAttribute'
1330
+
1331
+ it('createFaqWithWebhookMicrolanguageAndAttribute', (done) => {
1332
+
1333
+ var email = "test-bot-" + Date.now() + "@email.com";
1334
+ var pwd = "pwd";
1335
+
1336
+
1337
+
1338
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
1339
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
1340
+ // create(name, url, projectid, user_id, type)
1341
+ faqService.create("testbot", undefined, savedProject._id, savedUser._id, "internal", undefined, "http://localhost:3025/", true).then(function(savedBot) {
1342
+
1343
+ var newFaq = new Faq({
1344
+ id_faq_kb: savedBot._id,
1345
+ question: 'question',
1346
+ answer: 'answer',
1347
+ webhook_enabled: true,
1348
+ id_project: savedProject._id,
1349
+ createdBy: savedUser._id,
1350
+ updatedBy: savedUser._id
1351
+ });
1352
+
1353
+ newFaq.save(function (err, savedFaq) {
1354
+
1355
+
1356
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
1357
+
1358
+ chai.request(server)
1359
+ .post('/'+ savedProject._id + '/subscriptions')
1360
+ .auth(email, pwd)
1361
+ .set('content-type', 'application/json')
1362
+ .send({"event":"message.create", "target":"http://localhost:3026/"})
1363
+ .end((err, res) => {
1364
+ console.log("res.body", JSON.stringify(res.body));
1365
+ // console.dir("res.body 1", res.body);
1366
+ console.log("res.headers", res.headers);
1367
+ res.should.have.status(200);
1368
+ res.body.should.be.a('object');
1369
+ expect(res.body.event).to.equal("message.create");
1370
+ var secret = res.body.secret;
1371
+ expect(secret).to.not.equal(null);
1372
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
1373
+
1374
+
1375
+ let messageReceived = 0;
1376
+ var serverClient = express();
1377
+ serverClient.use(bodyParser.json());
1378
+ serverClient.post('/', function (req, res) {
1379
+ console.log('serverClient req', JSON.stringify(req.body));
1380
+ console.log("serverClient.headers", JSON.stringify(req.headers));
1381
+
1382
+ if (req.body.payload.text=="question") {
1383
+ return res.send('POST request to the homepage');
1384
+ }
1385
+
1386
+ messageReceived = messageReceived+1;
1387
+ expect(req.body.hook.event).to.equal("message.create");
1388
+ expect(req.body.payload.type).to.equal("text");
1389
+ console.log('1');
1390
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithButton");
1391
+ expect(req.body.payload.request.department).to.not.equal(null);
1392
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
1393
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
1394
+ console.log('2');
1395
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
1396
+ res.send('POST request to the homepage');
1397
+ console.log('3',req.body.payload.text);
1398
+ expect(req.body.payload.text).to.equal("Please, choose a team");
1399
+
1400
+
1401
+ console.log('4',req.body.payload.attributes);
1402
+ expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("Sales");
1403
+ expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
1404
+
1405
+ console.log('5');
1406
+ expect(req.body.payload.attributes.microlanguage).to.equal(true);
1407
+
1408
+ done();
1409
+
1410
+
1411
+ });
1412
+ var listener = serverClient.listen(3026, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
1413
+
1414
+ var serverClient2 = express();
1415
+ serverClient2.use(bodyParser.json());
1416
+ serverClient2.post('/', function (req, res) {
1417
+ console.log('serverClient req2', JSON.stringify(req.body));
1418
+ console.log("serverClient.headers2", JSON.stringify(req.headers));
1419
+ res.send({text:"Please, choose a team\n* Sales\n* Support", attributes: {microlanguage1:true}});
1420
+ });
1421
+ var listener2 = serverClient2.listen(3025, '0.0.0.0', function(){ console.log('Node js Express started', listener2.address());});
1422
+
1423
+
1424
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
1425
+ requestService.createWithId("request_id-subscription-message-createFaqWithButton", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
1426
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "question",
1427
+ savedProject._id, savedUser._id).then(function(savedMessage){
1428
+ expect(savedMessage.text).to.equal("question");
1429
+ });
1430
+ });
1431
+ });
1432
+ });
1433
+ });
1434
+ });
1435
+ });
1436
+
1437
+ });
1438
+ });
1439
+ }).timeout(20000);
1440
+
1441
+
1442
+
1443
+
1444
+
1445
+ // mocha test-int/bot.js --grep 'createFaqWithDefaultIntentWebhook'
1446
+
1447
+ it('createFaqWithDefaultIntentWebhook', (done) => {
1448
+
1449
+ var email = "test-bot-" + Date.now() + "@email.com";
1450
+ var pwd = "pwd";
1451
+
1452
+
1453
+
1454
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
1455
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
1456
+ // create(name, url, projectid, user_id, type)
1457
+ faqService.create("testbot", undefined, savedProject._id, savedUser._id, "internal", undefined, "http://localhost:3029/", true).then(function(savedBot) {
1458
+
1459
+ Faq.findOneAndUpdate({id_project:savedProject._id,id_faq_kb:savedBot._id, question: "defaultFallback" }, {webhook_enabled: true},{new: true, upsert:false}, function (err, savedFaq) {
1460
+ console.log("savedFaq",savedFaq);
1461
+
1462
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
1463
+
1464
+ chai.request(server)
1465
+ .post('/'+ savedProject._id + '/subscriptions')
1466
+ .auth(email, pwd)
1467
+ .set('content-type', 'application/json')
1468
+ .send({"event":"message.create", "target":"http://localhost:3022/"})
1469
+ .end((err, res) => {
1470
+ console.log("res.body", JSON.stringify(res.body));
1471
+ // console.dir("res.body 1", res.body);
1472
+ console.log("res.headers", res.headers);
1473
+ res.should.have.status(200);
1474
+ res.body.should.be.a('object');
1475
+ expect(res.body.event).to.equal("message.create");
1476
+ var secret = res.body.secret;
1477
+ expect(secret).to.not.equal(null);
1478
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
1479
+
1480
+
1481
+ let messageReceived = 0;
1482
+ var serverClient = express();
1483
+ serverClient.use(bodyParser.json());
1484
+ serverClient.post('/', function (req, res) {
1485
+ console.log('serverClient req', JSON.stringify(req.body));
1486
+ console.log("serverClient.headers", JSON.stringify(req.headers));
1487
+
1488
+ if (req.body.payload.text.indexOf("I can not provide an adequate answer")>-1) {
1489
+ return res.send('POST request to the homepage');
1490
+ }
1491
+ console.log('sono qui');
1492
+ messageReceived = messageReceived+1;
1493
+ expect(req.body.hook.event).to.equal("message.create");
1494
+ expect(req.body.payload.type).to.equal("text");
1495
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithDefaultIntentWebhook");
1496
+ expect(req.body.payload.request.department).to.not.equal(null);
1497
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
1498
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
1499
+
1500
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
1501
+ res.send('POST request to the homepage');
1502
+ expect(req.body.payload.text).to.equal("ok from webhook");
1503
+ expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("button1");
1504
+ expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
1505
+
1506
+ expect(req.body.payload.attributes.intent_info.is_fallback).to.equal(true);
1507
+ expect(req.body.payload.attributes.intent_info.question_payload.text).to.equal("notfoundword");
1508
+ expect(req.body.payload.attributes._raw_message).to.equal('ok from webhook\n* button1');
1509
+
1510
+
1511
+ done();
1512
+
1513
+
1514
+ });
1515
+ var listener = serverClient.listen(3022, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
1516
+
1517
+ var serverClient2 = express();
1518
+ serverClient2.use(bodyParser.json());
1519
+ serverClient2.post('/', function (req, res) {
1520
+ console.log('serverClient req2', JSON.stringify(req.body));
1521
+ console.log("serverClient.headers2", JSON.stringify(req.headers));
1522
+ res.send({text:"ok from webhook\n* button1"});
1523
+ });
1524
+ var listener2 = serverClient2.listen(3029, '0.0.0.0', function(){ console.log('Node js Express started', listener2.address());});
1525
+
1526
+
1527
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
1528
+ requestService.createWithId("request_id-subscription-message-createFaqWithDefaultIntentWebhook", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
1529
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "notfoundword",
1530
+ savedProject._id, savedUser._id).then(function(savedMessage){
1531
+ expect(savedMessage.text).to.equal("notfoundword");
1532
+ });
1533
+ });
1534
+ });
1535
+ });
1536
+ });
1537
+ });
1538
+ });
1539
+
1540
+ });
1541
+ });
1542
+ }).timeout(20000);
1543
+
1544
+
1545
+
1546
+
1547
+
1548
+
1549
+
1550
+ // mocha test-int/bot.js --grep 'createFaqWithDefaultIntentWebhookReturnAttributes'
1551
+
1552
+ it('createFaqWithDefaultIntentWebhookReturnAttributes', (done) => {
1553
+
1554
+ var email = "test-bot-" + Date.now() + "@email.com";
1555
+ var pwd = "pwd";
1556
+
1557
+
1558
+
1559
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
1560
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
1561
+ // create(name, url, projectid, user_id, type)
1562
+ faqService.create("testbot", undefined, savedProject._id, savedUser._id, "internal", undefined, "http://localhost:3028/", true).then(function(savedBot) {
1563
+
1564
+ Faq.findOneAndUpdate({id_project:savedProject._id,id_faq_kb:savedBot._id, question: "defaultFallback" }, {webhook_enabled: true},{new: true, upsert:false}, function (err, savedFaq) {
1565
+ console.log("savedFaq",savedFaq);
1566
+
1567
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
1568
+
1569
+ chai.request(server)
1570
+ .post('/'+ savedProject._id + '/subscriptions')
1571
+ .auth(email, pwd)
1572
+ .set('content-type', 'application/json')
1573
+ .send({"event":"message.create", "target":"http://localhost:3023/"})
1574
+ .end((err, res) => {
1575
+ console.log("res.body", JSON.stringify(res.body));
1576
+ // console.dir("res.body 1", res.body);
1577
+ console.log("res.headers", res.headers);
1578
+ res.should.have.status(200);
1579
+ res.body.should.be.a('object');
1580
+ expect(res.body.event).to.equal("message.create");
1581
+ var secret = res.body.secret;
1582
+ expect(secret).to.not.equal(null);
1583
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
1584
+
1585
+
1586
+ var serverClient = express();
1587
+ serverClient.use(bodyParser.json());
1588
+ serverClient.post('/', function (req, res) {
1589
+ console.log('serverClient req', JSON.stringify(req.body));
1590
+ console.log("serverClient.headers", JSON.stringify(req.headers));
1591
+ console.log('sono qui',req.body.payload.text);
1592
+ // if (req.body.payload.text.indexOf("I can not provide an adequate answer")>-1) {
1593
+ // return res.send('POST request to the homepage');
1594
+ // }
1595
+
1596
+ expect(req.body.hook.event).to.equal("message.create");
1597
+ console.log('req.body.payload',req.body.payload);
1598
+ expect(req.body.payload.type).to.equal("text");
1599
+ console.log('01');
1600
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithDefaultIntentWebhookReturnAttributes");
1601
+ console.log('02');
1602
+ expect(req.body.payload.request.department).to.not.equal(null);
1603
+ console.log('03');
1604
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
1605
+ console.log('04');
1606
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
1607
+ console.log('05');
1608
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
1609
+
1610
+ console.log('06');
1611
+ res.send('POST request to the homepage');
1612
+ console.log('07', req.body.payload.text);
1613
+ expect(req.body.payload.text).to.equal("ok from webhook with no microlanguage but attributes");
1614
+ console.log('before attributes',req.body.payload.attributes);
1615
+
1616
+
1617
+ // expect(req.body.payload.channel_type).to.equal("group");
1618
+ expect(req.body.payload.type).to.equal("text");
1619
+ console.log('11');
1620
+ // expect(req.body.payload.language).to.equal("IT");
1621
+ // console.log('22');
1622
+ // expect(req.body.payload.channel.name).to.equal("custom-channel");
1623
+
1624
+ expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("button1");
1625
+ console.log('33');
1626
+ expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
1627
+ console.log('44');
1628
+ expect(req.body.payload.attributes.intent_info.is_fallback).to.equal(true);
1629
+ console.log('55');
1630
+ expect(req.body.payload.attributes.intent_info.question_payload.text).to.equal("notfoundword");
1631
+ console.log('66');
1632
+ expect(req.body.payload.attributes._raw_message).to.equal('ok from webhook with no microlanguage but attributes');
1633
+ console.log('77');
1634
+
1635
+ done();
1636
+
1637
+
1638
+ });
1639
+ var listener = serverClient.listen(3023, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
1640
+
1641
+ var serverClient2 = express();
1642
+ serverClient2.use(bodyParser.json());
1643
+ serverClient2.post('/', function (req, res) {
1644
+ console.log('serverClient req2', JSON.stringify(req.body));
1645
+ console.log("serverClient.headers2", JSON.stringify(req.headers));
1646
+ res.send({text:"ok from webhook with no microlanguage but attributes", attributes: {attachment: {buttons: [{value: "button1", type:"text"}]}}});
1647
+ });
1648
+ var listener2 = serverClient2.listen(3028, '0.0.0.0', function(){ console.log('Node js Express started', listener2.address());});
1649
+
1650
+
1651
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
1652
+ requestService.createWithId("request_id-subscription-message-createFaqWithDefaultIntentWebhookReturnAttributes", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
1653
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "notfoundword",
1654
+ savedProject._id, savedUser._id
1655
+
1656
+ ,undefined, undefined, undefined, undefined, "IT", undefined,
1657
+ //{name:"custom-channel"}
1658
+ )
1659
+ .then(function(savedMessage){
1660
+ console.log("message saved ok")
1661
+ // create(sender, senderFullname, recipient, text, id_project, createdBy, status, attributes, type, metadata, language, channel_type, channel) {
1662
+ // messageService.save({sender:savedUser._id, senderFullname:"test sender",recipient: savedRequest.request_id, text:"notfoundword",
1663
+ // id_project:savedProject._id, createdBy: savedUser._id, status: 0, channel:{name:"custom-channel"}}).then(function(savedMessage){
1664
+ expect(savedMessage.text).to.equal("notfoundword");
1665
+ expect(savedMessage.language).to.equal("IT");
1666
+ });
1667
+ });
1668
+ });
1669
+ });
1670
+ });
1671
+ });
1672
+ });
1673
+
1674
+ });
1675
+ });
1676
+ }).timeout(20000);
1677
+
1678
+
1679
+
1680
+
1681
+
1682
+ // mocha test-int/bot.js --grep 'createFaqWithDefaultIntentWebhookReturnTypeAndMetadata'
1683
+
1684
+ it('createFaqWithDefaultIntentWebhookReturnTypeAndMetadata', (done) => {
1685
+
1686
+ var email = "test-bot-" + Date.now() + "@email.com";
1687
+ var pwd = "pwd";
1688
+
1689
+
1690
+
1691
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
1692
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
1693
+ // create(name, url, projectid, user_id, type)
1694
+ faqService.create("testbot", undefined, savedProject._id, savedUser._id, "internal", undefined, "http://localhost:3030/", true).then(function(savedBot) {
1695
+
1696
+ Faq.findOneAndUpdate({id_project:savedProject._id,id_faq_kb:savedBot._id, question: "defaultFallback" }, {webhook_enabled: true},{new: true, upsert:false}, function (err, savedFaq) {
1697
+ console.log("savedFaq",savedFaq);
1698
+
1699
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
1700
+
1701
+ chai.request(server)
1702
+ .post('/'+ savedProject._id + '/subscriptions')
1703
+ .auth(email, pwd)
1704
+ .set('content-type', 'application/json')
1705
+ .send({"event":"message.create", "target":"http://localhost:3031/"})
1706
+ .end((err, res) => {
1707
+ console.log("res.body", JSON.stringify(res.body));
1708
+ // console.dir("res.body 1", res.body);
1709
+ console.log("res.headers", res.headers);
1710
+ res.should.have.status(200);
1711
+ res.body.should.be.a('object');
1712
+ expect(res.body.event).to.equal("message.create");
1713
+ var secret = res.body.secret;
1714
+ expect(secret).to.not.equal(null);
1715
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
1716
+
1717
+
1718
+ var serverClient = express();
1719
+ serverClient.use(bodyParser.json());
1720
+ serverClient.post('/', function (req, res) {
1721
+ console.log('serverClient req', JSON.stringify(req.body));
1722
+ console.log("serverClient.headers", JSON.stringify(req.headers));
1723
+ console.log('sono qui',req.body.payload.text);
1724
+ // if (req.body.payload.text.indexOf("I can not provide an adequate answer")>-1) {
1725
+ // return res.send('POST request to the homepage');
1726
+ // }
1727
+
1728
+ expect(req.body.hook.event).to.equal("message.create");
1729
+ console.log('req.body.payload',req.body.payload);
1730
+ expect(req.body.payload.type).to.equal("image");
1731
+ console.log('01');
1732
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithDefaultIntentWebhookReturnAttributes");
1733
+ console.log('02');
1734
+ expect(req.body.payload.request.department).to.not.equal(null);
1735
+ console.log('03');
1736
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
1737
+ console.log('04');
1738
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
1739
+ console.log('05');
1740
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
1741
+
1742
+ console.log('06');
1743
+ res.send('POST request to the homepage');
1744
+ console.log('07', req.body.payload.text);
1745
+ expect(req.body.payload.text).to.equal("ok from webhook with no microlanguage but type and metadata");
1746
+ console.log('before attributes',req.body.payload.attributes);
1747
+
1748
+
1749
+ // expect(req.body.payload.channel_type).to.equal("group");
1750
+ expect(req.body.payload.type).to.equal("image");
1751
+ console.log('11');
1752
+ // expect(req.body.payload.language).to.equal("IT");
1753
+ // console.log('22');
1754
+ // expect(req.body.payload.channel.name).to.equal("custom-channel");
1755
+
1756
+ expect(req.body.payload.metadata.src).to.equal("http://image.jpg");
1757
+ console.log('44');
1758
+ expect(req.body.payload.attributes.intent_info.is_fallback).to.equal(true);
1759
+ console.log('55');
1760
+ expect(req.body.payload.attributes.intent_info.question_payload.text).to.equal("notfoundword");
1761
+ console.log('66');
1762
+ expect(req.body.payload.attributes._raw_message).to.equal('ok from webhook with no microlanguage but type and metadata');
1763
+ console.log('77');
1764
+
1765
+ done();
1766
+
1767
+
1768
+ });
1769
+ var listener = serverClient.listen(3031, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
1770
+
1771
+ var serverClient2 = express();
1772
+ serverClient2.use(bodyParser.json());
1773
+ serverClient2.post('/', function (req, res) {
1774
+ console.log('serverClient req2', JSON.stringify(req.body));
1775
+ console.log("serverClient.headers2", JSON.stringify(req.headers));
1776
+ res.send({text:"ok from webhook with no microlanguage but type and metadata", type: "image", metadata: {src: "http://image.jpg" }});
1777
+ });
1778
+ var listener2 = serverClient2.listen(3030, '0.0.0.0', function(){ console.log('Node js Express started', listener2.address());});
1779
+
1780
+
1781
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
1782
+ requestService.createWithId("request_id-subscription-message-createFaqWithDefaultIntentWebhookReturnAttributes", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
1783
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "notfoundword",
1784
+ savedProject._id, savedUser._id
1785
+
1786
+ ,undefined, undefined, undefined, undefined, "IT", undefined,
1787
+ //{name:"custom-channel"}
1788
+ )
1789
+ .then(function(savedMessage){
1790
+ console.log("message saved ok")
1791
+ // create(sender, senderFullname, recipient, text, id_project, createdBy, status, attributes, type, metadata, language, channel_type, channel) {
1792
+ // messageService.save({sender:savedUser._id, senderFullname:"test sender",recipient: savedRequest.request_id, text:"notfoundword",
1793
+ // id_project:savedProject._id, createdBy: savedUser._id, status: 0, channel:{name:"custom-channel"}}).then(function(savedMessage){
1794
+ expect(savedMessage.text).to.equal("notfoundword");
1795
+ expect(savedMessage.language).to.equal("IT");
1796
+ });
1797
+ });
1798
+ });
1799
+ });
1800
+ });
1801
+ });
1802
+ });
1803
+
1804
+ });
1805
+ });
1806
+ }).timeout(20000);
1807
+
1808
+
1809
+
1810
+
1811
+
1812
+
1813
+
1814
+
1815
+
1816
+
1817
+
1818
+ // mocha test-int/bot.js --grep 'createFaqWithWebhookMicrolanguage'
1819
+
1820
+ it('createFaqWithWebhookMicrolanguage', (done) => {
1821
+
1822
+ var email = "test-bot-" + Date.now() + "@email.com";
1823
+ var pwd = "pwd";
1824
+
1825
+
1826
+
1827
+ userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
1828
+ projectService.create("test-bot", savedUser._id).then(function(savedProject) {
1829
+ // create(name, url, projectid, user_id, type)
1830
+ faqService.create("testbot", null, savedProject._id, savedUser._id, "internal", undefined, undefined, true).then(function(savedBot) {
1831
+
1832
+ var newFaq = new Faq({
1833
+ id_faq_kb: savedBot._id,
1834
+ question: 'question',
1835
+ answer: 'answer\n\\webhook:http://localhost:3018/',
1836
+ id_project: savedProject._id,
1837
+ createdBy: savedUser._id,
1838
+ updatedBy: savedUser._id
1839
+ });
1840
+
1841
+ newFaq.save(function (err, savedFaq) {
1842
+
1843
+
1844
+ Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
1845
+
1846
+ chai.request(server)
1847
+ .post('/'+ savedProject._id + '/subscriptions')
1848
+ .auth(email, pwd)
1849
+ .set('content-type', 'application/json')
1850
+ .send({"event":"message.create", "target":"http://localhost:3025/"})
1851
+ .end((err, res) => {
1852
+ console.log("res.body", JSON.stringify(res.body));
1853
+ // console.dir("res.body 1", res.body);
1854
+ console.log("res.headers", res.headers);
1855
+ res.should.have.status(200);
1856
+ res.body.should.be.a('object');
1857
+ expect(res.body.event).to.equal("message.create");
1858
+ var secret = res.body.secret;
1859
+ expect(secret).to.not.equal(null);
1860
+ expect(res.headers["x-hook-secret"]).to.equal(secret);
1861
+
1862
+
1863
+ let messageReceived = 0;
1864
+ var serverClient = express();
1865
+ serverClient.use(bodyParser.json());
1866
+ serverClient.post('/', function (req, res) {
1867
+ console.log('serverClient req', JSON.stringify(req.body));
1868
+ console.log("serverClient.headers", JSON.stringify(req.headers));
1869
+
1870
+ if (req.body.payload.text=="question") {
1871
+ return res.send('POST request to the homepage');
1872
+ }
1873
+
1874
+ messageReceived = messageReceived+1;
1875
+ expect(req.body.hook.event).to.equal("message.create");
1876
+ expect(req.body.payload.type).to.equal("text");
1877
+ console.log("1")
1878
+ expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithButton");
1879
+ expect(req.body.payload.request.department).to.not.equal(null);
1880
+ expect(req.body.payload.request.department.bot).to.not.equal(null);
1881
+ expect(req.body.payload.request.department.bot.name).to.equal("testbot");
1882
+ console.log("2")
1883
+ expect(req.headers["x-hook-secret"]).to.equal(secret);
1884
+ res.send('POST request to the homepage');
1885
+ console.log("3",req.body.payload.text)
1886
+ expect(req.body.payload.text).to.equal("ok from webhook");
1887
+ console.log("4")
1888
+ expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("button1");
1889
+ expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
1890
+
1891
+
1892
+ done();
1893
+
1894
+
1895
+ });
1896
+ var listener = serverClient.listen(3025, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
1897
+
1898
+ var serverClient2 = express();
1899
+ serverClient2.use(bodyParser.json());
1900
+ serverClient2.post('/', function (req, res) {
1901
+ console.log('serverClient req2', JSON.stringify(req.body));
1902
+ console.log("serverClient.headers2", JSON.stringify(req.headers));
1903
+ res.send({text:"ok from webhook\n* button1"});
1904
+
1905
+ });
1906
+ var listener2 = serverClient2.listen(3018, '0.0.0.0', function(){ console.log('Node js Express started', listener2.address());});
1907
+
1908
+
1909
+ leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
1910
+ requestService.createWithId("request_id-subscription-message-createFaqWithButton", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
1911
+ messageService.create(savedUser._id, "test sender", savedRequest.request_id, "question",
1912
+ savedProject._id, savedUser._id).then(function(savedMessage){
1913
+ expect(savedMessage.text).to.equal("question");
1914
+ });
1915
+ });
1916
+ });
1917
+ });
1918
+ });
1919
+ });
1920
+ });
1921
+
1922
+ });
1923
+ });
1924
+ }).timeout(20000);
1925
+
1926
+ // // mocha test-int/bot.js --grep 'createFaqWithTdWebhook'
1927
+
1928
+ // it('createFaqWithTdWebhook', (done) => {
1929
+
1930
+ // var email = "test-bot-" + Date.now() + "@email.com";
1931
+ // var pwd = "pwd";
1932
+
1933
+
1934
+
1935
+ // userService.signup( email ,pwd, "Test Firstname", "Test lastname").then(function(savedUser) {
1936
+ // projectService.create("test-bot", savedUser._id).then(function(savedProject) {
1937
+ // // create(name, url, projectid, user_id, type)
1938
+ // faqService.create("testbot", null, savedProject._id, savedUser._id, "internal").then(function(savedBot) {
1939
+
1940
+ // var newFaq = new Faq({
1941
+ // id_faq_kb: savedBot._id,
1942
+ // question: 'question',
1943
+ // answer: 'answer\ntdWebhook:http://localhost:3020/',
1944
+ // id_project: savedProject._id,
1945
+ // createdBy: savedUser._id,
1946
+ // updatedBy: savedUser._id
1947
+ // });
1948
+
1949
+ // newFaq.save(function (err, savedFaq) {
1950
+
1951
+
1952
+ // Department.findOneAndUpdate({id_project: savedProject._id, default:true}, {id_bot:savedBot._id}, function (err, updatedDepartment) {
1953
+
1954
+ // chai.request(server)
1955
+ // .post('/'+ savedProject._id + '/subscriptions')
1956
+ // .auth(email, pwd)
1957
+ // .set('content-type', 'application/json')
1958
+ // .send({"event":"message.create", "target":"http://localhost:3020/"})
1959
+ // .end((err, res) => {
1960
+ // console.log("res.body", JSON.stringify(res.body));
1961
+ // // console.dir("res.body 1", res.body);
1962
+ // console.log("res.headers", res.headers);
1963
+ // res.should.have.status(200);
1964
+ // res.body.should.be.a('object');
1965
+ // expect(res.body.event).to.equal("message.create");
1966
+ // var secret = res.body.secret;
1967
+ // expect(secret).to.not.equal(null);
1968
+ // expect(res.headers["x-hook-secret"]).to.equal(secret);
1969
+
1970
+
1971
+ // let messageReceived = 0;
1972
+ // var serverClient = express();
1973
+ // serverClient.use(bodyParser.json());
1974
+ // serverClient.post('/', function (req, res) {
1975
+ // console.log('serverClient req', JSON.stringify(req.body));
1976
+ // console.log("serverClient.headers", JSON.stringify(req.headers));
1977
+
1978
+ // if (req.body.payload.text=="question") {
1979
+ // return res.send('POST request to the homepage');
1980
+ // }
1981
+
1982
+ // messageReceived = messageReceived+1;
1983
+ // expect(req.body.hook.event).to.equal("message.create");
1984
+ // expect(req.body.payload.type).to.equal("text");
1985
+ // expect(req.body.payload.request.request_id).to.equal("request_id-subscription-message-createFaqWithButton");
1986
+ // expect(req.body.payload.request.department).to.not.equal(null);
1987
+ // expect(req.body.payload.request.department.bot).to.not.equal(null);
1988
+ // expect(req.body.payload.request.department.bot.name).to.equal("testbot");
1989
+
1990
+ // expect(req.headers["x-hook-secret"]).to.equal(secret);
1991
+ // res.send('POST request to the homepage');
1992
+ // expect(req.body.payload.text).to.equal("ok from webhook");
1993
+ // // expect(req.body.payload.attributes.attachment.buttons[0].value).to.equal("Button 1");
1994
+ // // expect(req.body.payload.attributes.attachment.buttons[0].type).to.equal("text");
1995
+
1996
+
1997
+ // done();
1998
+
1999
+
2000
+ // });
2001
+ // var listener = serverClient.listen(3020, '0.0.0.0', function(){ console.log('Node js Express started', listener.address());});
2002
+
2003
+ // var serverClient2 = express();
2004
+ // serverClient2.use(bodyParser.json());
2005
+ // serverClient2.post('/', function (req, res) {
2006
+ // console.log('serverClient req2', JSON.stringify(req.body));
2007
+ // console.log("serverClient.headers2", JSON.stringify(req.headers));
2008
+ // res.send({text:"ok from webhook"});
2009
+
2010
+ // });
2011
+ // var listener2 = serverClient2.listen(3019, '0.0.0.0', function(){ console.log('Node js Express started', listener2.address());});
2012
+
2013
+
2014
+ // leadService.createIfNotExists("leadfullname-subscription-message-sending", "andrea.leo@-subscription-message-sending.it", savedProject._id).then(function(createdLead) {
2015
+ // requestService.createWithId("request_id-subscription-message-createFaqWithButton", createdLead._id, savedProject._id, "first_text").then(function(savedRequest) {
2016
+ // messageService.create(savedUser._id, "test sender", savedRequest.request_id, "question",
2017
+ // savedProject._id, savedUser._id).then(function(savedMessage){
2018
+ // expect(savedMessage.text).to.equal("question");
2019
+ // });
2020
+ // });
2021
+ // });
2022
+ // });
2023
+ // });
2024
+ // });
2025
+ // });
2026
+
2027
+ // });
2028
+ // });
2029
+ // }).timeout(20000);
2030
+
2031
+
2032
+
2033
+ });
2034
+ });
2035
+
2036
+
2037
+
2038
+
2039
+ // 5 failing
2040
+
2041
+ // 1) bot
2042
+ // /messages
2043
+ // createFaqWithWebhook:
2044
+ // Error: Timeout of 20000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/andrealeo/dev/chat21/tiledesk-server-dev-org/test-int/bot.js)
2045
+ // at listOnTimeout (internal/timers.js:557:17)
2046
+ // at processTimers (internal/timers.js:500:7)
2047
+
2048
+ // 2) bot
2049
+ // /messages
2050
+ // createFaqWithDefaultIntentWebhook:
2051
+ // Error: Timeout of 20000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/andrealeo/dev/chat21/tiledesk-server-dev-org/test-int/bot.js)
2052
+ // at listOnTimeout (internal/timers.js:557:17)
2053
+ // at processTimers (internal/timers.js:500:7)
2054
+
2055
+ // 3) bot
2056
+ // /messages
2057
+ // createFaqWithDefaultIntentWebhookReturnAttributes:
2058
+ // Error: Timeout of 20000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/andrealeo/dev/chat21/tiledesk-server-dev-org/test-int/bot.js)
2059
+ // at listOnTimeout (internal/timers.js:557:17)
2060
+ // at processTimers (internal/timers.js:500:7)
2061
+
2062
+ // 4) bot
2063
+ // /messages
2064
+ // createFaqWithDefaultIntentWebhookReturnTypeAndMetadata:
2065
+ // Error: Timeout of 20000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/andrealeo/dev/chat21/tiledesk-server-dev-org/test-int/bot.js)
2066
+ // at listOnTimeout (internal/timers.js:557:17)
2067
+ // at processTimers (internal/timers.js:500:7)
2068
+
2069
+ // 5) bot
2070
+ // /messages
2071
+ // createFaqWithWebhookMicrolanguage:
2072
+ // Error: Timeout of 20000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/andrealeo/dev/chat21/tiledesk-server-dev-org/test-int/bot.js)
2073
+ // at listOnTimeout (internal/timers.js:557:17)
2074
+ // at processTimers (internal/timers.js:500:7)