Skip to content

Commit

Permalink
fix: server to send cookie and headers
Browse files Browse the repository at this point in the history
  • Loading branch information
mjancarik committed Feb 29, 2024
1 parent acb479b commit d24a834
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
5 changes: 5 additions & 0 deletions .changeset/lemon-spoons-cheer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@ima/server": patch
---

Fix server to send defined headers and cookie to response.
32 changes: 32 additions & 0 deletions packages/server/lib/factory/__tests__/responseUtilsFactorySpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ describe('responseUtilsFactory', () => {
const {
processContent,
createContentVariables,
sendResponseHeaders,
_prepareCookieOptionsForExpress,
} = responseUtilsFactory({ applicationFolder: 'applicationFolder' });

Expand All @@ -46,12 +47,15 @@ describe('responseUtilsFactory', () => {
beforeEach(() => {
event = {
res: {
cookie: jest.fn(),
set: jest.fn(),
locals: {},
},
context: {
response: {
content: '<html>#{styles}#{revivalSettings}#{runner}</html>',
contentVariables: {},
page: {},
},
bootConfig: {
settings: {
Expand Down Expand Up @@ -86,6 +90,34 @@ describe('responseUtilsFactory', () => {
});
});

describe('sendResponseHeaders', () => {
it('should set page cookie to response headers', () => {
const cookie = new Map();
cookie.set('namex', { value: 1, options: {} });
cookie.set('namey', { value: 2, options: {} });

event.context.response.page.cookie = cookie;

sendResponseHeaders(event);

expect(event.res.cookie).toHaveBeenCalledTimes(2);
expect(event.res.cookie.mock.calls[0]).toEqual(['namex', 1, {}]);
expect(event.res.cookie.mock.calls[1]).toEqual(['namey', 2, {}]);
});

it('should set page headers to response headers', () => {
event.context.response.page.headers = {
'Content-Type': 'text/html',
};

sendResponseHeaders(event);

expect(event.res.set).toHaveBeenCalledTimes(1);
expect(event.res.set.mock.calls[0][0]).toEqual(
event.context.response.page.headers
);
});
});
describe('createContentVariables', () => {
it('should return empty object if there is no valid bootConfig', () => {
expect(createContentVariables({ context: {} })).toStrictEqual({});
Expand Down
4 changes: 2 additions & 2 deletions packages/server/lib/factory/responseUtilsFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ module.exports = function responseUtilsFactory({ applicationFolder }) {
}

function _setCookieHeaders({ res, context }) {
for (let [name, param] of context?.page?.cookie ?? []) {
for (let [name, param] of context?.response?.page?.cookie ?? []) {
const options = _prepareCookieOptionsForExpress(param.options);
res.cookie(name, param.value, options);
}
Expand All @@ -92,7 +92,7 @@ module.exports = function responseUtilsFactory({ applicationFolder }) {
function sendResponseHeaders({ context, res }) {
_setCookieHeaders({ res, context });

res.set(context?.page?.headers ?? {});
res.set(context?.response?.page?.headers ?? {});
}

// Preload resources
Expand Down

0 comments on commit d24a834

Please sign in to comment.