@tiledesk/tiledesk-server 2.4.49 → 2.4.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app.js +3 -0
- package/channels/chat21/chat21WebHook.js +2 -1
- package/models/kb_setting.js +48 -0
- package/package.json +2 -2
- package/routes/kbsettings.js +128 -0
- package/test/kbsettingsRoute.js +253 -0
    
        package/app.js
    CHANGED
    
    | @@ -113,6 +113,7 @@ var key = require('./routes/key'); | |
| 113 113 | 
             
            var widgets = require('./routes/widget');
         | 
| 114 114 | 
             
            var widgetsLoader = require('./routes/widgetLoader');
         | 
| 115 115 | 
             
            var openai_kbs = require('./routes/openai_kbs');
         | 
| 116 | 
            +
            var kbsettings = require('./routes/kbsettings');
         | 
| 116 117 |  | 
| 117 118 | 
             
            // var admin = require('./routes/admin');
         | 
| 118 119 | 
             
            var faqpub = require('./routes/faqpub');
         | 
| @@ -551,6 +552,8 @@ app.use('/:projectid/emails',[passport.authenticate(['basic', 'jwt'], { session: | |
| 551 552 | 
             
            app.use('/:projectid/properties',[passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['bot','subscription'])], property);
         | 
| 552 553 |  | 
| 553 554 | 
             
            app.use('/:projectid/openai_kbs', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent')], openai_kbs);
         | 
| 555 | 
            +
            app.use('/:projectid/kbsettings', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['bot','subscription'])], kbsettings);
         | 
| 556 | 
            +
             | 
| 554 557 |  | 
| 555 558 |  | 
| 556 559 |  | 
| @@ -312,7 +312,8 @@ router.post('/', function (req, res) { | |
| 312 312 | 
             
                                  // TODO it doesn't work for internal requests bacause participanets == message.sender⁄
         | 
| 313 313 | 
             
                                  if (request.participants && request.participants.indexOf(message.sender) > -1) { //update waiitng time if write an  agent (member of participants)
         | 
| 314 314 | 
             
                                    winston.debug("updateWaitingTimeByRequestId*******");
         | 
| 315 | 
            -
             | 
| 315 | 
            +
                                                                                                                              //leave this parameter to true because it is used by websocket to notify request.update                                 
         | 
| 316 | 
            +
                                    return requestService.updateWaitingTimeByRequestId(request.request_id, request.id_project, true).then(function(upRequest) {
         | 
| 316 317 | 
             
                                      return res.json(upRequest);
         | 
| 317 318 | 
             
                                    });
         | 
| 318 319 | 
             
                                  }else {
         | 
| @@ -0,0 +1,48 @@ | |
| 1 | 
            +
            var mongoose = require('mongoose');
         | 
| 2 | 
            +
            var Schema = mongoose.Schema;
         | 
| 3 | 
            +
            var winston = require('../config/winston');
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            var KBSchema = new Schema({
         | 
| 6 | 
            +
              name: {
         | 
| 7 | 
            +
                type: String,
         | 
| 8 | 
            +
                required: true
         | 
| 9 | 
            +
              },
         | 
| 10 | 
            +
              url: {
         | 
| 11 | 
            +
                type: String,
         | 
| 12 | 
            +
                required: true
         | 
| 13 | 
            +
              },
         | 
| 14 | 
            +
              createdAt: {
         | 
| 15 | 
            +
                type: Date,
         | 
| 16 | 
            +
                default: Date.now,
         | 
| 17 | 
            +
              },
         | 
| 18 | 
            +
              status: {
         | 
| 19 | 
            +
                type: Number,
         | 
| 20 | 
            +
                required: false,
         | 
| 21 | 
            +
                default: -1
         | 
| 22 | 
            +
              }
         | 
| 23 | 
            +
            })
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            var KBSettingSchema = new Schema({
         | 
| 26 | 
            +
              id_project: {
         | 
| 27 | 
            +
                type: String,
         | 
| 28 | 
            +
                required: true,
         | 
| 29 | 
            +
                index: true
         | 
| 30 | 
            +
              },
         | 
| 31 | 
            +
              gptkey: {
         | 
| 32 | 
            +
                type: String,
         | 
| 33 | 
            +
                //required: true
         | 
| 34 | 
            +
              },
         | 
| 35 | 
            +
              maxKbsNumber: {
         | 
| 36 | 
            +
                type: Number,
         | 
| 37 | 
            +
                default: 3
         | 
| 38 | 
            +
              },
         | 
| 39 | 
            +
              maxPagesNumber: {
         | 
| 40 | 
            +
                type: Number,
         | 
| 41 | 
            +
                default: 1000
         | 
| 42 | 
            +
              },
         | 
| 43 | 
            +
              kbs: [ KBSchema ]
         | 
| 44 | 
            +
            });
         | 
| 45 | 
            +
             | 
| 46 | 
            +
             | 
| 47 | 
            +
            module.exports = mongoose.model('KBSettings', KBSettingSchema);
         | 
| 48 | 
            +
            // module.exports = mongoose.model('KB', KBSchema)
         | 
    
        package/package.json
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "@tiledesk/tiledesk-server",
         | 
| 3 3 | 
             
              "description": "The Tiledesk server module",
         | 
| 4 | 
            -
              "version": "2.4. | 
| 4 | 
            +
              "version": "2.4.51",
         | 
| 5 5 | 
             
              "scripts": {
         | 
| 6 6 | 
             
                "start": "node ./bin/www",
         | 
| 7 7 | 
             
                "pretest": "mongodb-runner start",
         | 
| @@ -44,7 +44,7 @@ | |
| 44 44 | 
             
                "@tiledesk/tiledesk-kaleyra-proxy": "^0.1.7",
         | 
| 45 45 | 
             
                "@tiledesk/tiledesk-messenger-connector": "0.1.9",
         | 
| 46 46 | 
             
                "@tiledesk/tiledesk-rasa-connector": "^1.0.10",
         | 
| 47 | 
            -
                "@tiledesk/tiledesk-tybot-connector": "^0.1. | 
| 47 | 
            +
                "@tiledesk/tiledesk-tybot-connector": "^0.1.92",
         | 
| 48 48 | 
             
                "@tiledesk/tiledesk-whatsapp-connector": "^0.1.51",
         | 
| 49 49 | 
             
                "amqplib": "^0.5.5",
         | 
| 50 50 | 
             
                "app-root-path": "^3.0.0",
         | 
| @@ -0,0 +1,128 @@ | |
| 1 | 
            +
            var express = require('express');
         | 
| 2 | 
            +
            var KBSettings = require('../models/kb_setting');
         | 
| 3 | 
            +
            // var KB = require('../models/kb_setting')
         | 
| 4 | 
            +
            var router = express.Router();
         | 
| 5 | 
            +
            var winston = require('../config/winston');
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            router.get('/', async (req, res) => {
         | 
| 8 | 
            +
                let project_id = req.projectid;
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                KBSettings.findOne({ id_project: project_id }, (err, kb_setting) => {
         | 
| 11 | 
            +
                    if (err) {
         | 
| 12 | 
            +
                        winston.error("find knoledge base settings error: ", err);
         | 
| 13 | 
            +
                        return res.status(500).send({ success: false, error: err });
         | 
| 14 | 
            +
                    } 
         | 
| 15 | 
            +
                    else if (!kb_setting) {
         | 
| 16 | 
            +
                        // Automatically creates the kb settings object if it does not exist
         | 
| 17 | 
            +
                        let new_settings = new KBSettings({
         | 
| 18 | 
            +
                            id_project: req.projectid
         | 
| 19 | 
            +
                        })
         | 
| 20 | 
            +
                        new_settings.save(function (err, savedKbSettings) {
         | 
| 21 | 
            +
                            if (err) {
         | 
| 22 | 
            +
                                winston.error("save new kbs error: ", err);
         | 
| 23 | 
            +
                                return res.status(500).send({ success: false, error: err});
         | 
| 24 | 
            +
                            } else {
         | 
| 25 | 
            +
                                return res.status(200).send(savedKbSettings);
         | 
| 26 | 
            +
                            }
         | 
| 27 | 
            +
                        })
         | 
| 28 | 
            +
                    }
         | 
| 29 | 
            +
                    else {
         | 
| 30 | 
            +
                        return res.status(200).send(kb_setting)
         | 
| 31 | 
            +
                    }
         | 
| 32 | 
            +
                })
         | 
| 33 | 
            +
            })
         | 
| 34 | 
            +
             | 
| 35 | 
            +
             | 
| 36 | 
            +
            // Never used?
         | 
| 37 | 
            +
            router.post('/', async (req, res) => {
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                let body = req.body;
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                let new_settings = new KBSettings({
         | 
| 42 | 
            +
                    id_project: req.projectid,
         | 
| 43 | 
            +
                    // gptkey: body.gptkey
         | 
| 44 | 
            +
                    // others params are set with default values
         | 
| 45 | 
            +
                })
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                new_settings.save(function (err, savedKbSettings) {
         | 
| 48 | 
            +
                    if (err) {
         | 
| 49 | 
            +
                        winston.error("save new kbs error: ", err);
         | 
| 50 | 
            +
                        return res.status(500).send({ success: false, error: err});
         | 
| 51 | 
            +
                    } else {
         | 
| 52 | 
            +
                        return res.status(200).send(savedKbSettings);
         | 
| 53 | 
            +
                    }
         | 
| 54 | 
            +
                })
         | 
| 55 | 
            +
            })
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            router.post('/:settings_id', async (req, res) => {
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                let settings_id = req.params.settings_id;
         | 
| 60 | 
            +
                let body = req.body;
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                KBSettings.findById(settings_id, (err, settings) => {
         | 
| 63 | 
            +
                    if (err) {
         | 
| 64 | 
            +
                        winston.error("find knoledge base error: ", err);
         | 
| 65 | 
            +
                        return res.status(500).send({ success: false, error: err});
         | 
| 66 | 
            +
                    } else {
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                        let new_kb = {
         | 
| 69 | 
            +
                            name: body.name,
         | 
| 70 | 
            +
                            url: body.url
         | 
| 71 | 
            +
                        }
         | 
| 72 | 
            +
                        settings.kbs.push(new_kb);
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                        KBSettings.findByIdAndUpdate( settings_id, settings, { new: true }, (err, savedSettings) => {
         | 
| 75 | 
            +
                            if (err) {
         | 
| 76 | 
            +
                                winston.err("findByIdAndUpdate error: ", err);
         | 
| 77 | 
            +
                                res.status(500).send({ success: false, error: err });
         | 
| 78 | 
            +
                            } else {
         | 
| 79 | 
            +
                                res.status(200).send(savedSettings);
         | 
| 80 | 
            +
                            }
         | 
| 81 | 
            +
                        })
         | 
| 82 | 
            +
                    }
         | 
| 83 | 
            +
                })
         | 
| 84 | 
            +
            })
         | 
| 85 | 
            +
             | 
| 86 | 
            +
            router.put('/:settings_id', async (req, res) => {
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                let settings_id = req.params.settings_id;
         | 
| 89 | 
            +
                let update = {};
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                if (req.body.gptkey != undefined) {
         | 
| 92 | 
            +
                    update.gptkey = req.body.gptkey
         | 
| 93 | 
            +
                }
         | 
| 94 | 
            +
                // check if it is eligible
         | 
| 95 | 
            +
                // if (req.body.maxKbsNumber != undefined) {
         | 
| 96 | 
            +
                //     update.maxKbsNumber = req.body.maxKbsNumber
         | 
| 97 | 
            +
                // }
         | 
| 98 | 
            +
                // if (req.body.maxPagesNumber != undefined) {
         | 
| 99 | 
            +
                //     update.maxPagesNumber = req.body.maxPagesNumber
         | 
| 100 | 
            +
                // }
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                winston.debug("update: ", update);
         | 
| 103 | 
            +
                KBSettings.findByIdAndUpdate(settings_id, update, { new: true }, (err, settings) => {
         | 
| 104 | 
            +
                    if (err) {
         | 
| 105 | 
            +
                        winston.error("findByIdAndUpdate error: ", err);
         | 
| 106 | 
            +
                        res.status(500).send({ success: false, error: err });
         | 
| 107 | 
            +
                    } else {
         | 
| 108 | 
            +
                        res.status(200).send(settings);
         | 
| 109 | 
            +
                    }
         | 
| 110 | 
            +
                })
         | 
| 111 | 
            +
            })
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            router.delete('/:settings_id/:kb_id', async (req, res) => {
         | 
| 114 | 
            +
                
         | 
| 115 | 
            +
                let settings_id = req.params.settings_id;
         | 
| 116 | 
            +
                let kb_id = req.params.kb_id;
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                KBSettings.findByIdAndUpdate(settings_id, { $pull: { kbs: { _id: kb_id }}}, { new: true}, (err, settings) => {
         | 
| 119 | 
            +
                    if (err) {
         | 
| 120 | 
            +
                        winston.error("delete kb from list error: ", err);
         | 
| 121 | 
            +
                        res.status(500).send({ success: false, error: err });
         | 
| 122 | 
            +
                    } else {
         | 
| 123 | 
            +
                        res.status(200).send(settings);
         | 
| 124 | 
            +
                    }
         | 
| 125 | 
            +
                })
         | 
| 126 | 
            +
            })
         | 
| 127 | 
            +
             | 
| 128 | 
            +
            module.exports = router;
         | 
| @@ -0,0 +1,253 @@ | |
| 1 | 
            +
            //During the test the env variable is set to test
         | 
| 2 | 
            +
            process.env.NODE_ENV = 'test';
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            var userService = require('../services/userService');
         | 
| 5 | 
            +
            var projectService = require('../services/projectService');
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            let log = false;
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            //Require the dev-dependencies
         | 
| 10 | 
            +
            let chai = require('chai');
         | 
| 11 | 
            +
            let chaiHttp = require('chai-http');
         | 
| 12 | 
            +
            let server = require('../app');
         | 
| 13 | 
            +
            let should = chai.should();
         | 
| 14 | 
            +
            var fs = require('fs');
         | 
| 15 | 
            +
            const path = require('path');
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            // chai.config.includeStack = true;
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            var expect = chai.expect;
         | 
| 20 | 
            +
            var assert = chai.assert;
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            chai.use(chaiHttp);
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            describe('KbSettingsRoute', () => {
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                describe('/create', () => {
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    it('create kb settings', (done) => {
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                        var email = "test-signup-" + Date.now() + "@email.com";
         | 
| 31 | 
            +
                        var pwd = "pwd";
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                        userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
         | 
| 34 | 
            +
                            projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                                chai.request(server)
         | 
| 37 | 
            +
                                    .post('/' + savedProject._id + '/kbsettings')
         | 
| 38 | 
            +
                                    .auth(email, pwd)
         | 
| 39 | 
            +
                                    .send({}) // can be empty
         | 
| 40 | 
            +
                                    .end((err, res) => {
         | 
| 41 | 
            +
                                        if (log) { console.log("create kbsettings res.body: ", res.body); }
         | 
| 42 | 
            +
                                        res.should.have.status(200);
         | 
| 43 | 
            +
                                        res.body.should.be.a('object');
         | 
| 44 | 
            +
                                        expect(res.body.id_project).to.equal(savedProject._id.toString());
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                                        chai.request(server)
         | 
| 47 | 
            +
                                            .get('/' + savedProject._id + "/kbsettings")
         | 
| 48 | 
            +
                                            .auth(email, pwd)
         | 
| 49 | 
            +
                                            .end((err, res) => {
         | 
| 50 | 
            +
                                                if (log) { console.log("get kbsettings res.body: ", res.body); }
         | 
| 51 | 
            +
                                                res.should.have.status(200);
         | 
| 52 | 
            +
                                                res.body.should.be.a('object');
         | 
| 53 | 
            +
                                                expect(res.body.id_project).to.equal(savedProject._id.toString())
         | 
| 54 | 
            +
                                                expect(res.body.maxKbsNumber).to.equal(3);
         | 
| 55 | 
            +
                                                expect(res.body.maxPagesNumber).to.equal(1000);
         | 
| 56 | 
            +
                                                expect(res.body.kbs).is.an('array').that.is.empty;
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                                                done();
         | 
| 59 | 
            +
                                            })
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                                    })
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                            });
         | 
| 64 | 
            +
                        });
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                    });
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                    it('create kb settings if not exists', (done) => {
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                        var email = "test-signup-" + Date.now() + "@email.com";
         | 
| 71 | 
            +
                        var pwd = "pwd";
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                        userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
         | 
| 74 | 
            +
                            projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                                chai.request(server)
         | 
| 77 | 
            +
                                    .get('/' + savedProject._id + "/kbsettings")
         | 
| 78 | 
            +
                                    .auth(email, pwd)
         | 
| 79 | 
            +
                                    .end((err, res) => {
         | 
| 80 | 
            +
                                        if (log) { console.log("get kbsettings res.body: ", res.body); }
         | 
| 81 | 
            +
                                        res.should.have.status(200);
         | 
| 82 | 
            +
                                        res.body.should.be.a('object');
         | 
| 83 | 
            +
                                        expect(res.body.id_project).to.equal(savedProject._id.toString())
         | 
| 84 | 
            +
                                        expect(res.body.maxKbsNumber).to.equal(3);
         | 
| 85 | 
            +
                                        expect(res.body.maxPagesNumber).to.equal(1000);
         | 
| 86 | 
            +
                                        expect(res.body.kbs).is.an('array').that.is.empty;
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                                        done();
         | 
| 89 | 
            +
                                    })
         | 
| 90 | 
            +
                            });
         | 
| 91 | 
            +
                        });
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                    });
         | 
| 94 | 
            +
             | 
| 95 | 
            +
             | 
| 96 | 
            +
                    it('add kb to kb settings', (done) => {
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                        var email = "test-signup-" + Date.now() + "@email.com";
         | 
| 99 | 
            +
                        var pwd = "pwd";
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                        userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
         | 
| 102 | 
            +
                            projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                                chai.request(server)
         | 
| 105 | 
            +
                                    .post('/' + savedProject._id + '/kbsettings')
         | 
| 106 | 
            +
                                    .auth(email, pwd)
         | 
| 107 | 
            +
                                    .send({}) // can be empty
         | 
| 108 | 
            +
                                    .end((err, res) => {
         | 
| 109 | 
            +
                                        if (log) { console.log("create kbsettings res.body: ", res.body); }
         | 
| 110 | 
            +
                                        res.should.have.status(200);
         | 
| 111 | 
            +
                                        res.body.should.be.a('object');
         | 
| 112 | 
            +
                                        expect(res.body.id_project).to.equal(savedProject._id.toString());
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                                        chai.request(server)
         | 
| 115 | 
            +
                                            .post('/' + savedProject._id + "/kbsettings/" + res.body._id)
         | 
| 116 | 
            +
                                            .auth(email, pwd)
         | 
| 117 | 
            +
                                            .send({ name: "exampleurl.com/kb/", url: "https://exampleurl.com/kb/" })
         | 
| 118 | 
            +
                                            .end((err, res) => {
         | 
| 119 | 
            +
                                                if (log) { console.log("add kb to kb settings res.body: ", res.body); }
         | 
| 120 | 
            +
                                                res.should.have.status(200);
         | 
| 121 | 
            +
                                                res.body.should.be.a('object');
         | 
| 122 | 
            +
                                                expect(res.body.kbs).to.have.length(1)
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                                                chai.request(server)
         | 
| 125 | 
            +
                                                    .post('/' + savedProject._id + "/kbsettings/" + res.body._id)
         | 
| 126 | 
            +
                                                    .auth(email, pwd)
         | 
| 127 | 
            +
                                                    .send({ name: "secondurl.com/support/", url: "https://secondurl.com/support/" })
         | 
| 128 | 
            +
                                                    .end((err, res) => {
         | 
| 129 | 
            +
                                                        if (log) { console.log("add kb to kb settings res.body: ", res.body); }
         | 
| 130 | 
            +
                                                        res.should.have.status(200);
         | 
| 131 | 
            +
                                                        res.body.should.be.a('object');
         | 
| 132 | 
            +
                                                        expect(res.body.kbs).to.have.length(2)
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                                                        done();
         | 
| 135 | 
            +
                                                    })
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                                            })
         | 
| 138 | 
            +
                                    })
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                            });
         | 
| 141 | 
            +
                        });
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                    });
         | 
| 144 | 
            +
             | 
| 145 | 
            +
                    it('update kb settings', (done) => {
         | 
| 146 | 
            +
             | 
| 147 | 
            +
                        var email = "test-signup-" + Date.now() + "@email.com";
         | 
| 148 | 
            +
                        var pwd = "pwd";
         | 
| 149 | 
            +
             | 
| 150 | 
            +
                        userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
         | 
| 151 | 
            +
                            projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                                chai.request(server)
         | 
| 154 | 
            +
                                    .post('/' + savedProject._id + '/kbsettings')
         | 
| 155 | 
            +
                                    .auth(email, pwd)
         | 
| 156 | 
            +
                                    .send({}) // can be empty
         | 
| 157 | 
            +
                                    .end((err, res) => {
         | 
| 158 | 
            +
                                        if (log) { console.log("create kbsettings res.body: ", res.body); }
         | 
| 159 | 
            +
                                        res.should.have.status(200);
         | 
| 160 | 
            +
                                        res.body.should.be.a('object');
         | 
| 161 | 
            +
             | 
| 162 | 
            +
                                        chai.request(server)
         | 
| 163 | 
            +
                                            .put('/' + savedProject._id + "/kbsettings/" + res.body._id)
         | 
| 164 | 
            +
                                            .auth(email, pwd)
         | 
| 165 | 
            +
                                            .send({ gptkey: "sk-12345678" })
         | 
| 166 | 
            +
                                            .end((err, res) => {
         | 
| 167 | 
            +
                                                if (log) { console.log("add kb to kb settings res.body: ", res.body); }
         | 
| 168 | 
            +
                                                res.should.have.status(200);
         | 
| 169 | 
            +
                                                res.body.should.be.a('object');
         | 
| 170 | 
            +
             | 
| 171 | 
            +
                                                done();
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                                            })
         | 
| 174 | 
            +
                                    })
         | 
| 175 | 
            +
             | 
| 176 | 
            +
                            });
         | 
| 177 | 
            +
                        });
         | 
| 178 | 
            +
             | 
| 179 | 
            +
                    });
         | 
| 180 | 
            +
             | 
| 181 | 
            +
                    it('delete kb from list', (done) => {
         | 
| 182 | 
            +
             | 
| 183 | 
            +
                        var email = "test-signup-" + Date.now() + "@email.com";
         | 
| 184 | 
            +
                        var pwd = "pwd";
         | 
| 185 | 
            +
             | 
| 186 | 
            +
                        userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) {
         | 
| 187 | 
            +
                            projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) {
         | 
| 188 | 
            +
             | 
| 189 | 
            +
                                chai.request(server)
         | 
| 190 | 
            +
                                    .post('/' + savedProject._id + '/kbsettings')
         | 
| 191 | 
            +
                                    .auth(email, pwd)
         | 
| 192 | 
            +
                                    .send({}) // can be empty
         | 
| 193 | 
            +
                                    .end((err, res) => {
         | 
| 194 | 
            +
                                        if (log) { console.log("create kbsettings res.body: ", res.body); }
         | 
| 195 | 
            +
                                        res.should.have.status(200);
         | 
| 196 | 
            +
                                        res.body.should.be.a('object');
         | 
| 197 | 
            +
                                        expect(res.body.id_project).to.equal(savedProject._id.toString());
         | 
| 198 | 
            +
             | 
| 199 | 
            +
                                        let settings_id = res.body._id;
         | 
| 200 | 
            +
             | 
| 201 | 
            +
                                        chai.request(server)
         | 
| 202 | 
            +
                                            .post('/' + savedProject._id + "/kbsettings/" + settings_id)
         | 
| 203 | 
            +
                                            .auth(email, pwd)
         | 
| 204 | 
            +
                                            .send({ name: "exampleurl.com/kb/", url: "https://exampleurl.com/kb/" })
         | 
| 205 | 
            +
                                            .end((err, res) => {
         | 
| 206 | 
            +
                                                if (log) { console.log("add kb to kb settings res.body: ", res.body); }
         | 
| 207 | 
            +
                                                res.should.have.status(200);
         | 
| 208 | 
            +
                                                res.body.should.be.a('object');
         | 
| 209 | 
            +
                                                expect(res.body.kbs).to.have.length(1)
         | 
| 210 | 
            +
             | 
| 211 | 
            +
                                                let kb_to_delete_id = res.body.kbs[0]._id;
         | 
| 212 | 
            +
             | 
| 213 | 
            +
                                                chai.request(server)
         | 
| 214 | 
            +
                                                    .post('/' + savedProject._id + "/kbsettings/" + settings_id)
         | 
| 215 | 
            +
                                                    .auth(email, pwd)
         | 
| 216 | 
            +
                                                    .send({ name: "secondurl.com/support/", url: "https://secondurl.com/support/" })
         | 
| 217 | 
            +
                                                    .end((err, res) => {
         | 
| 218 | 
            +
                                                        if (log) { console.log("add kb to kb settings res.body: ", res.body); }
         | 
| 219 | 
            +
                                                        res.should.have.status(200);
         | 
| 220 | 
            +
                                                        res.body.should.be.a('object');
         | 
| 221 | 
            +
                                                        expect(res.body.kbs).to.have.length(2)
         | 
| 222 | 
            +
             | 
| 223 | 
            +
                                                        chai.request(server)
         | 
| 224 | 
            +
                                                            .delete('/' + savedProject._id + "/kbsettings/" + settings_id + "/" + kb_to_delete_id)
         | 
| 225 | 
            +
                                                            .auth(email, pwd)
         | 
| 226 | 
            +
                                                            .end((err, res) => {
         | 
| 227 | 
            +
                                                                if (log) { console.log("delete kb res.body: ", res.body); };
         | 
| 228 | 
            +
                                                                res.should.have.status(200);
         | 
| 229 | 
            +
                                                                res.body.should.be.a('object');
         | 
| 230 | 
            +
                                                                expect(res.body.kbs).to.have.length(1)
         | 
| 231 | 
            +
                                                                expect(res.body.kbs[0].name).to.equal("secondurl.com/support/");
         | 
| 232 | 
            +
                                                                expect(res.body.kbs[0].url).to.equal("https://secondurl.com/support/");
         | 
| 233 | 
            +
             | 
| 234 | 
            +
                                                                done();
         | 
| 235 | 
            +
                                                            })
         | 
| 236 | 
            +
                                                    })
         | 
| 237 | 
            +
             | 
| 238 | 
            +
                                            })
         | 
| 239 | 
            +
                                    })
         | 
| 240 | 
            +
                            });
         | 
| 241 | 
            +
                        });
         | 
| 242 | 
            +
             | 
| 243 | 
            +
                    });
         | 
| 244 | 
            +
             | 
| 245 | 
            +
             | 
| 246 | 
            +
             | 
| 247 | 
            +
             | 
| 248 | 
            +
             | 
| 249 | 
            +
                });
         | 
| 250 | 
            +
             | 
| 251 | 
            +
            });
         | 
| 252 | 
            +
             | 
| 253 | 
            +
             |