-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
107 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
const chai = require("chai"); | ||
const expect = chai.expect; | ||
chai.use(require("chai-http")); | ||
const ApiToken = requireSource("api/api-token"); | ||
const nock = require("nock"); | ||
|
||
const { handler } = requireSource("handlers/post-chat-feedback"); | ||
|
||
describe("Chat feedback route", () => { | ||
|
||
helpers.saveEnvironment(); | ||
|
||
beforeEach(() => { | ||
process.env.API_TOKEN_SECRET = "abc123"; | ||
process.env.API_TOKEN_NAME = "dcapiTEST"; | ||
process.env.MEDIACONVERT_DESTINATION_BUCKET = "delete-me"; | ||
}); | ||
|
||
it('should return 401 if user is not logged in', async () => { | ||
let requestBody = JSON.stringify({ | ||
sentiment: 'positive', | ||
context: { | ||
ref: 1, | ||
question: 'What is the capital of France?', | ||
answer: 'Paris', | ||
source_documents: ['https://doc1', 'https://doc2'], | ||
}, | ||
feedback: { | ||
options: ['option1'], | ||
text: 'Great answer!', | ||
email: '[email protected]', | ||
} | ||
}); | ||
|
||
const event = helpers | ||
.mockEvent("POST", "/chat-feedback") | ||
.body(requestBody) | ||
.render(); | ||
const response = await handler(event); | ||
expect(response.statusCode).to.equal(401); | ||
expect(response.body).to.equal('Authorization Required'); | ||
|
||
}); | ||
|
||
it('should fail if request body is invalid', async () => { | ||
const token = new ApiToken().user({ uid: "abc123" }).sign(); | ||
|
||
let requestBody = JSON.stringify({ | ||
sentiment: 'neutral', | ||
context: { | ||
ref: 1, | ||
question: 'What is the capital of France?', | ||
answer: 'Paris', | ||
source_documents: ['https://doc1', 'https://doc2'], | ||
}, | ||
feedback: { | ||
options: ['option1'], | ||
text: 'Great answer!', | ||
email: '[email protected]', | ||
} | ||
}); | ||
|
||
const event = helpers | ||
.mockEvent("POST", "/chat-feedback") | ||
.body(requestBody) | ||
.headers({ | ||
Cookie: `${process.env.API_TOKEN_NAME}=${token}`, | ||
}) | ||
.render(); | ||
const response = await handler(event); | ||
expect(response.statusCode).to.equal(400); | ||
expect(response.body).to.equal(`"sentiment is not one of enum values: positive,negative"`); | ||
}); | ||
|
||
// it("should upload to S3 and return 200 on valid input", async () => { | ||
// const token = new ApiToken().user({ uid: "abc123" }).sign(); | ||
|
||
// const requestBody = JSON.stringify({ | ||
// sentiment: "negative", | ||
// context: { | ||
// ref: 1001, | ||
// question: "What is the capital of France?", | ||
// answer: "Rome", | ||
// source_documents: ["https://doc1", "https://doc2"], | ||
// }, | ||
// feedback: { | ||
// options: ["option1"], | ||
// text: "Bad answer!", | ||
// email: "[email protected]" | ||
// } | ||
// }); | ||
|
||
// nock(`https://${process.env.MEDIACONVERT_DESTINATION_BUCKET}.s3.amazonaws.com`).put('/1001').reply(200); | ||
|
||
// const event = helpers | ||
// .mockEvent("POST", "/chat-feedback") | ||
// .body(requestBody) | ||
// .headers({ | ||
// Cookie: `${process.env.API_TOKEN_NAME}=${token}`, | ||
// }) | ||
// .render(); | ||
// const response = await handler(event); | ||
// expect(response.statusCode).to.equal(200); | ||
// expect(response.body).to.equal('{"message":"Feedback received. Thank you."}'); | ||
// }); | ||
}); |