UNPKG

@tiledesk/tiledesk-server

Version:
1,099 lines (809 loc) 91.3 kB
//During the test the env variable is set to test process.env.NODE_ENV = 'test'; process.env.GPTKEY = "fakegptkey"; process.env.LOG_LEVEL = 'critical' process.env.KB_WEBHOOK_TOKEN = "testtoken" // Similarity // process.env.PINECONE_INDEX = "test_index" // process.env.PINECONE_TYPE = "pod" // Hybrid process.env.PINECONE_INDEX = "test_hybrid_index" process.env.PINECONE_TYPE = "serverless" var userService = require('../services/userService'); var projectService = require('../services/projectService'); var faqService = require('../services/faqService'); let log = false; var config = require('../config/global'); //Require the dev-dependencies let chai = require('chai'); let chaiHttp = require('chai-http'); let server = require('../app'); let should = chai.should(); var fs = require('fs'); const path = require('path'); const mongoose = require('mongoose'); const nock = require('nock'); const faq = require('../models/faq'); // chai.config.includeStack = true; var expect = chai.expect; var assert = chai.assert; mongoose.connect(config.databasetest); chai.use(chaiHttp); describe('KbRoute', () => { describe('/create', () => { // NEW TESTS it('create-new-kb', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("get namespaces res.body: ", res.body); } res.should.have.status(200); expect(res.body.length).to.equal(1); expect(res.body[0].engine.index_name).to.equal('test_hybrid_index') let namespace_id = res.body[0].id; let kb = { name: "example_name5", type: "url", source: "https://www.exampleurl5.com", content: "", namespace: namespace_id } chai.request(server) .post('/' + savedProject._id + '/kb') .auth(email, pwd) .send(kb) // can be empty .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("create kb res.body: ", res.body); } res.should.have.status(200); res.body.should.be.a('object'); expect(res.body.value.id_project).to.equal(res.body.value.namespace) expect(res.body.value.name).to.equal("example_name5") expect(res.body.value.type).to.equal("url") expect(res.body.value.source).to.equal("https://www.exampleurl5.com") expect(res.body.value.status).to.equal(-1) done(); }) }) }); }); }) it('create-new-text-kb', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("get namespaces res.body: ", res.body); } res.should.have.status(200); expect(res.body.length).to.equal(1); let namespace_id = res.body[0].id; if (log) { console.log("namespace_id: ", namespace_id); } let kb = { name: "example_text1", type: "text", source: "example_text1", content: "Example text", namespace: namespace_id } chai.request(server) .post('/' + savedProject._id + '/kb') .auth(email, pwd) .send(kb) // can be empty .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("create kb res.body: ", res.body); } res.should.have.status(200); res.body.should.be.a('object'); expect(res.body.value.id_project).to.equal(res.body.value.namespace) expect(res.body.value.name).to.equal("example_text1") expect(res.body.value.type).to.equal("text") expect(res.body.value.source).to.equal("example_text1") expect(res.body.value.status).to.equal(-1) expect(typeof res.body.value.scrape_type === "undefined").to.be.true; expect(typeof res.body.value.scrape_options === "undefined").to.be.true; done(); }) }) }); }); }) it('get-kb-chunks', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("get namespaces res.body: ", res.body); } res.should.have.status(200); expect(res.body.length).to.equal(1); let namespace_id = res.body[0].id; let kb = { name: "example_text1", type: "text", source: "example_text1", content: "Example text", namespace: namespace_id } chai.request(server) .post('/' + savedProject._id + '/kb') .auth(email, pwd) .send(kb) // can be empty .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("create kb res.body: ", res.body); } res.should.have.status(200); res.body.should.be.a('object'); let content_id = res.body.value._id; chai.request(server) .get('/' + savedProject._id + '/kb/namespace/' + namespace_id + '/chunks/' + content_id) .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err )}; if (log) { console.log("res.body: ", res.body )}; res.should.have.status(200); /** * Unable to verify the response due to an external request */ expect(res.body.success).to.equal(true); expect(res.body.message).to.equal("Get chunks skipped in test environment"); done(); }) }) }) }); }); }) it('get-with-queries', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { /** * Get all namespace. If no namespace exists, a default namespace is created and returned */ chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("get namespaces res.body: ", res.body); } res.should.have.status(200); expect(res.body[0].name === 'Default'); expect(res.body[0].id === savedProject._id); let namespace_id = res.body[0].id; let kb1 = { name: "example_name1", type: "url", namespace: namespace_id, source: "https://www.exampleurl1.com", content: "" } let kb2 = { name: "example_name2", type: "text", namespace: namespace_id, source: "example_name2", content: "example content" } let kb3 = { name: "example_name3", type: "url", namespace: namespace_id, source: "https://www.exampleurl3.com", content: "" } /** * Add contents to default namespace */ chai.request(server) .post('/' + savedProject._id + "/kb") .auth(email, pwd) .send(kb1) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("create kb1 res.body: ", res.body); } res.should.have.status(200); setTimeout(() => { chai.request(server) .post('/' + savedProject._id + "/kb") .auth(email, pwd) .send(kb2) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("create kb2 res.body: ", res.body); } res.should.have.status(200); setTimeout(() => { chai.request(server) .post('/' + savedProject._id + "/kb") .auth(email, pwd) .send(kb3) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("create kb3 res.body: ", res.body); } res.should.have.status(200); let query = "?status=-1&type=url&limit=5&page=0&direction=-1&sortField=updatedAt&search=example&namespace=" + namespace_id; //let query = "?namespace=" + namespace_id; chai.request(server) .get('/' + savedProject._id + "/kb" + query) .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err)} if (log) { console.log("getall res.body: ", res.body); } res.should.have.status(200); res.body.should.be.a('object'); res.body.kbs.should.be.a('array'); expect(res.body.kbs.length).to.equal(2); expect(res.body.count).to.equal(2); res.body.query.should.be.a('object'); expect(res.body.query.status).to.equal(-1); expect(res.body.query.limit).to.equal(5); expect(res.body.query.page).to.equal(0); expect(res.body.query.direction).to.equal(-1); expect(res.body.query.sortField).to.equal("updatedAt"); expect(res.body.query.search).to.equal("example"); done(); }) }) }, 1000) }) }, 1000) }) }) }) }) }).timeout(20000) it('get-with-queries-namespace-not-belong-project', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { /** * Get all namespace. If no namespace exists, a default namespace is created and returned */ chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("get namespaces res.body: ", res.body); } res.should.have.status(200); expect(res.body[0].name === 'Default'); expect(res.body[0].id === savedProject._id); let namespace_id = res.body[0].id; let kb1 = { name: "example_name1", type: "url", namespace: namespace_id, source: "https://www.exampleurl1.com", content: "" } /** * Add contents to default namespace */ chai.request(server) .post('/' + savedProject._id + "/kb") .auth(email, pwd) .send(kb1) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("create kb1 res.body: ", res.body); } res.should.have.status(200); let namespace_id = "fakenamespaceid"; let query = "?status=100&type=url&limit=5&page=0&direction=-1&sortField=updatedAt&search=example&namespace=" + namespace_id; chai.request(server) .get('/' + savedProject._id + "/kb" + query) .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("getall res.body: ", res.body); } res.should.have.status(200); res.body.should.be.a('object'); res.body.kbs.should.be.a('array'); expect(res.body.kbs.length).to.equal(0); expect(res.body.count).to.equal(0); done(); }) }) }) }) }) }).timeout(20000) it('add-multiple-faqs-with-csv', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(200) expect(res.body.length).to.equal(1); let namespace_id = res.body[0].id; chai.request(server) .post('/' + savedProject._id + '/kb/csv?namespace=' + namespace_id) .auth(email, pwd) .set('Content-Type', 'text/csv') .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './fixtures/example-kb-faqs.csv')), 'example-kb-faqs.csv') .field('delimiter', ';') .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(200); done(); }) }) }); }); }).timeout(10000) /** * If you try to add content to a project that has no namespace, it returns 403 forbidden. */ it('add-multiple-urls-no-namespaces', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .post('/' + savedProject._id + '/kb/multi?namespace=123456') .auth(email, pwd) .set('Content-Type', 'text/plain') .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './fixtures/kbUrlsList.txt')), 'kbUrlsList.txt') .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(403); res.should.be.a('object') expect(res.body.success).to.equal(false); let error_response = "No namespace found for the selected project " + savedProject._id + ". Cannot add content to a non-existent namespace." expect(res.body.error).to.equal(error_response); done(); }) }); }); }).timeout(10000) /** * If you try to add content to a namespace that does not belong to the selected project and * the project has at least one namesapce, it returns 403 forbidden. */ it('add-multiple-urls-namespace-not-belong-project', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(200) expect(res.body.length).to.equal(1); chai.request(server) .post('/' + savedProject._id + '/kb/multi?namespace=fakenamespaceid') .auth(email, pwd) .set('Content-Type', 'text/plain') .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './fixtures/kbUrlsList.txt')), 'kbUrlsList.txt') .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(403); res.should.be.a('object'); expect(res.body.success).to.equal(false); let error_response = "Not allowed. The namespace does not belong to the current project." expect(res.body.error).to.equal(error_response); done(); }) }) }); }); }).timeout(10000) it('add-multiple-urls-success', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(200) expect(res.body.length).to.equal(1); let namespace_id = res.body[0].id; chai.request(server) .post('/' + savedProject._id + '/kb/multi?namespace=' + namespace_id) .auth(email, pwd) .set('Content-Type', 'text/plain') .attach('uploadFile', fs.readFileSync(path.resolve(__dirname, './fixtures/kbUrlsList.txt')), 'kbUrlsList.txt') .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(200); expect(res.body.length).to.equal(4) done(); }) }) }); }); }).timeout(10000) it('add-multiple-urls-with-scrape-option-success-type-4', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(200) expect(res.body.length).to.equal(1); let namespace_id = res.body[0].id; chai.request(server) .post('/' + savedProject._id + '/kb/multi?namespace=' + namespace_id) .auth(email, pwd) .send({ list:["https://gethelp.tiledesk.com/article"], scrape_type: 4, scrape_options: { tags_to_extract: ["article","p"], unwanted_tags:["script","style"], unwanted_classnames:["header","related-articles"]}}) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(200); expect(res.body.length).to.equal(1) expect(res.body[0].scrape_type).to.equal(4) expect(typeof res.body[0].scrape_options === "undefined").to.be.false; expect(res.body[0].scrape_options.tags_to_extract.length).to.equal(2); expect(res.body[0].scrape_options.unwanted_tags.length).to.equal(2); expect(res.body[0].scrape_options.unwanted_classnames.length).to.equal(2); done(); }) }) }); }); }).timeout(10000) it('add-multiple-urls-with-scrape-option-success-type-3', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(200) expect(res.body.length).to.equal(1); let namespace_id = res.body[0].id; chai.request(server) .post('/' + savedProject._id + '/kb/multi?namespace=' + namespace_id) .auth(email, pwd) .send({ list:["https://gethelp.tiledesk.com/article"], refresh_rate: 'daily', scrape_type: 3 }) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(200); expect(res.body.length).to.equal(1) expect(res.body[0].scrape_type).to.equal(3) expect(typeof res.body[0].scrape_options === null); done(); }) }) }); }); }).timeout(10000) it('expand-sitemap', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .post('/' + savedProject._id + '/kb/sitemap') .auth(email, pwd) // .send({ sitemap: "https://www.wired.it/sitemap.xml" }) .send({ sitemap: "https://gethelp.tiledesk.com/sitemap.xml" }) .end((err, res) => { if (err) { console.log("error: ", err) }; if (log) { console.log("res.body: ", res.body) } res.should.have.status(200); res.body.should.be.a('object'); res.body.sites.should.be.a('array'); done(); }) }); }); }).timeout(10000) it('scrape-single', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("res.body: ", res.body) } res.should.have.status(200) expect(res.body.length).to.equal(1); let namespace_id = res.body[0].id; let kb = { name: "https://www.exampleurl6.com", type: "url", source: "https://www.exampleurl6.com", content: "", namespace: namespace_id } chai.request(server) .post('/' + savedProject._id + '/kb') .auth(email, pwd) .send(kb) // can be empty .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("create kb res.body: ", res.body); } res.should.have.status(200); let kbid = res.body.value._id; chai.request(server) .post('/' + savedProject._id + "/kb/scrape/single") .auth(email, pwd) .send({ id: kbid }) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("single scrape res.body: ", res.body); } /** * Unable to verify the response due to an external request */ //res.should.have.status(200); // res.body.should.be.a('object'); // expect(res.body.id_project).to.equal(savedProject._id.toString()) // expect(res.body.maxKbsNumber).to.equal(3); // expect(res.body.maxPagesNumber).to.equal(1000); // expect(res.body.kbs).is.an('array').that.is.empty; done(); }) }) }) }); }); }); it('askkb-key-from-env', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => { projectService.create("test-kb-qa", savedUser._id).then((savedProject) => { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("get all namespaces res.body: ", res.body); } chai.request(server) .post('/' + savedProject._id + "/kb/qa") .auth(email, pwd) .send({ model: "gpt-4o", namespace: savedProject._id, question: "sample question", advancedPrompt: true, system_context: "You are a robot coming from future" }) .end((err, res) => { if (err) { console.error("err: ", err) }; if (log) { console.log("res.body: ", res.body) }; done(); }) }) }) }) }).timeout(10000) it('askkb-with-hybrid-search', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test Lastname").then((savedUser) => { projectService.create("test-kb-qa", savedUser._id).then((savedProject) => { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("get all namespaces res.body: ", res.body); } res.should.have.status(200) expect(res.body.length).to.equal(1); expect(res.body[0].type === "serverless"); chai.request(server) .post('/' + savedProject._id + "/kb/qa") .auth(email, pwd) .send({ model: "gpt-4o", namespace: savedProject._id, question: "sample question", advancedPrompt: true, system_context: "You are a robot coming from future" }) .end((err, res) => { if (err) { console.error("err: ", err) }; if (log) { console.log("res.body: ", res.body) }; res.should.have.status(200); expect(res.body.data); expect(res.body.data.search_type === "hybrid"); done(); }) }) }) }) }).timeout(10000) it('webhook', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-kb-webhook", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.log("error: ", err) }; if (log) { console.log("res.body: ", res.body) }; res.should.have.status(200); res.body.should.be.a('array'); let namespace_id = res.body[0].id; let kb = { name: "example_name6", type: "url", source: "https://www.exampleurl6.com", content: "", namespace: namespace_id } chai.request(server) .post('/' + savedProject._id + '/kb/') .auth(email, pwd) .send(kb) .end((err, res) => { if (err) { console.log("error: ", err) }; if (log) { console.log("res.body: ", res.body) }; res.should.have.status(200); res.body.should.be.a('object'); let kb_id = res.body.value._id; chai.request(server) .post('/webhook/kb/status') .set("x-auth-token", "testtoken") .send({ id: kb_id, status: 300 }) .end((err, res) => { if (err) { console.error("err: ", err) }; if (log) { console.log("res.body: ", res.body) }; res.should.have.status(200); res.body.should.be.a('object'); expect(res.body.status).to.equal(300); done(); }) }) }) }); }); }).timeout(10000) it('webhook-reindex', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-kb-webhook", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.log("error: ", err) }; if (log) { console.log("res.body: ", res.body) }; res.should.have.status(200); res.body.should.be.a('array'); let namespace_id = res.body[0].id; let kb = { name: "example_name6", type: "url", source: "https://www.exampleurl6.com", content: "", namespace: namespace_id } chai.request(server) .post('/' + savedProject._id + '/kb/') .auth(email, pwd) .send(kb) .end((err, res) => { if (err) { console.log("error: ", err) }; if (log) { console.log("res.body: ", res.body) }; res.should.have.status(200); res.body.should.be.a('object'); let kb_id = res.body.value._id; chai.request(server) .post('/webhook/kb/reindex') .set("x-auth-token", "testtoken") .send({ content_id: kb_id }) .end((err, res) => { if (err) { console.error("err: ", err) }; if (log) { console.log("res.body: ", res.body) }; res.should.have.status(200); res.body.should.be.a('object'); expect(res.body.success).to.equal(true); expect(res.body.message).to.equal("Content queued for reindexing"); done(); }) }) }) }); }); }).timeout(10000) }) describe('/namespaces', () => { /** * Get all namespaces of a project. * If there isn't namespaces for a project_id, the default namespace is created and returned. */ it('get-namespaces-1', (done) => { var email = "test-signup-" + Date.now() + "@email.com"; var pwd = "pwd"; userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { chai.request(server) .get('/' + savedProject._id + '/kb/namespace/all') .auth(email, pwd) .end((err, res) => { if (err) { console.error("err: ", err); } if (log) { console.log("get all namespaces res.body: ", res.body); } res.should.have.status(200); res.body.should.be.a('array'); expect(res.body.length).to.equal(1); should.not.exist(res.body[0]._id); //expect(res.body[0]._id).to.equal(undefined); expect(res.body[0].id).to.equal(savedProject._id.toString()); expect(res.body[0].name).to.equal("Default"); should.exist(res.body[0].engine) expect(res.body[0].engine.name).to.equal('pinecone') done(); }) }); }); }) /** * Get all namespaces of a project. * If there isn't namespaces for a project_id, the default namespace is created and returned. * WARNING: not working due to namspace creation limit (on trial plan) */ // it('create-and-get-namespaces', (done) => { // var email = "test-signup-" + Date.now() + "@email.com"; // var pwd = "pwd"; // userService.signup(email, pwd, "Test Firstname", "Test lastname").then(function (savedUser) { // projectService.create("test-faqkb-create", savedUser._id).then(function (savedProject) { // // Get all namespaces. Create default namespace and return. // chai.request(server) // .get('/' + savedProject._id + '/kb/namespace/all') // .auth(email, pwd) // .end((err, res) => { // if (err) { console.error("err: ", err); } // if (log) { console.log("get all namespaces res.body: ", res.body); } // console.log("get all namespaces res.body: ", res.body); // res.should.have.status(200); // res.body.should.be.a('array'); // expect(res.body.length).to.equal(1); // should.not.exist(res.body[0]._id); // expect(res.body[0].id).to.equal(savedProject._id.toString()); // expect(res.body[0].name).to.equal("Default"); // // Create another namespace // chai.request(server) // .post('/' + savedProject._id + '/kb/namespace') // .auth(email, pwd) // .send({ name: "MyCustomNamespace" }) // .end((err, res) => { // if (err) { console.error("err: ", err) } // if (log) { console.log("create new namespace res.body: ", res.body) } // console.log("create new namespace res.body: ", res.body) // res.should.have.status(200); // res.body.should.be.a('object'); // should.not.exist(res.body._id) // should.exist(res.body.id) // expect(res.body.name).to.equal('MyCustomNamespace'); // // Get again all namespace. A new default namespace should not be created. // chai.request(server) // .get('/' + savedProject._id + '