Skip to content

Commit

Permalink
Integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kdid committed Jun 27, 2024
1 parent 452c4d8 commit b9457dd
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 1 deletion.
2 changes: 1 addition & 1 deletion node/src/handlers/post-chat-feedback.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ const handler = wrap(async (event) => {
return {
statusCode: 400,
headers: { "Content-Type": "text/plain" },
body: JSON.stringify(errors),
body: JSON.stringify(errors.join(", ")),
};
}
await uploadToS3(`${content.sentiment}/${content.context.ref}`, content);
Expand Down
106 changes: 106 additions & 0 deletions node/test/integration/post-chat-feedback.test.js
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");

Check failure on line 5 in node/test/integration/post-chat-feedback.test.js

View workflow job for this annotation

GitHub Actions / test

'nock' is assigned a value but never used

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."}');
// });
});

0 comments on commit b9457dd

Please sign in to comment.