@tiledesk/tiledesk-server 2.7.25 → 2.7.27
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +8 -0
- package/app.js +1 -1
- package/config/labels/widget.json +31 -0
- package/event/emailEvent.js +58 -2
- package/models/faq.js +5 -0
- package/models/kb_setting.js +38 -3
- package/package.json +4 -3
- package/pubmodules/s/index.js +2 -2
- package/pubmodules/s/models/subscription-payment.js +2 -2
- package/pubmodules/s/stripe/index.js +2 -2
- package/routes/kb.js +952 -542
- package/routes/openai.js +3 -3
- package/routes/project.js +21 -6
- package/routes/quotes.js +13 -4
- package/services/QuoteManager.js +163 -16
- package/services/emailService.js +53 -1
- package/services/requestService.js +16 -5
- package/template/email/beenInvitedNewUser.html +221 -216
- package/template/email/checkpointReachedEmail.html +92 -0
- package/test/kbRoute.js +1186 -311
- package/test/mock/projectMock.js +2 -3
- package/test/openaiRoute.js +3 -0
- package/test/requestService.js +3 -0
- package/utils/aiUtils.js +41 -5
package/test/kbRoute.js
CHANGED
@@ -5,6 +5,7 @@ process.env.KB_WEBHOOK_TOKEN = "testtoken"
|
|
5
5
|
|
6
6
|
var userService = require('../services/userService');
|
7
7
|
var projectService = require('../services/projectService');
|
8
|
+
var faqService = require('../services/faqService');
|
8
9
|
|
9
10
|
let log = false;
|
10
11
|
|
@@ -18,6 +19,9 @@ let should = chai.should();
|
|
18
19
|
var fs = require('fs');
|
19
20
|
const path = require('path');
|
20
21
|
const mongoose = require('mongoose');
|
22
|
+
const nock = require('nock');
|
23
|
+
const faq = require('../models/faq');
|
24
|
+
|
21
25
|
|
22
26
|
// chai.config.includeStack = true;
|
23
27
|
|
@@ -32,7 +36,9 @@ describe('KbRoute', () => {
|
|
32
36
|
|
33
37
|
describe('/create', () => {
|
34
38
|
|
35
|
-
|
39
|
+
|
40
|
+
// NEW TESTS
|
41
|
+
it('create-new-kb', (done) => {
|
36
42
|
|
37
43
|
var email = "test-signup-" + Date.now() + "@email.com";
|
38
44
|
var pwd = "pwd";
|
@@ -40,77 +46,169 @@ describe('KbRoute', () => {
|
|
40
46
|
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
41
47
|
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
42
48
|
|
43
|
-
let kb = {
|
44
|
-
name: "example_name5",
|
45
|
-
type: "url",
|
46
|
-
source: "https://www.exampleurl5.com",
|
47
|
-
content: "",
|
48
|
-
}
|
49
|
-
|
50
49
|
chai.request(server)
|
51
|
-
.
|
50
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
52
51
|
.auth(email, pwd)
|
53
|
-
.send(kb) // can be empty
|
54
52
|
.end((err, res) => {
|
55
|
-
|
53
|
+
|
56
54
|
if (err) { console.error("err: ", err); }
|
57
|
-
if (log) { console.log("
|
58
|
-
|
55
|
+
if (log) { console.log("get namespaces res.body: ", res.body); }
|
56
|
+
|
59
57
|
res.should.have.status(200);
|
60
|
-
res.body.
|
58
|
+
expect(res.body.length).to.equal(1);
|
61
59
|
|
62
|
-
|
63
|
-
|
60
|
+
let namespace_id = res.body[0].id;
|
61
|
+
console.log("namespace_id: ", namespace_id);
|
64
62
|
|
65
|
-
|
63
|
+
let kb = {
|
64
|
+
name: "example_name5",
|
65
|
+
type: "url",
|
66
|
+
source: "https://www.exampleurl5.com",
|
67
|
+
content: "",
|
68
|
+
namespace: namespace_id
|
69
|
+
}
|
70
|
+
|
71
|
+
chai.request(server)
|
72
|
+
.post('/' + savedProject._id + '/kb')
|
73
|
+
.auth(email, pwd)
|
74
|
+
.send(kb) // can be empty
|
75
|
+
.end((err, res) => {
|
76
|
+
|
77
|
+
if (err) { console.error("err: ", err); }
|
78
|
+
if (log) { console.log("create kb res.body: ", res.body); }
|
79
|
+
|
80
|
+
res.should.have.status(200);
|
81
|
+
res.body.should.be.a('object');
|
82
|
+
expect(res.body.value.id_project).to.equal(res.body.value.namespace)
|
83
|
+
expect(res.body.value.name).to.equal("example_name5")
|
84
|
+
expect(res.body.value.type).to.equal("url")
|
85
|
+
expect(res.body.value.source).to.equal("https://www.exampleurl5.com")
|
86
|
+
expect(res.body.value.status).to.equal(-1)
|
66
87
|
|
88
|
+
done();
|
89
|
+
})
|
90
|
+
})
|
67
91
|
});
|
68
92
|
});
|
69
93
|
|
70
|
-
})
|
94
|
+
})
|
71
95
|
|
72
|
-
|
73
|
-
// it('createNewKb-namespaceNotBelongsProject', (done) => {
|
96
|
+
it('get-with-queries', (done) => {
|
74
97
|
|
75
|
-
|
76
|
-
|
98
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
99
|
+
var pwd = "pwd";
|
77
100
|
|
78
|
-
|
79
|
-
|
101
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
102
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
80
103
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
104
|
+
/**
|
105
|
+
* Get all namespace. If no namespace exists, a default namespace is created and returned
|
106
|
+
*/
|
107
|
+
chai.request(server)
|
108
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
109
|
+
.auth(email, pwd)
|
110
|
+
.end((err, res) => {
|
88
111
|
|
89
|
-
|
90
|
-
|
91
|
-
// .auth(email, pwd)
|
92
|
-
// .send(kb) // can be empty
|
93
|
-
// .end((err, res) => {
|
94
|
-
|
95
|
-
// if (err) { console.error("err: ", err); }
|
96
|
-
// if (log) { console.log("create kb res.body: ", res.body); }
|
97
|
-
|
98
|
-
// res.should.have.status(403);
|
99
|
-
// res.body.should.be.a('object');
|
100
|
-
// expect(res.body.success).to.equal(false);
|
101
|
-
// expect(res.body.error).to.equal("Not allowed. The namespace does not belong to the current project.");
|
112
|
+
if (err) { console.error("err: ", err); }
|
113
|
+
if (log) { console.log("get namespaces res.body: ", res.body); }
|
102
114
|
|
103
|
-
|
104
|
-
|
115
|
+
res.should.have.status(200);
|
116
|
+
expect(res.body[0].name === 'Default');
|
117
|
+
expect(res.body[0].id === savedProject._id);
|
118
|
+
|
119
|
+
let namespace_id = res.body[0].id;
|
120
|
+
|
121
|
+
let kb1 = {
|
122
|
+
name: "example_name1",
|
123
|
+
type: "url",
|
124
|
+
namespace: namespace_id,
|
125
|
+
source: "https://www.exampleurl1.com",
|
126
|
+
content: ""
|
127
|
+
}
|
128
|
+
|
129
|
+
let kb2 = {
|
130
|
+
name: "example_name2",
|
131
|
+
type: "text",
|
132
|
+
namespace: namespace_id,
|
133
|
+
source: "example_name2",
|
134
|
+
content: "example content"
|
135
|
+
}
|
136
|
+
|
137
|
+
let kb3 = {
|
138
|
+
name: "example_name3",
|
139
|
+
type: "url",
|
140
|
+
namespace: namespace_id,
|
141
|
+
source: "https://www.exampleurl3.com",
|
142
|
+
content: ""
|
143
|
+
}
|
144
|
+
|
145
|
+
|
146
|
+
/**
|
147
|
+
* Add contents to default namespace
|
148
|
+
*/
|
149
|
+
chai.request(server)
|
150
|
+
.post('/' + savedProject._id + "/kb")
|
151
|
+
.auth(email, pwd)
|
152
|
+
.send(kb1)
|
153
|
+
.end((err, res) => {
|
154
|
+
if (log) { console.log("create kb1 res.body: ", res.body); }
|
155
|
+
res.should.have.status(200);
|
105
156
|
|
106
|
-
|
157
|
+
setTimeout(() => {
|
158
|
+
chai.request(server)
|
159
|
+
.post('/' + savedProject._id + "/kb")
|
160
|
+
.auth(email, pwd)
|
161
|
+
.send(kb2)
|
162
|
+
.end((err, res) => {
|
163
|
+
if (log) { console.log("create kb2 res.body: ", res.body); }
|
164
|
+
res.should.have.status(200);
|
107
165
|
|
108
|
-
|
109
|
-
|
166
|
+
setTimeout(() => {
|
167
|
+
chai.request(server)
|
168
|
+
.post('/' + savedProject._id + "/kb")
|
169
|
+
.auth(email, pwd)
|
170
|
+
.send(kb3)
|
171
|
+
.end((err, res) => {
|
172
|
+
if (log) { console.log("create kb3 res.body: ", res.body); }
|
173
|
+
res.should.have.status(200);
|
110
174
|
|
111
|
-
|
175
|
+
let query = "?status=100&type=url&limit=5&page=0&direction=-1&sortField=updatedAt&search=example&namespace=" + namespace_id;
|
176
|
+
//let query = "";
|
177
|
+
console.log("query: ", query);
|
178
|
+
|
179
|
+
chai.request(server)
|
180
|
+
.get('/' + savedProject._id + "/kb" + query)
|
181
|
+
.auth(email, pwd)
|
182
|
+
.end((err, res) => {
|
183
|
+
if (log) { console.log("getall res.body: ", res.body); }
|
184
|
+
res.should.have.status(200);
|
185
|
+
res.body.should.be.a('object');
|
186
|
+
res.body.kbs.should.be.a('array');
|
187
|
+
expect(res.body.kbs.length).to.equal(2);
|
188
|
+
expect(res.body.count).to.equal(2);
|
189
|
+
res.body.query.should.be.a('object');
|
190
|
+
expect(res.body.query.status).to.equal(100);
|
191
|
+
expect(res.body.query.limit).to.equal(5);
|
192
|
+
expect(res.body.query.page).to.equal(0);
|
193
|
+
expect(res.body.query.direction).to.equal(-1);
|
194
|
+
expect(res.body.query.sortField).to.equal("updatedAt");
|
195
|
+
expect(res.body.query.search).to.equal("example");
|
196
|
+
|
197
|
+
done();
|
198
|
+
|
199
|
+
})
|
200
|
+
|
201
|
+
})
|
202
|
+
}, 1000)
|
203
|
+
})
|
204
|
+
}, 1000)
|
205
|
+
})
|
206
|
+
})
|
207
|
+
})
|
208
|
+
})
|
209
|
+
}).timeout(20000)
|
112
210
|
|
113
|
-
it('
|
211
|
+
it('get-with-queries-namespace-not-belong-project', (done) => {
|
114
212
|
|
115
213
|
var email = "test-signup-" + Date.now() + "@email.com";
|
116
214
|
var pwd = "pwd";
|
@@ -118,39 +216,71 @@ describe('KbRoute', () => {
|
|
118
216
|
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
119
217
|
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
120
218
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
source: "https://www.exampleurl5.com",
|
125
|
-
content: "",
|
126
|
-
namespace: "fakenamespace"
|
127
|
-
}
|
128
|
-
|
219
|
+
/**
|
220
|
+
* Get all namespace. If no namespace exists, a default namespace is created and returned
|
221
|
+
*/
|
129
222
|
chai.request(server)
|
130
|
-
.
|
223
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
131
224
|
.auth(email, pwd)
|
132
|
-
.send(kb) // can be empty
|
133
225
|
.end((err, res) => {
|
134
|
-
|
226
|
+
|
135
227
|
if (err) { console.error("err: ", err); }
|
136
|
-
if (log) { console.log("
|
137
|
-
|
228
|
+
if (log) { console.log("get namespaces res.body: ", res.body); }
|
229
|
+
|
138
230
|
res.should.have.status(200);
|
139
|
-
res.body.
|
140
|
-
expect(res.body.
|
141
|
-
|
231
|
+
expect(res.body[0].name === 'Default');
|
232
|
+
expect(res.body[0].id === savedProject._id);
|
233
|
+
|
234
|
+
let namespace_id = res.body[0].id;
|
235
|
+
|
236
|
+
let kb1 = {
|
237
|
+
name: "example_name1",
|
238
|
+
type: "url",
|
239
|
+
namespace: namespace_id,
|
240
|
+
source: "https://www.exampleurl1.com",
|
241
|
+
content: ""
|
242
|
+
}
|
243
|
+
|
244
|
+
/**
|
245
|
+
* Add contents to default namespace
|
246
|
+
*/
|
247
|
+
chai.request(server)
|
248
|
+
.post('/' + savedProject._id + "/kb")
|
249
|
+
.auth(email, pwd)
|
250
|
+
.send(kb1)
|
251
|
+
.end((err, res) => {
|
252
|
+
if (log) { console.log("create kb1 res.body: ", res.body); }
|
253
|
+
res.should.have.status(200);
|
142
254
|
|
143
|
-
|
144
|
-
|
255
|
+
let namespace_id = "fakenamespaceid";
|
145
256
|
|
146
|
-
|
257
|
+
let query = "?status=100&type=url&limit=5&page=0&direction=-1&sortField=updatedAt&search=example&namespace=" + namespace_id;
|
258
|
+
console.log("query: ", query);
|
147
259
|
|
148
|
-
|
149
|
-
|
260
|
+
chai.request(server)
|
261
|
+
.get('/' + savedProject._id + "/kb" + query)
|
262
|
+
.auth(email, pwd)
|
263
|
+
.end((err, res) => {
|
264
|
+
if (log) { console.log("getall res.body: ", res.body); }
|
265
|
+
res.should.have.status(200);
|
266
|
+
res.body.should.be.a('object');
|
267
|
+
res.body.kbs.should.be.a('array');
|
268
|
+
expect(res.body.kbs.length).to.equal(0);
|
269
|
+
expect(res.body.count).to.equal(0);
|
150
270
|
|
151
|
-
|
271
|
+
done();
|
272
|
+
|
273
|
+
})
|
274
|
+
})
|
275
|
+
})
|
276
|
+
})
|
277
|
+
})
|
278
|
+
}).timeout(20000)
|
152
279
|
|
153
|
-
|
280
|
+
/**
|
281
|
+
* If you try to add content to a project that has no namespace, it returns 403 forbidden.
|
282
|
+
*/
|
283
|
+
it('add-multiple-urls-no-namespaces', (done) => {
|
154
284
|
|
155
285
|
var email = "test-signup-" + Date.now() + "@email.com";
|
156
286
|
var pwd = "pwd";
|
@@ -158,92 +288,35 @@ describe('KbRoute', () => {
|
|
158
288
|
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
159
289
|
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
160
290
|
|
161
|
-
let kb1 = {
|
162
|
-
name: "example_name1",
|
163
|
-
type: "url",
|
164
|
-
source: "https://www.exampleurl1.com",
|
165
|
-
content: ""
|
166
|
-
}
|
167
|
-
|
168
|
-
let kb2 = {
|
169
|
-
name: "example_name2",
|
170
|
-
type: "text",
|
171
|
-
source: "example_name2",
|
172
|
-
content: "example content"
|
173
|
-
}
|
174
|
-
|
175
|
-
let kb3 = {
|
176
|
-
name: "example_name3",
|
177
|
-
type: "url",
|
178
|
-
source: "https://www.exampleurl3.com",
|
179
|
-
content: ""
|
180
|
-
}
|
181
|
-
|
182
291
|
chai.request(server)
|
183
|
-
.post('/' + savedProject._id +
|
292
|
+
.post('/' + savedProject._id + '/kb/multi?namespace=123456')
|
184
293
|
.auth(email, pwd)
|
185
|
-
.
|
294
|
+
.set('Content-Type', 'text/plain')
|
295
|
+
.attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './kbUrlsList.txt')), 'kbUrlsList.txt')
|
186
296
|
.end((err, res) => {
|
187
|
-
if (log) { console.log("create kb res.body: ", res.body); }
|
188
|
-
res.should.have.status(200);
|
189
|
-
|
190
|
-
setTimeout(() => {
|
191
|
-
chai.request(server)
|
192
|
-
.post('/' + savedProject._id + "/kb")
|
193
|
-
.auth(email, pwd)
|
194
|
-
.send(kb2)
|
195
|
-
.end((err, res) => {
|
196
|
-
if (log) { console.log("create kb res.body: ", res.body); }
|
197
|
-
res.should.have.status(200);
|
198
|
-
|
199
|
-
setTimeout(() => {
|
200
|
-
chai.request(server)
|
201
|
-
.post('/' + savedProject._id + "/kb")
|
202
|
-
.auth(email, pwd)
|
203
|
-
.send(kb3)
|
204
|
-
.end((err, res) => {
|
205
|
-
if (log) { console.log("create kb res.body: ", res.body); }
|
206
|
-
res.should.have.status(200);
|
207
|
-
|
208
|
-
let query = "?status=-1&type=url&limit=5&page=0&direction=-1&sortField=updatedAt&search=example";
|
209
|
-
//let query = "";
|
210
|
-
console.log("query: ", query);
|
211
|
-
|
212
|
-
chai.request(server)
|
213
|
-
.get('/' + savedProject._id + "/kb" + query)
|
214
|
-
.auth(email, pwd)
|
215
|
-
.end((err, res) => {
|
216
|
-
if (log) { console.log("getall res.body: ", res.body); }
|
217
|
-
console.log("getall res.body: ", res.body);
|
218
|
-
res.should.have.status(200);
|
219
|
-
res.body.should.be.a('object');
|
220
|
-
res.body.kbs.should.be.a('array');
|
221
|
-
expect(res.body.kbs.length).to.equal(2);
|
222
|
-
expect(res.body.count).to.equal(2);
|
223
|
-
res.body.query.should.be.a('object');
|
224
|
-
expect(res.body.query.status).to.equal(-1);
|
225
|
-
expect(res.body.query.limit).to.equal(5);
|
226
|
-
expect(res.body.query.page).to.equal(0);
|
227
|
-
expect(res.body.query.direction).to.equal(-1);
|
228
|
-
expect(res.body.query.sortField).to.equal("updatedAt");
|
229
|
-
expect(res.body.query.search).to.equal("example");
|
230
|
-
|
231
|
-
done();
|
232
297
|
|
233
|
-
|
298
|
+
if (err) { console.error("err: ", err); }
|
299
|
+
if (log) { console.log("res.body: ", res.body) }
|
234
300
|
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
301
|
+
res.should.have.status(403);
|
302
|
+
res.should.be.a('object')
|
303
|
+
expect(res.body.success).to.equal(false);
|
304
|
+
let error_response = "No namespace found for the selected project " + savedProject._id + ". Cannot add content to a non-existent namespace."
|
305
|
+
expect(res.body.error).to.equal(error_response);
|
239
306
|
|
307
|
+
done();
|
240
308
|
|
241
309
|
})
|
242
|
-
})
|
243
|
-
})
|
244
|
-
|
310
|
+
});
|
311
|
+
});
|
312
|
+
|
313
|
+
}).timeout(10000)
|
245
314
|
|
246
|
-
|
315
|
+
/**
|
316
|
+
* If you try to add content to a namespace that does not belong to the selected project and
|
317
|
+
* the project has at least one namesapce, it returns 403 forbidden.
|
318
|
+
*/
|
319
|
+
it('add-multiple-urls-namespace-not-belong-project', (done) => {
|
247
320
|
|
248
321
|
var email = "test-signup-" + Date.now() + "@email.com";
|
249
322
|
var pwd = "pwd";
|
@@ -251,107 +324,86 @@ describe('KbRoute', () => {
|
|
251
324
|
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
252
325
|
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
253
326
|
|
254
|
-
let kb = {
|
255
|
-
name: "example_name6",
|
256
|
-
type: "url",
|
257
|
-
source: "https://www.exampleurl6.com",
|
258
|
-
content: ""
|
259
|
-
}
|
260
|
-
|
261
327
|
chai.request(server)
|
262
|
-
.
|
328
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
263
329
|
.auth(email, pwd)
|
264
|
-
.send(kb) // can be empty
|
265
330
|
.end((err, res) => {
|
266
|
-
if (log) { console.log("create kb res.body: ", res.body); }
|
267
|
-
res.should.have.status(200);
|
268
331
|
|
269
|
-
|
270
|
-
console.log("
|
332
|
+
if (err) { console.error("err: ", err); }
|
333
|
+
if (log) { console.log("res.body: ", res.body) }
|
334
|
+
|
335
|
+
res.should.have.status(200)
|
336
|
+
expect(res.body.length).to.equal(1);
|
337
|
+
|
271
338
|
chai.request(server)
|
272
|
-
.post('/' + savedProject._id +
|
339
|
+
.post('/' + savedProject._id + '/kb/multi?namespace=fakenamespaceid')
|
273
340
|
.auth(email, pwd)
|
274
|
-
.
|
341
|
+
.set('Content-Type', 'text/plain')
|
342
|
+
.attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './kbUrlsList.txt')), 'kbUrlsList.txt')
|
275
343
|
.end((err, res) => {
|
276
|
-
if (log) { console.log("single scrape res.body: ", res.body); }
|
277
|
-
//res.should.have.status(200);
|
278
|
-
// res.body.should.be.a('object');
|
279
|
-
// expect(res.body.id_project).to.equal(savedProject._id.toString())
|
280
|
-
// expect(res.body.maxKbsNumber).to.equal(3);
|
281
|
-
// expect(res.body.maxPagesNumber).to.equal(1000);
|
282
|
-
// expect(res.body.kbs).is.an('array').that.is.empty;
|
283
|
-
done();
|
284
|
-
|
285
|
-
})
|
286
|
-
|
287
|
-
|
288
|
-
// res.body.should.be.a('object');
|
289
|
-
// expect(res.body.id_project).to.equal(savedProject._id.toString());
|
290
344
|
|
345
|
+
if (err) { console.error("err: ", err); }
|
346
|
+
if (log) { console.log("res.body: ", res.body) }
|
291
347
|
|
348
|
+
res.should.have.status(403);
|
349
|
+
res.should.be.a('object');
|
350
|
+
expect(res.body.success).to.equal(false);
|
351
|
+
let error_response = "Not allowed. The namespace does not belong to the current project."
|
352
|
+
expect(res.body.error).to.equal(error_response);
|
292
353
|
|
354
|
+
done();
|
293
355
|
|
356
|
+
})
|
294
357
|
})
|
295
|
-
|
296
358
|
});
|
297
359
|
});
|
298
360
|
|
299
|
-
})
|
361
|
+
}).timeout(10000)
|
300
362
|
|
301
|
-
|
363
|
+
it('add-multiple-urls-success', (done) => {
|
302
364
|
|
303
|
-
|
304
|
-
|
365
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
366
|
+
var pwd = "pwd";
|
305
367
|
|
306
|
-
|
307
|
-
|
368
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
369
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
308
370
|
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
// content: ""
|
314
|
-
// }
|
371
|
+
chai.request(server)
|
372
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
373
|
+
.auth(email, pwd)
|
374
|
+
.end((err, res) => {
|
315
375
|
|
316
|
-
|
317
|
-
|
318
|
-
// .auth(email, pwd)
|
319
|
-
// .send(kb) // can be empty
|
320
|
-
// .end((err, res) => {
|
321
|
-
// if (log) { console.log("create kb res.body: ", res.body); }
|
322
|
-
// res.should.have.status(200);
|
376
|
+
if (err) { console.error("err: ", err); }
|
377
|
+
if (log) { console.log("res.body: ", res.body) }
|
323
378
|
|
324
|
-
|
325
|
-
|
326
|
-
// chai.request(server)
|
327
|
-
// .post('/' + savedProject._id + "/kb/scrape/single")
|
328
|
-
// .auth(email, pwd)
|
329
|
-
// .send({ id: kbid })
|
330
|
-
// .end((err, res) => {
|
331
|
-
// if (log) { console.log("single scrape res.body: ", res.body); }
|
332
|
-
// //res.should.have.status(200);
|
333
|
-
// // res.body.should.be.a('object');
|
334
|
-
// // expect(res.body.id_project).to.equal(savedProject._id.toString())
|
335
|
-
// // expect(res.body.maxKbsNumber).to.equal(3);
|
336
|
-
// // expect(res.body.maxPagesNumber).to.equal(1000);
|
337
|
-
// // expect(res.body.kbs).is.an('array').that.is.empty;
|
338
|
-
// done();
|
379
|
+
res.should.have.status(200)
|
380
|
+
expect(res.body.length).to.equal(1);
|
339
381
|
|
340
|
-
|
382
|
+
let namespace_id = res.body[0].id;
|
341
383
|
|
384
|
+
chai.request(server)
|
385
|
+
.post('/' + savedProject._id + '/kb/multi?namespace=' + namespace_id)
|
386
|
+
.auth(email, pwd)
|
387
|
+
.set('Content-Type', 'text/plain')
|
388
|
+
.attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './kbUrlsList.txt')), 'kbUrlsList.txt')
|
389
|
+
.end((err, res) => {
|
342
390
|
|
343
|
-
|
344
|
-
|
391
|
+
if (err) { console.error("err: ", err); }
|
392
|
+
if (log) { console.log("res.body: ", res.body) }
|
345
393
|
|
394
|
+
res.should.have.status(200);
|
395
|
+
expect(res.body.length).to.equal(4)
|
346
396
|
|
397
|
+
done();
|
347
398
|
|
399
|
+
})
|
400
|
+
})
|
401
|
+
});
|
402
|
+
});
|
348
403
|
|
349
|
-
|
350
|
-
// });
|
351
|
-
// });
|
352
|
-
// });
|
404
|
+
}).timeout(10000)
|
353
405
|
|
354
|
-
it('
|
406
|
+
it('expand-sitemap', (done) => {
|
355
407
|
|
356
408
|
var email = "test-signup-" + Date.now() + "@email.com";
|
357
409
|
var pwd = "pwd";
|
@@ -360,34 +412,20 @@ describe('KbRoute', () => {
|
|
360
412
|
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
361
413
|
|
362
414
|
chai.request(server)
|
363
|
-
.post('/' + savedProject._id + '/kb/
|
415
|
+
.post('/' + savedProject._id + '/kb/sitemap')
|
364
416
|
.auth(email, pwd)
|
365
|
-
.
|
366
|
-
.
|
417
|
+
// .send({ sitemap: "https://www.wired.it/sitemap.xml" })
|
418
|
+
.send({ sitemap: "https://gethelp.tiledesk.com/sitemap.xml" })
|
367
419
|
.end((err, res) => {
|
368
420
|
|
369
|
-
|
370
|
-
res.
|
371
|
-
expect(res.body.length).to.equal(4)
|
372
|
-
|
373
|
-
done();
|
374
|
-
|
375
|
-
// setTimeout(() => {
|
376
|
-
|
377
|
-
// chai.request(server)
|
378
|
-
// .post('/' + savedProject._id + '/kb/multi')
|
379
|
-
// .auth(email, pwd)
|
380
|
-
// .set('Content-Type', 'text/plain')
|
381
|
-
// .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './kbUrlsList.txt')), 'kbUrlsList.txt')
|
382
|
-
// .end((err, res) => {
|
421
|
+
if (err) { console.log("error: ", err) };
|
422
|
+
if (log) { console.log("res.body: ", res.body) }
|
383
423
|
|
384
|
-
|
385
|
-
|
386
|
-
|
424
|
+
res.should.have.status(200);
|
425
|
+
res.body.should.be.a('object');
|
426
|
+
res.body.sites.should.be.a('array');
|
387
427
|
|
388
|
-
|
389
|
-
// })
|
390
|
-
// }, 2000)
|
428
|
+
done();
|
391
429
|
|
392
430
|
})
|
393
431
|
|
@@ -396,7 +434,7 @@ describe('KbRoute', () => {
|
|
396
434
|
|
397
435
|
}).timeout(10000)
|
398
436
|
|
399
|
-
it('
|
437
|
+
it('scrape-single', (done) => {
|
400
438
|
|
401
439
|
var email = "test-signup-" + Date.now() + "@email.com";
|
402
440
|
var pwd = "pwd";
|
@@ -405,41 +443,66 @@ describe('KbRoute', () => {
|
|
405
443
|
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
406
444
|
|
407
445
|
chai.request(server)
|
408
|
-
.
|
446
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
409
447
|
.auth(email, pwd)
|
410
|
-
.set('Content-Type', 'text/plain')
|
411
|
-
.attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './kbUrlsList.txt')), 'kbUrlsList.txt')
|
412
448
|
.end((err, res) => {
|
413
449
|
|
414
|
-
|
415
|
-
res.
|
416
|
-
expect(res.body.length).to.equal(4)
|
450
|
+
if (err) { console.error("err: ", err); }
|
451
|
+
if (log) { console.log("res.body: ", res.body) }
|
417
452
|
|
418
|
-
|
453
|
+
res.should.have.status(200)
|
454
|
+
expect(res.body.length).to.equal(1);
|
419
455
|
|
420
|
-
|
421
|
-
.post('/' + savedProject._id + '/kb/multi')
|
422
|
-
.auth(email, pwd)
|
423
|
-
.set('Content-Type', 'text/plain')
|
424
|
-
.attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './kbUrlsList.txt')), 'kbUrlsList.txt')
|
425
|
-
.end((err, res) => {
|
456
|
+
let namespace_id = res.body[0].id;
|
426
457
|
|
427
|
-
|
428
|
-
|
429
|
-
|
458
|
+
let kb = {
|
459
|
+
name: "https://www.exampleurl6.com",
|
460
|
+
type: "url",
|
461
|
+
source: "https://www.exampleurl6.com",
|
462
|
+
content: "",
|
463
|
+
namespace: namespace_id
|
464
|
+
}
|
430
465
|
|
431
|
-
|
432
|
-
|
433
|
-
|
466
|
+
chai.request(server)
|
467
|
+
.post('/' + savedProject._id + '/kb')
|
468
|
+
.auth(email, pwd)
|
469
|
+
.send(kb) // can be empty
|
470
|
+
.end((err, res) => {
|
471
|
+
if (log) { console.log("create kb res.body: ", res.body); }
|
472
|
+
res.should.have.status(200);
|
434
473
|
|
435
|
-
|
474
|
+
let kbid = res.body.value._id;
|
475
|
+
|
476
|
+
chai.request(server)
|
477
|
+
.post('/' + savedProject._id + "/kb/scrape/single")
|
478
|
+
.auth(email, pwd)
|
479
|
+
.send({ id: kbid })
|
480
|
+
.end((err, res) => {
|
481
|
+
|
482
|
+
if (log) { console.log("single scrape res.body: ", res.body); }
|
483
|
+
|
484
|
+
/**
|
485
|
+
* Unable to verify the response due to an external request
|
486
|
+
*/
|
487
|
+
|
488
|
+
//res.should.have.status(200);
|
489
|
+
// res.body.should.be.a('object');
|
490
|
+
// expect(res.body.id_project).to.equal(savedProject._id.toString())
|
491
|
+
// expect(res.body.maxKbsNumber).to.equal(3);
|
492
|
+
// expect(res.body.maxPagesNumber).to.equal(1000);
|
493
|
+
// expect(res.body.kbs).is.an('array').that.is.empty;
|
494
|
+
done();
|
436
495
|
|
496
|
+
})
|
497
|
+
})
|
498
|
+
})
|
437
499
|
});
|
438
500
|
});
|
501
|
+
});
|
439
502
|
|
440
|
-
}).timeout(10000)
|
441
503
|
|
442
|
-
//
|
504
|
+
// OLD TESTS
|
505
|
+
// it('createNewKb', (done) => {
|
443
506
|
|
444
507
|
// var email = "test-signup-" + Date.now() + "@email.com";
|
445
508
|
// var pwd = "pwd";
|
@@ -447,29 +510,435 @@ describe('KbRoute', () => {
|
|
447
510
|
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
448
511
|
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
449
512
|
|
513
|
+
// let kb = {
|
514
|
+
// name: "example_name5",
|
515
|
+
// type: "url",
|
516
|
+
// source: "https://www.exampleurl5.com",
|
517
|
+
// content: "",
|
518
|
+
// }
|
519
|
+
|
450
520
|
// chai.request(server)
|
451
|
-
// .post('/' + savedProject._id + '/kb
|
521
|
+
// .post('/' + savedProject._id + '/kb')
|
452
522
|
// .auth(email, pwd)
|
453
|
-
// .
|
454
|
-
// .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './TooManykbUrlsList.txt')), 'TooManykbUrlsList.txt')
|
523
|
+
// .send(kb) // can be empty
|
455
524
|
// .end((err, res) => {
|
456
525
|
|
457
|
-
//
|
458
|
-
// res.
|
459
|
-
|
460
|
-
//
|
526
|
+
// if (err) { console.error("err: ", err); }
|
527
|
+
// if (log) { console.log("create kb res.body: ", res.body); }
|
528
|
+
|
529
|
+
// res.should.have.status(200);
|
530
|
+
// res.body.should.be.a('object');
|
531
|
+
|
532
|
+
// done();
|
461
533
|
|
462
|
-
// done()
|
463
534
|
|
464
535
|
// })
|
465
536
|
|
466
537
|
// });
|
467
538
|
// });
|
468
539
|
|
469
|
-
// })
|
540
|
+
// }).timeout(10000);
|
470
541
|
|
471
542
|
// logic in standby
|
472
|
-
// it('
|
543
|
+
// it('createNewKb-namespaceNotBelongsProject', (done) => {
|
544
|
+
|
545
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
546
|
+
// var pwd = "pwd";
|
547
|
+
|
548
|
+
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
549
|
+
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
550
|
+
|
551
|
+
// let kb = {
|
552
|
+
// name: "example_name5",
|
553
|
+
// type: "url",
|
554
|
+
// source: "https://www.exampleurl5.com",
|
555
|
+
// content: "",
|
556
|
+
// namespace: "fakenamespace"
|
557
|
+
// }
|
558
|
+
|
559
|
+
// chai.request(server)
|
560
|
+
// .post('/' + savedProject._id + '/kb')
|
561
|
+
// .auth(email, pwd)
|
562
|
+
// .send(kb) // can be empty
|
563
|
+
// .end((err, res) => {
|
564
|
+
|
565
|
+
// if (err) { console.error("err: ", err); }
|
566
|
+
// if (log) { console.log("create kb res.body: ", res.body); }
|
567
|
+
|
568
|
+
// res.should.have.status(403);
|
569
|
+
// res.body.should.be.a('object');
|
570
|
+
// expect(res.body.success).to.equal(false);
|
571
|
+
// expect(res.body.error).to.equal("Not allowed. The namespace does not belong to the current project.");
|
572
|
+
|
573
|
+
// done();
|
574
|
+
|
575
|
+
|
576
|
+
// })
|
577
|
+
|
578
|
+
// });
|
579
|
+
// });
|
580
|
+
|
581
|
+
//}).timeout(10000);
|
582
|
+
|
583
|
+
// it('createNewKb-replaceNamespace', (done) => {
|
584
|
+
|
585
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
586
|
+
// var pwd = "pwd";
|
587
|
+
|
588
|
+
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
589
|
+
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
590
|
+
|
591
|
+
// let kb = {
|
592
|
+
// name: "example_name5",
|
593
|
+
// type: "url",
|
594
|
+
// source: "https://www.exampleurl5.com",
|
595
|
+
// content: "",
|
596
|
+
// namespace: "fakenamespace"
|
597
|
+
// }
|
598
|
+
|
599
|
+
// chai.request(server)
|
600
|
+
// .post('/' + savedProject._id + '/kb')
|
601
|
+
// .auth(email, pwd)
|
602
|
+
// .send(kb) // can be empty
|
603
|
+
// .end((err, res) => {
|
604
|
+
|
605
|
+
// if (err) { console.error("err: ", err); }
|
606
|
+
// if (log) { console.log("create kb res.body: ", res.body); }
|
607
|
+
|
608
|
+
// res.should.have.status(200);
|
609
|
+
// res.body.should.be.a('object');
|
610
|
+
// expect(res.body.value.namespace).not.equal("fakenamespace");
|
611
|
+
// expect(res.body.value.namespace).to.equal(savedProject._id.toString());
|
612
|
+
|
613
|
+
// done();
|
614
|
+
|
615
|
+
|
616
|
+
// })
|
617
|
+
|
618
|
+
// });
|
619
|
+
// });
|
620
|
+
|
621
|
+
// }).timeout(10000);
|
622
|
+
|
623
|
+
// it('getWithQueries', (done) => {
|
624
|
+
|
625
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
626
|
+
// var pwd = "pwd";
|
627
|
+
|
628
|
+
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
629
|
+
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
630
|
+
|
631
|
+
// let kb1 = {
|
632
|
+
// name: "example_name1",
|
633
|
+
// type: "url",
|
634
|
+
// source: "https://www.exampleurl1.com",
|
635
|
+
// content: ""
|
636
|
+
// }
|
637
|
+
|
638
|
+
// let kb2 = {
|
639
|
+
// name: "example_name2",
|
640
|
+
// type: "text",
|
641
|
+
// source: "example_name2",
|
642
|
+
// content: "example content"
|
643
|
+
// }
|
644
|
+
|
645
|
+
// let kb3 = {
|
646
|
+
// name: "example_name3",
|
647
|
+
// type: "url",
|
648
|
+
// source: "https://www.exampleurl3.com",
|
649
|
+
// content: ""
|
650
|
+
// }
|
651
|
+
|
652
|
+
// chai.request(server)
|
653
|
+
// .post('/' + savedProject._id + "/kb")
|
654
|
+
// .auth(email, pwd)
|
655
|
+
// .send(kb1)
|
656
|
+
// .end((err, res) => {
|
657
|
+
// if (log) { console.log("create kb res.body: ", res.body); }
|
658
|
+
// res.should.have.status(200);
|
659
|
+
|
660
|
+
// setTimeout(() => {
|
661
|
+
// chai.request(server)
|
662
|
+
// .post('/' + savedProject._id + "/kb")
|
663
|
+
// .auth(email, pwd)
|
664
|
+
// .send(kb2)
|
665
|
+
// .end((err, res) => {
|
666
|
+
// if (log) { console.log("create kb res.body: ", res.body); }
|
667
|
+
// res.should.have.status(200);
|
668
|
+
|
669
|
+
// setTimeout(() => {
|
670
|
+
// chai.request(server)
|
671
|
+
// .post('/' + savedProject._id + "/kb")
|
672
|
+
// .auth(email, pwd)
|
673
|
+
// .send(kb3)
|
674
|
+
// .end((err, res) => {
|
675
|
+
// if (log) { console.log("create kb res.body: ", res.body); }
|
676
|
+
// res.should.have.status(200);
|
677
|
+
|
678
|
+
// let query = "?status=100&type=url&limit=5&page=0&direction=-1&sortField=updatedAt&search=example";
|
679
|
+
// //let query = "";
|
680
|
+
// console.log("query: ", query);
|
681
|
+
|
682
|
+
// chai.request(server)
|
683
|
+
// .get('/' + savedProject._id + "/kb" + query)
|
684
|
+
// .auth(email, pwd)
|
685
|
+
// .end((err, res) => {
|
686
|
+
// if (log) { console.log("getall res.body: ", res.body); }
|
687
|
+
// res.should.have.status(200);
|
688
|
+
// res.body.should.be.a('object');
|
689
|
+
// res.body.kbs.should.be.a('array');
|
690
|
+
// expect(res.body.kbs.length).to.equal(2);
|
691
|
+
// expect(res.body.count).to.equal(2);
|
692
|
+
// res.body.query.should.be.a('object');
|
693
|
+
// expect(res.body.query.status).to.equal(100);
|
694
|
+
// expect(res.body.query.limit).to.equal(5);
|
695
|
+
// expect(res.body.query.page).to.equal(0);
|
696
|
+
// expect(res.body.query.direction).to.equal(-1);
|
697
|
+
// expect(res.body.query.sortField).to.equal("updatedAt");
|
698
|
+
// expect(res.body.query.search).to.equal("example");
|
699
|
+
|
700
|
+
// done();
|
701
|
+
|
702
|
+
// })
|
703
|
+
|
704
|
+
// })
|
705
|
+
// }, 1000)
|
706
|
+
// })
|
707
|
+
// }, 1000)
|
708
|
+
|
709
|
+
|
710
|
+
// })
|
711
|
+
// })
|
712
|
+
// })
|
713
|
+
// }).timeout(20000)
|
714
|
+
|
715
|
+
// it('scrapeSingle', (done) => {
|
716
|
+
|
717
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
718
|
+
// var pwd = "pwd";
|
719
|
+
|
720
|
+
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
721
|
+
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
722
|
+
|
723
|
+
// let kb = {
|
724
|
+
// name: "example_name6",
|
725
|
+
// type: "url",
|
726
|
+
// source: "https://www.exampleurl6.com",
|
727
|
+
// content: ""
|
728
|
+
// }
|
729
|
+
|
730
|
+
// chai.request(server)
|
731
|
+
// .post('/' + savedProject._id + '/kb')
|
732
|
+
// .auth(email, pwd)
|
733
|
+
// .send(kb) // can be empty
|
734
|
+
// .end((err, res) => {
|
735
|
+
// if (log) { console.log("create kb res.body: ", res.body); }
|
736
|
+
// res.should.have.status(200);
|
737
|
+
|
738
|
+
// let kbid = res.body.value._id;
|
739
|
+
// console.log("kbid: ", kbid)
|
740
|
+
// chai.request(server)
|
741
|
+
// .post('/' + savedProject._id + "/kb/scrape/single")
|
742
|
+
// .auth(email, pwd)
|
743
|
+
// .send({ id: kbid })
|
744
|
+
// .end((err, res) => {
|
745
|
+
// if (log) { console.log("single scrape res.body: ", res.body); }
|
746
|
+
// //res.should.have.status(200);
|
747
|
+
// // res.body.should.be.a('object');
|
748
|
+
// // expect(res.body.id_project).to.equal(savedProject._id.toString())
|
749
|
+
// // expect(res.body.maxKbsNumber).to.equal(3);
|
750
|
+
// // expect(res.body.maxPagesNumber).to.equal(1000);
|
751
|
+
// // expect(res.body.kbs).is.an('array').that.is.empty;
|
752
|
+
// done();
|
753
|
+
|
754
|
+
// })
|
755
|
+
|
756
|
+
|
757
|
+
// // res.body.should.be.a('object');
|
758
|
+
// // expect(res.body.id_project).to.equal(savedProject._id.toString());
|
759
|
+
|
760
|
+
|
761
|
+
|
762
|
+
|
763
|
+
// })
|
764
|
+
|
765
|
+
// });
|
766
|
+
// });
|
767
|
+
|
768
|
+
// });
|
769
|
+
|
770
|
+
// it('scrapeSingle-namespaceNotBelongsProject', (done) => {
|
771
|
+
|
772
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
773
|
+
// var pwd = "pwd";
|
774
|
+
|
775
|
+
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
776
|
+
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
777
|
+
|
778
|
+
// let kb = {
|
779
|
+
// name: "example_name6",
|
780
|
+
// type: "url",
|
781
|
+
// source: "https://www.exampleurl6.com",
|
782
|
+
// content: ""
|
783
|
+
// }
|
784
|
+
|
785
|
+
// chai.request(server)
|
786
|
+
// .post('/' + savedProject._id + '/kb')
|
787
|
+
// .auth(email, pwd)
|
788
|
+
// .send(kb) // can be empty
|
789
|
+
// .end((err, res) => {
|
790
|
+
// if (log) { console.log("create kb res.body: ", res.body); }
|
791
|
+
// res.should.have.status(200);
|
792
|
+
|
793
|
+
// let kbid = res.body.value._id;
|
794
|
+
// console.log("kbid: ", kbid)
|
795
|
+
// chai.request(server)
|
796
|
+
// .post('/' + savedProject._id + "/kb/scrape/single")
|
797
|
+
// .auth(email, pwd)
|
798
|
+
// .send({ id: kbid })
|
799
|
+
// .end((err, res) => {
|
800
|
+
// if (log) { console.log("single scrape res.body: ", res.body); }
|
801
|
+
// //res.should.have.status(200);
|
802
|
+
// // res.body.should.be.a('object');
|
803
|
+
// // expect(res.body.id_project).to.equal(savedProject._id.toString())
|
804
|
+
// // expect(res.body.maxKbsNumber).to.equal(3);
|
805
|
+
// // expect(res.body.maxPagesNumber).to.equal(1000);
|
806
|
+
// // expect(res.body.kbs).is.an('array').that.is.empty;
|
807
|
+
// done();
|
808
|
+
|
809
|
+
// })
|
810
|
+
|
811
|
+
|
812
|
+
// // res.body.should.be.a('object');
|
813
|
+
// // expect(res.body.id_project).to.equal(savedProject._id.toString());
|
814
|
+
|
815
|
+
|
816
|
+
|
817
|
+
|
818
|
+
// })
|
819
|
+
// });
|
820
|
+
// });
|
821
|
+
// });
|
822
|
+
|
823
|
+
// it('multiadd', (done) => {
|
824
|
+
|
825
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
826
|
+
// var pwd = "pwd";
|
827
|
+
|
828
|
+
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
829
|
+
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
830
|
+
|
831
|
+
// chai.request(server)
|
832
|
+
// .post('/' + savedProject._id + '/kb/multi')
|
833
|
+
// .auth(email, pwd)
|
834
|
+
// .set('Content-Type', 'text/plain')
|
835
|
+
// .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './kbUrlsList.txt')), 'kbUrlsList.txt')
|
836
|
+
// .end((err, res) => {
|
837
|
+
|
838
|
+
// // console.log("res.body: ", res.body)
|
839
|
+
// res.should.have.status(200);
|
840
|
+
// expect(res.body.length).to.equal(4)
|
841
|
+
|
842
|
+
// done();
|
843
|
+
|
844
|
+
// // setTimeout(() => {
|
845
|
+
|
846
|
+
// // chai.request(server)
|
847
|
+
// // .post('/' + savedProject._id + '/kb/multi')
|
848
|
+
// // .auth(email, pwd)
|
849
|
+
// // .set('Content-Type', 'text/plain')
|
850
|
+
// // .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './kbUrlsList.txt')), 'kbUrlsList.txt')
|
851
|
+
// // .end((err, res) => {
|
852
|
+
|
853
|
+
// // // console.log("res.body: ", res.body);
|
854
|
+
// // res.should.have.status(200);
|
855
|
+
// // expect(res.body.length).to.equal(4)
|
856
|
+
|
857
|
+
// // done()
|
858
|
+
// // })
|
859
|
+
// // }, 2000)
|
860
|
+
|
861
|
+
// })
|
862
|
+
|
863
|
+
// });
|
864
|
+
// });
|
865
|
+
|
866
|
+
// }).timeout(10000)
|
867
|
+
|
868
|
+
// it('multiaddFail', (done) => {
|
869
|
+
|
870
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
871
|
+
// var pwd = "pwd";
|
872
|
+
|
873
|
+
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
874
|
+
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
875
|
+
|
876
|
+
// chai.request(server)
|
877
|
+
// .post('/' + savedProject._id + '/kb/multi')
|
878
|
+
// .auth(email, pwd)
|
879
|
+
// .set('Content-Type', 'text/plain')
|
880
|
+
// .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './kbUrlsList.txt')), 'kbUrlsList.txt')
|
881
|
+
// .end((err, res) => {
|
882
|
+
|
883
|
+
// // console.log("res.body: ", res.body)
|
884
|
+
// res.should.have.status(200);
|
885
|
+
// expect(res.body.length).to.equal(4)
|
886
|
+
|
887
|
+
// setTimeout(() => {
|
888
|
+
|
889
|
+
// chai.request(server)
|
890
|
+
// .post('/' + savedProject._id + '/kb/multi')
|
891
|
+
// .auth(email, pwd)
|
892
|
+
// .set('Content-Type', 'text/plain')
|
893
|
+
// .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './kbUrlsList.txt')), 'kbUrlsList.txt')
|
894
|
+
// .end((err, res) => {
|
895
|
+
|
896
|
+
// // console.log("res.body: ", res.body);
|
897
|
+
// res.should.have.status(200);
|
898
|
+
// expect(res.body.length).to.equal(4)
|
899
|
+
|
900
|
+
// done()
|
901
|
+
// })
|
902
|
+
// }, 2000)
|
903
|
+
|
904
|
+
// })
|
905
|
+
|
906
|
+
// });
|
907
|
+
// });
|
908
|
+
|
909
|
+
// }).timeout(10000)
|
910
|
+
|
911
|
+
// it('tooManyUrls', (done) => {
|
912
|
+
|
913
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
914
|
+
// var pwd = "pwd";
|
915
|
+
|
916
|
+
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
917
|
+
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
918
|
+
|
919
|
+
// chai.request(server)
|
920
|
+
// .post('/' + savedProject._id + '/kb/multi')
|
921
|
+
// .auth(email, pwd)
|
922
|
+
// .set('Content-Type', 'text/plain')
|
923
|
+
// .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './TooManykbUrlsList.txt')), 'TooManykbUrlsList.txt')
|
924
|
+
// .end((err, res) => {
|
925
|
+
|
926
|
+
// // console.log("res.body: ", res.body)
|
927
|
+
// res.should.have.status(403);
|
928
|
+
// expect(res.body.success).to.equal(false);
|
929
|
+
// expect(res.body.error).to.equal("Too many urls. Can't index more than 300 urls at a time.");
|
930
|
+
|
931
|
+
// done()
|
932
|
+
|
933
|
+
// })
|
934
|
+
|
935
|
+
// });
|
936
|
+
// });
|
937
|
+
|
938
|
+
// })
|
939
|
+
|
940
|
+
// logic in standby
|
941
|
+
// it('askkb-namespaceNotBelongsProject', (done) => {
|
473
942
|
|
474
943
|
// var email = "test-signup-" + Date.now() + "@email.com";
|
475
944
|
// var pwd = "pwd";
|
@@ -495,7 +964,7 @@ describe('KbRoute', () => {
|
|
495
964
|
// res.body.should.be.a('object');
|
496
965
|
// expect(res.body.success).to.equal(false);
|
497
966
|
// expect(res.body.error).to.equal("Not allowed. The namespace does not belong to the current project.");
|
498
|
-
|
967
|
+
|
499
968
|
// done();
|
500
969
|
// })
|
501
970
|
// })
|
@@ -503,7 +972,118 @@ describe('KbRoute', () => {
|
|
503
972
|
// }).timeout(10000)
|
504
973
|
|
505
974
|
|
506
|
-
it('sitemap', (done) => {
|
975
|
+
// it('sitemap', (done) => {
|
976
|
+
|
977
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
978
|
+
// var pwd = "pwd";
|
979
|
+
|
980
|
+
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
981
|
+
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
982
|
+
|
983
|
+
// chai.request(server)
|
984
|
+
// .post('/' + savedProject._id + '/kb/sitemap')
|
985
|
+
// .auth(email, pwd)
|
986
|
+
// // .send({ sitemap: "https://www.wired.it/sitemap.xml" })
|
987
|
+
// .send({ sitemap: "https://gethelp.tiledesk.com/sitemap.xml" })
|
988
|
+
// .end((err, res) => {
|
989
|
+
|
990
|
+
// if (err) { console.log("error: ", err) };
|
991
|
+
// if (log) { console.log("res.body: ", res.body) }
|
992
|
+
|
993
|
+
// res.should.have.status(200);
|
994
|
+
// res.body.should.be.a('object');
|
995
|
+
// res.body.sites.should.be.a('array');
|
996
|
+
|
997
|
+
// done();
|
998
|
+
|
999
|
+
// })
|
1000
|
+
|
1001
|
+
// });
|
1002
|
+
// });
|
1003
|
+
|
1004
|
+
// }).timeout(10000)
|
1005
|
+
|
1006
|
+
it('webhook', (done) => {
|
1007
|
+
|
1008
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
1009
|
+
var pwd = "pwd";
|
1010
|
+
|
1011
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
1012
|
+
projectService.create("test-kb-webhook", savedUser._id).then(function (savedProject) {
|
1013
|
+
|
1014
|
+
chai.request(server)
|
1015
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
1016
|
+
.auth(email, pwd)
|
1017
|
+
.end((err, res) => {
|
1018
|
+
|
1019
|
+
if (err) { console.log("error: ", err) };
|
1020
|
+
if (log) { console.log("1 res.body: ", res.body) };
|
1021
|
+
|
1022
|
+
res.should.have.status(200);
|
1023
|
+
res.body.should.be.a('array');
|
1024
|
+
|
1025
|
+
let namespace_id = res.body[0].id;
|
1026
|
+
|
1027
|
+
let kb = {
|
1028
|
+
name: "example_name6",
|
1029
|
+
type: "url",
|
1030
|
+
source: "https://www.exampleurl6.com",
|
1031
|
+
content: "",
|
1032
|
+
namespace: namespace_id
|
1033
|
+
}
|
1034
|
+
|
1035
|
+
chai.request(server)
|
1036
|
+
.post('/' + savedProject._id + '/kb/')
|
1037
|
+
.auth(email, pwd)
|
1038
|
+
.send(kb)
|
1039
|
+
.end((err, res) => {
|
1040
|
+
|
1041
|
+
if (err) { console.log("error: ", err) };
|
1042
|
+
if (log) { console.log("2 res.body: ", res.body) };
|
1043
|
+
|
1044
|
+
res.should.have.status(200);
|
1045
|
+
res.body.should.be.a('object');
|
1046
|
+
|
1047
|
+
let kb_id = res.body.value._id;
|
1048
|
+
|
1049
|
+
chai.request(server)
|
1050
|
+
.post('/webhook/kb/status')
|
1051
|
+
.set("x-auth-token", "testtoken")
|
1052
|
+
.send({ id: kb_id, status: 300 })
|
1053
|
+
.end((err, res) => {
|
1054
|
+
|
1055
|
+
if (err) { console.error("err: ", err) };
|
1056
|
+
if (log) { console.log("3 res.body: ", res.body) };
|
1057
|
+
|
1058
|
+
res.should.have.status(200);
|
1059
|
+
res.body.should.be.a('object');
|
1060
|
+
expect(res.body.status).to.equal(300);
|
1061
|
+
|
1062
|
+
done();
|
1063
|
+
|
1064
|
+
})
|
1065
|
+
|
1066
|
+
|
1067
|
+
})
|
1068
|
+
})
|
1069
|
+
|
1070
|
+
|
1071
|
+
|
1072
|
+
|
1073
|
+
});
|
1074
|
+
});
|
1075
|
+
}).timeout(10000)
|
1076
|
+
|
1077
|
+
})
|
1078
|
+
|
1079
|
+
describe('namespaces', () => {
|
1080
|
+
|
1081
|
+
|
1082
|
+
/**
|
1083
|
+
* Get all namespaces of a project.
|
1084
|
+
* If there isn't namespaces for a project_id, the default namespace is created and returned.
|
1085
|
+
*/
|
1086
|
+
it('get-namespaces', (done) => {
|
507
1087
|
|
508
1088
|
var email = "test-signup-" + Date.now() + "@email.com";
|
509
1089
|
var pwd = "pwd";
|
@@ -512,82 +1092,377 @@ describe('KbRoute', () => {
|
|
512
1092
|
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
513
1093
|
|
514
1094
|
chai.request(server)
|
515
|
-
.
|
1095
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
516
1096
|
.auth(email, pwd)
|
517
|
-
// .send({ sitemap: "https://www.wired.it/sitemap.xml" })
|
518
|
-
.send({ sitemap: "https://gethelp.tiledesk.com/sitemap.xml" })
|
519
1097
|
.end((err, res) => {
|
520
1098
|
|
521
|
-
if (err) { console.
|
522
|
-
if (log) { console.log("res.body: ", res.body) }
|
1099
|
+
if (err) { console.error("err: ", err); }
|
1100
|
+
if (log) { console.log("get all namespaces res.body: ", res.body); }
|
523
1101
|
|
524
1102
|
res.should.have.status(200);
|
525
|
-
res.body.should.be.a('
|
526
|
-
res.body.
|
1103
|
+
res.body.should.be.a('array');
|
1104
|
+
expect(res.body.length).to.equal(1);
|
1105
|
+
should.not.exist(res.body[0]._id);
|
1106
|
+
//expect(res.body[0]._id).to.equal(undefined);
|
1107
|
+
expect(res.body[0].id).to.equal(savedProject._id.toString());
|
1108
|
+
expect(res.body[0].name).to.equal("Default");
|
527
1109
|
|
528
1110
|
done();
|
529
1111
|
|
1112
|
+
|
530
1113
|
})
|
531
1114
|
|
532
1115
|
});
|
533
1116
|
});
|
534
1117
|
|
535
|
-
})
|
1118
|
+
})
|
536
1119
|
|
537
|
-
|
1120
|
+
/**
|
1121
|
+
* Get all namespaces of a project.
|
1122
|
+
* If there isn't namespaces for a project_id, the default namespace is created and returned.
|
1123
|
+
*/
|
1124
|
+
it('create-and-get-namespaces', (done) => {
|
538
1125
|
|
539
1126
|
var email = "test-signup-" + Date.now() + "@email.com";
|
540
1127
|
var pwd = "pwd";
|
541
1128
|
|
542
1129
|
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
543
|
-
projectService.create("test-
|
544
|
-
|
545
|
-
let kb = {
|
546
|
-
name: "example_name6",
|
547
|
-
type: "url",
|
548
|
-
source: "https://www.exampleurl6.com",
|
549
|
-
content: "",
|
550
|
-
}
|
1130
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
551
1131
|
|
1132
|
+
// Get all namespaces. Create default namespace and return.
|
552
1133
|
chai.request(server)
|
553
|
-
.
|
1134
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
554
1135
|
.auth(email, pwd)
|
555
|
-
.send(kb)
|
556
1136
|
.end((err, res) => {
|
557
1137
|
|
558
|
-
if (err) { console.
|
559
|
-
if (log) { console.log("res.body: ", res.body) }
|
1138
|
+
if (err) { console.error("err: ", err); }
|
1139
|
+
if (log) { console.log("get all namespaces res.body: ", res.body); }
|
560
1140
|
|
561
1141
|
res.should.have.status(200);
|
562
|
-
res.body.should.be.a('
|
1142
|
+
res.body.should.be.a('array');
|
1143
|
+
expect(res.body.length).to.equal(1);
|
1144
|
+
should.not.exist(res.body[0]._id);
|
1145
|
+
expect(res.body[0].id).to.equal(savedProject._id.toString());
|
1146
|
+
expect(res.body[0].name).to.equal("Default");
|
1147
|
+
|
1148
|
+
// Create another namespace
|
1149
|
+
chai.request(server)
|
1150
|
+
.post('/' + savedProject._id + '/kb/namespace')
|
1151
|
+
.auth(email, pwd)
|
1152
|
+
.send({ name: "MyCustomNamespace" })
|
1153
|
+
.end((err, res) => {
|
1154
|
+
|
1155
|
+
if (err) { console.error("err: ", err) }
|
1156
|
+
if (log) { console.log("create new namespace res.body: ", res.body) }
|
1157
|
+
|
1158
|
+
res.should.have.status(200);
|
1159
|
+
res.body.should.be.a('object');
|
1160
|
+
should.not.exist(res.body._id)
|
1161
|
+
should.exist(res.body.id)
|
1162
|
+
expect(res.body.name).to.equal('MyCustomNamespace');
|
1163
|
+
|
1164
|
+
// Get again all namespace. A new default namespace should not be created.
|
1165
|
+
chai.request(server)
|
1166
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
1167
|
+
.auth(email, pwd)
|
1168
|
+
.end((err, res) => {
|
1169
|
+
|
1170
|
+
if (err) { console.error("err: ", err); }
|
1171
|
+
if (log) { console.log("get all namespaces res.body: ", res.body); }
|
1172
|
+
|
1173
|
+
res.should.have.status(200);
|
1174
|
+
res.body.should.be.a('array');
|
1175
|
+
expect(res.body.length).to.equal(2);
|
1176
|
+
should.not.exist(res.body[0]._id);
|
1177
|
+
should.not.exist(res.body[1]._id);
|
1178
|
+
should.exist(res.body[0].id);
|
1179
|
+
should.exist(res.body[1].id);
|
1180
|
+
|
1181
|
+
done();
|
1182
|
+
})
|
1183
|
+
})
|
1184
|
+
})
|
1185
|
+
});
|
1186
|
+
});
|
1187
|
+
})
|
1188
|
+
|
1189
|
+
|
1190
|
+
/**
|
1191
|
+
* Update namespaces
|
1192
|
+
*/
|
1193
|
+
it('update-namespace', (done) => {
|
563
1194
|
|
564
|
-
|
1195
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
1196
|
+
var pwd = "pwd";
|
1197
|
+
|
1198
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
1199
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
1200
|
+
|
1201
|
+
// Get all namespaces. Create default namespace and return.
|
1202
|
+
chai.request(server)
|
1203
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
1204
|
+
.auth(email, pwd)
|
1205
|
+
.end((err, res) => {
|
1206
|
+
|
1207
|
+
if (err) { console.error("err: ", err); }
|
1208
|
+
if (log) { console.log("get all namespaces res.body: ", res.body); }
|
565
1209
|
|
1210
|
+
res.should.have.status(200);
|
1211
|
+
res.body.should.be.a('array');
|
1212
|
+
expect(res.body.length).to.equal(1);
|
1213
|
+
expect(res.body[0].id).to.equal(savedProject._id.toString());
|
1214
|
+
expect(res.body[0].name).to.equal("Default");
|
1215
|
+
|
1216
|
+
let namespace_id = res.body[0].id;
|
1217
|
+
console.log("namespace_id: ", namespace_id);
|
1218
|
+
|
1219
|
+
let new_settings = {
|
1220
|
+
model: 'gpt-4o',
|
1221
|
+
max_tokens: 256,
|
1222
|
+
temperature: 0.3,
|
1223
|
+
top_k: 6,
|
1224
|
+
context: "You are an awesome AI Assistant."
|
1225
|
+
}
|
1226
|
+
|
1227
|
+
// Update namespace
|
566
1228
|
chai.request(server)
|
567
|
-
.
|
568
|
-
.
|
569
|
-
.send({
|
1229
|
+
.put('/' + savedProject._id + '/kb/namespace/' + namespace_id)
|
1230
|
+
.auth(email, pwd)
|
1231
|
+
.send({ name: "New Name", preview_settings: new_settings })
|
570
1232
|
.end((err, res) => {
|
571
1233
|
|
572
|
-
if (err) { console.error("err: ", err) }
|
573
|
-
if (log) { console.log("res.body: ", res.body) }
|
1234
|
+
if (err) { console.error("err: ", err) }
|
1235
|
+
if (log) { console.log("update namespace res.body: ", res.body) }
|
574
1236
|
|
575
1237
|
res.should.have.status(200);
|
576
1238
|
res.body.should.be.a('object');
|
577
|
-
|
1239
|
+
should.not.exist(res.body._id);
|
1240
|
+
should.exist(res.body.id);
|
1241
|
+
expect(res.body.name).to.equal('New Name');
|
1242
|
+
expect(res.body.preview_settings.model).to.equal('gpt-4o')
|
1243
|
+
expect(res.body.preview_settings.max_tokens).to.equal(256)
|
1244
|
+
expect(res.body.preview_settings.temperature).to.equal(0.3)
|
1245
|
+
expect(res.body.preview_settings.top_k).to.equal(6)
|
578
1246
|
|
579
1247
|
done();
|
580
1248
|
|
581
1249
|
})
|
1250
|
+
})
|
1251
|
+
});
|
1252
|
+
});
|
1253
|
+
})
|
582
1254
|
|
1255
|
+
/**
|
1256
|
+
* Delete default namespace - Forbidden
|
1257
|
+
*/
|
1258
|
+
it('fail-to-delete-default-namespace', (done) => {
|
583
1259
|
|
584
|
-
|
1260
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
1261
|
+
var pwd = "pwd";
|
1262
|
+
|
1263
|
+
userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
1264
|
+
projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
1265
|
+
|
1266
|
+
// Get all namespaces. Create default namespace and return.
|
1267
|
+
chai.request(server)
|
1268
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
1269
|
+
.auth(email, pwd)
|
1270
|
+
.end((err, res) => {
|
1271
|
+
|
1272
|
+
if (err) { console.error("err: ", err); }
|
1273
|
+
if (log) { console.log("get all namespaces res.body: ", res.body); }
|
1274
|
+
|
1275
|
+
res.should.have.status(200);
|
1276
|
+
res.body.should.be.a('array');
|
1277
|
+
expect(res.body.length).to.equal(1);
|
1278
|
+
expect(res.body[0].id).to.equal(savedProject._id.toString());
|
1279
|
+
expect(res.body[0].name).to.equal("Default");
|
1280
|
+
|
1281
|
+
let namespace_id = res.body[0].id;
|
1282
|
+
console.log("namespace_id: ", namespace_id);
|
1283
|
+
|
1284
|
+
// Update namespace
|
1285
|
+
chai.request(server)
|
1286
|
+
.delete('/' + savedProject._id + '/kb/namespace/' + namespace_id)
|
1287
|
+
.auth(email, pwd)
|
1288
|
+
.end((err, res) => {
|
1289
|
+
|
1290
|
+
if (err) { console.error("err: ", err) }
|
1291
|
+
if (log) { console.log("delete namespace res.body: ", res.body) }
|
1292
|
+
|
1293
|
+
res.should.have.status(403);
|
1294
|
+
res.body.should.be.a('object');
|
1295
|
+
expect(res.body.success).to.equal(false);
|
1296
|
+
expect(res.body.error).to.equal('Default namespace cannot be deleted');
|
1297
|
+
|
1298
|
+
done();
|
585
1299
|
|
1300
|
+
})
|
1301
|
+
})
|
586
1302
|
});
|
587
1303
|
});
|
1304
|
+
})
|
1305
|
+
|
1306
|
+
|
1307
|
+
it('get-chatbots-from-namespace', (done) => {
|
1308
|
+
|
1309
|
+
var email = "test-signup-" + Date.now() + "@email.com";
|
1310
|
+
var pwd = "pwd";
|
1311
|
+
|
1312
|
+
userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => {
|
1313
|
+
projectService.create('test-faqkb-create', savedUser._id).then((savedProject) => {
|
1314
|
+
faqService.create("testbot1", null, savedProject._id, savedUser._id).then((savedBot1) => {
|
1315
|
+
faqService.create("testbot2", null, savedProject._id, savedUser._id).then((savedBot2) => {
|
1316
|
+
|
1317
|
+
chai.request(server)
|
1318
|
+
.get('/' + savedProject._id + '/kb/namespace/all')
|
1319
|
+
.auth(email, pwd)
|
1320
|
+
.end((err, res) => {
|
1321
|
+
|
1322
|
+
if (err) { console.error("err: ", err); }
|
1323
|
+
if (log) { console.log("get all namespaces res.body: ", res.body); }
|
1324
|
+
|
1325
|
+
res.should.have.status(200);
|
1326
|
+
|
1327
|
+
let namespace_id = res.body[0].id;
|
1328
|
+
if (log) { console.log("namespace_id: ", namespace_id) }
|
1329
|
+
|
1330
|
+
let newFaq1 = new faq({
|
1331
|
+
id_faq_kb: savedBot1._id,
|
1332
|
+
id_project: savedProject._id,
|
1333
|
+
intent_id: "new-faq-1",
|
1334
|
+
createdBy: savedUser._id,
|
1335
|
+
updatedBy: savedUser._id,
|
1336
|
+
actions: [{ "_tdActionType": "askgptv2", "_tdActionId": "f58212f9-1a8c-4623-b6fa-0f34e57d9999", "namespace": namespace_id }]
|
1337
|
+
})
|
1338
|
+
|
1339
|
+
newFaq1.save((err, saved1) => {
|
1340
|
+
if (err) { console.error("err1: ", err) };
|
1341
|
+
if (log) { console.log("faq1 saved: ", saved1) };
|
1342
|
+
|
1343
|
+
let newFaq2 = new faq({
|
1344
|
+
id_faq_kb: savedBot2._id,
|
1345
|
+
id_project: savedProject._id,
|
1346
|
+
intent_id: "new-faq-2",
|
1347
|
+
createdBy: savedUser._id,
|
1348
|
+
updatedBy: savedUser._id,
|
1349
|
+
actions: [{ "_tdActionType": "reply", "_tdActionId": "f58212f9-1a8c-4623-b6fa-0f34e57d9998" }]
|
1350
|
+
})
|
1351
|
+
|
1352
|
+
newFaq2.save((err, saved2) => {
|
1353
|
+
if (err) { console.error("err2: ", err) };
|
1354
|
+
if (log) { console.log("faq2 saved: ", saved2) };
|
1355
|
+
|
1356
|
+
chai.request(server)
|
1357
|
+
.get('/' + savedProject._id + '/kb/namespace/' + namespace_id + '/chatbots')
|
1358
|
+
.auth(email, pwd)
|
1359
|
+
.end((err, res) => {
|
1360
|
+
|
1361
|
+
if (err) { console.error("err: ", err) };
|
1362
|
+
if (log) { console.log("get chatbots from namespace res.body: ", res.body) };
|
1363
|
+
|
1364
|
+
res.should.have.status(200);
|
1365
|
+
res.body.should.be.a('array');
|
1366
|
+
expect(res.body.length).to.equal(1);
|
1367
|
+
expect(res.body[0]._id).to.equal((savedBot1._id).toString());
|
1368
|
+
expect(res.body[0].name).to.equal('testbot1');
|
1369
|
+
|
1370
|
+
done();
|
1371
|
+
})
|
1372
|
+
})
|
1373
|
+
})
|
1374
|
+
})
|
1375
|
+
|
1376
|
+
})
|
1377
|
+
})
|
1378
|
+
})
|
1379
|
+
})
|
588
1380
|
}).timeout(10000)
|
589
1381
|
|
1382
|
+
/**
|
1383
|
+
* Delete namespace
|
1384
|
+
* !! Unable to test it due to external request
|
1385
|
+
*/
|
1386
|
+
// it('delete-namespace', (done) => {
|
1387
|
+
|
1388
|
+
// var email = "test-signup-" + Date.now() + "@email.com";
|
1389
|
+
// var pwd = "pwd";
|
1390
|
+
|
1391
|
+
// nock('https://api.openai.com')
|
1392
|
+
// .post('/v1/namespaces/delete')
|
1393
|
+
// .reply(200, { success: true });
|
1394
|
+
|
1395
|
+
// userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
|
1396
|
+
// projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
|
1397
|
+
|
1398
|
+
// // Get all namespaces. Create default namespace and return.
|
1399
|
+
// chai.request(server)
|
1400
|
+
// .get('/' + savedProject._id + '/kb/namespace/all')
|
1401
|
+
// .auth(email, pwd)
|
1402
|
+
// .end((err, res) => {
|
1403
|
+
|
1404
|
+
// if (err) { console.error("err: ", err); }
|
1405
|
+
// if (log) { console.log("get all namespaces res.body: ", res.body); }
|
1406
|
+
|
1407
|
+
// res.should.have.status(200);
|
1408
|
+
// res.body.should.be.a('array');
|
1409
|
+
// expect(res.body.length).to.equal(1);
|
1410
|
+
// expect(res.body[0].namespace_id).to.equal(savedProject._id.toString());
|
1411
|
+
// expect(res.body[0].name).to.equal("Default");
|
1412
|
+
|
1413
|
+
// // Create another namespace
|
1414
|
+
// chai.request(server)
|
1415
|
+
// .post('/' + savedProject._id + '/kb/namespace')
|
1416
|
+
// .auth(email, pwd)
|
1417
|
+
// .send({ name: "MyCustomNamespace" })
|
1418
|
+
// .end((err, res) => {
|
1419
|
+
|
1420
|
+
// if (err) { console.error("err: ", err) }
|
1421
|
+
// if (log) { console.log("create new namespace res.body: ", res.body) }
|
1422
|
+
|
1423
|
+
// res.should.have.status(200);
|
1424
|
+
// res.body.should.be.a('object');
|
1425
|
+
// expect(res.body.name).to.equal('MyCustomNamespace');
|
1426
|
+
|
1427
|
+
// let namespace_to_delete = res.body.namespace_id;
|
1428
|
+
// console.log("namespace_to_delete: ", namespace_to_delete);
|
1429
|
+
|
1430
|
+
// // Get again all namespace. A new default namespace should not be created.
|
1431
|
+
// chai.request(server)
|
1432
|
+
// .get('/' + savedProject._id + '/kb/namespace/all')
|
1433
|
+
// .auth(email, pwd)
|
1434
|
+
// .end((err, res) => {
|
1435
|
+
|
1436
|
+
// if (err) { console.error("err: ", err); }
|
1437
|
+
// if (log) { console.log("get all namespaces res.body: ", res.body); }
|
1438
|
+
|
1439
|
+
// res.should.have.status(200);
|
1440
|
+
// res.body.should.be.a('array');
|
1441
|
+
// expect(res.body.length).to.equal(2);
|
1442
|
+
|
1443
|
+
// console.log("namespace_to_delete: ", namespace_to_delete);
|
1444
|
+
|
1445
|
+
// chai.request(server)
|
1446
|
+
// .delete('/' + savedProject._id + '/kb/namespace/' + namespace_to_delete)
|
1447
|
+
// .auth(email, pwd)
|
1448
|
+
// .end((err, res) => {
|
1449
|
+
|
1450
|
+
// if (err) { console.error("err: ", err); }
|
1451
|
+
// if (log) { console.log("delete namespaces res.body: ", res.body); }
|
1452
|
+
|
1453
|
+
// res.should.have.status(200);
|
1454
|
+
|
1455
|
+
// done();
|
1456
|
+
// })
|
1457
|
+
// })
|
1458
|
+
// })
|
1459
|
+
// })
|
1460
|
+
// });
|
1461
|
+
// });
|
1462
|
+
// })
|
1463
|
+
|
590
1464
|
})
|
591
1465
|
});
|
592
1466
|
|
593
1467
|
|
1468
|
+
|