add unit test for maxAge#144
Conversation
|
Is this a surprising result for you? Because of this: |
|
Well, in #121 you removed the .touch() call in the Session.constructor. So the underlying bug is fixed properly? Do we need to put the touch below the hash call? |
|
In the very first PR I noticed a bug where if saveUninitialized is false but maxAge is on, the cookie doesn't get reset: Here's the test that replicates it: test('should set session cookie if saveUninitialized is false and maxAge is on', async (t) => {
t.plan(2)
const options = {
cookie: {
maxAge: 42
},
secret: 'cNaoPYAwF60HZJzkcNaoPYAwF60HZJzk',
saveUninitialized: false
}
const plugin = fastifyPlugin(async (fastify, opts) => {
fastify.addHook('onRequest', (request, reply, done) => {
request.sessionStore.set(DEFAULT_SESSION_ID, {
// In this scenario, maxAge would have set expires in a previous request
cookie: {
expires: new Date(Date.now() + 1000)
}
}, done)
})
})
const fastify = await buildFastify((request, reply) => reply.send(200), options, plugin)
t.teardown(() => fastify.close())
const response = await fastify.inject({
url: '/',
headers: { cookie: DEFAULT_COOKIE, 'x-forwarded-proto': 'https' }
})
t.equal(response.statusCode, 200)
t.ok(response.headers['set-cookie'])
})Changing the hash function fixes it: if (this === sess && key === 'cookie') {
// we want `touch` to affect the hash of the session
return sess.cookie.expires?.getTime()
}
} |
|
Can you provide a separate PR for your suggestion, please? |
Will do! |
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@fastify/session](https://togithub.com/fastify/session) | [`10.2.0` -> `10.4.0`](https://renovatebot.com/diffs/npm/@fastify%2fsession/10.2.0/10.4.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>fastify/session (@​fastify/session)</summary> ### [`v10.4.0`](https://togithub.com/fastify/session/releases/tag/v10.4.0) [Compare Source](https://togithub.com/fastify/session/compare/v10.3.1...v10.4.0) #### What's Changed - fix: make sure to set cookie on manual session saves by [@​SimenB](https://togithub.com/SimenB) in [https://github.com/fastify/session/pull/203](https://togithub.com/fastify/session/pull/203) **Full Changelog**: fastify/session@v10.3.1...v10.4.0 ### [`v10.3.1`](https://togithub.com/fastify/session/releases/tag/v10.3.1) [Compare Source](https://togithub.com/fastify/session/compare/v10.3.0...v10.3.1) #### What's Changed - ci: only trigger on pushes to main branches by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/session/pull/198](https://togithub.com/fastify/session/pull/198) - build(deps-dev): bump [@​types/node](https://togithub.com/types/node) from 18.16.5 to 20.1.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/199](https://togithub.com/fastify/session/pull/199) - fix: manually persisting the session should make `isModified` return false by [@​SimenB](https://togithub.com/SimenB) in [https://github.com/fastify/session/pull/201](https://togithub.com/fastify/session/pull/201) **Full Changelog**: fastify/session@v10.3.0...v10.3.1 ### [`v10.3.0`](https://togithub.com/fastify/session/releases/tag/v10.3.0) [Compare Source](https://togithub.com/fastify/session/compare/v10.2.1...v10.3.0) #### What's Changed - build(deps-dev): bump sinon from 13.0.2 to 14.0.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/88](https://togithub.com/fastify/session/pull/88) - update to Fastify v4 by [@​mcollina](https://togithub.com/mcollina) in [https://github.com/fastify/session/pull/89](https://togithub.com/fastify/session/pull/89) - feat: Update benchmark. by [@​ShogunPanda](https://togithub.com/ShogunPanda) in [https://github.com/fastify/session/pull/91](https://togithub.com/fastify/session/pull/91) - ci: migrate to fastify reusable workflow by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/session/pull/90](https://togithub.com/fastify/session/pull/90) - build(deps-dev): bump fastify-cookie from 5.6.1 to 5.7.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/92](https://togithub.com/fastify/session/pull/92) - docs(readme): remove snyk badge by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/session/pull/93](https://togithub.com/fastify/session/pull/93) - chore(.gitignore): use updated skeleton template by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/session/pull/96](https://togithub.com/fastify/session/pull/96) - build(deps-dev): bump [@​types/node](https://togithub.com/types/node) from 17.0.45 to 18.0.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/97](https://togithub.com/fastify/session/pull/97) - build(deps-dev): bump tsd from 0.20.0 to 0.21.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/98](https://togithub.com/fastify/session/pull/98) - build(deps-dev): bump tsd from 0.21.0 to 0.22.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/102](https://togithub.com/fastify/session/pull/102) - style(types/types.test-d.ts): explicitly declare semicolon by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/session/pull/103](https://togithub.com/fastify/session/pull/103) - refactor: use optional chaining by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/session/pull/104](https://togithub.com/fastify/session/pull/104) - build(deps): bump fastify-plugin from 3.0.1 to 4.0.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/105](https://togithub.com/fastify/session/pull/105) - remove metadata.js by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/107](https://togithub.com/fastify/session/pull/107) - separate lint from npm test script, activate lint and license-check in ci pipeline by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/108](https://togithub.com/fastify/session/pull/108) - refactor unit tests, replace ava with tap, remove undici and typescript as devDependencies by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/109](https://togithub.com/fastify/session/pull/109) - move benchmark to corresponding folder, slim it down by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/110](https://togithub.com/fastify/session/pull/110) - tap should only run test.js files by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/115](https://togithub.com/fastify/session/pull/115) - Clean up tests by [@​rclmenezes](https://togithub.com/rclmenezes) in [https://github.com/fastify/session/pull/117](https://togithub.com/fastify/session/pull/117) - Add missing documentation for README.md by [@​rclmenezes](https://togithub.com/rclmenezes) in [https://github.com/fastify/session/pull/116](https://togithub.com/fastify/session/pull/116) - Simplify shouldSaveSession code a little bit by [@​rclmenezes](https://togithub.com/rclmenezes) in [https://github.com/fastify/session/pull/119](https://togithub.com/fastify/session/pull/119) - Move `expires` from session to session.cookies by [@​rclmenezes](https://togithub.com/rclmenezes) in [https://github.com/fastify/session/pull/120](https://togithub.com/fastify/session/pull/120) - refactor store to es6 class by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/122](https://togithub.com/fastify/session/pull/122) - simplify callback typing by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/124](https://togithub.com/fastify/session/pull/124) - Add cookiePrefix as an option to allow for compatibility with express-session by [@​rclmenezes](https://togithub.com/rclmenezes) in [https://github.com/fastify/session/pull/113](https://togithub.com/fastify/session/pull/113) - perf: improve idgenerator (about 25-30 % faster) by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/123](https://togithub.com/fastify/session/pull/123) - chore: remove addDataToSession by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/127](https://togithub.com/fastify/session/pull/127) - add autocannon example by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/128](https://togithub.com/fastify/session/pull/128) - feat: use [@​fastify/cookie-signer-logic](https://togithub.com/fastify/cookie-signer-logic) for signing and unsigning by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/129](https://togithub.com/fastify/session/pull/129) - move signer require into ensureDefaults by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/130](https://togithub.com/fastify/session/pull/130) - fix unit test by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/132](https://togithub.com/fastify/session/pull/132) - fix lgtm alert by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/133](https://togithub.com/fastify/session/pull/133) - Remove session id round 4 by [@​rclmenezes](https://togithub.com/rclmenezes) in [https://github.com/fastify/session/pull/134](https://togithub.com/fastify/session/pull/134) - simplify getExpires, export getExpires from cookie by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/135](https://togithub.com/fastify/session/pull/135) - remove internal used session restore() function by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/136](https://togithub.com/fastify/session/pull/136) - Revert "refactor store to es6 class" by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/138](https://togithub.com/fastify/session/pull/138) - remove sinon as dev dependency by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/139](https://togithub.com/fastify/session/pull/139) - add redis example by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/142](https://togithub.com/fastify/session/pull/142) - add pre-commit by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/145](https://togithub.com/fastify/session/pull/145) - add unit test for maxAge by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/144](https://togithub.com/fastify/session/pull/144) - create a separate unit test file for memorystore by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/150](https://togithub.com/fastify/session/pull/150) - rename secret.test.js to fastifySession.checkOptions.test.js and refactor it by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/151](https://togithub.com/fastify/session/pull/151) - prevent encryptedSessionId from being stored in the sessionStore by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/143](https://togithub.com/fastify/session/pull/143) - use maxAge over expires by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/152](https://togithub.com/fastify/session/pull/152) - build(deps-dev): bump tsd from 0.22.0 to 0.23.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/153](https://togithub.com/fastify/session/pull/153) - Resave session cookie if saveUninitialized is false and rolling is true by [@​rclmenezes](https://togithub.com/rclmenezes) in [https://github.com/fastify/session/pull/149](https://togithub.com/fastify/session/pull/149) - rename session to fastifySession by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/160](https://togithub.com/fastify/session/pull/160) - Make it possible to call save() in decryptSession by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/161](https://togithub.com/fastify/session/pull/161) - Implement originalMaxAge by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/162](https://togithub.com/fastify/session/pull/162) - Remove deprecation notice for fastify-Instance decryptSession by [@​shrihari-prakash](https://togithub.com/shrihari-prakash) in [https://github.com/fastify/session/pull/164](https://togithub.com/fastify/session/pull/164) - add typings for decryptSession by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/165](https://togithub.com/fastify/session/pull/165) - simplify cookie handling by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/166](https://togithub.com/fastify/session/pull/166) - minor cosmetic change by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/167](https://togithub.com/fastify/session/pull/167) - ensure that secure false is not overwritten by null by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/168](https://togithub.com/fastify/session/pull/168) - security: verify path of cookie/session by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/169](https://togithub.com/fastify/session/pull/169) - build(deps-dev): bump tsd from 0.23.0 to 0.24.1 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/171](https://togithub.com/fastify/session/pull/171) - Little remark fastify-cookie -> [@​fastify/cookie](https://togithub.com/fastify/cookie) by [@​Luchanso](https://togithub.com/Luchanso) in [https://github.com/fastify/session/pull/172](https://togithub.com/fastify/session/pull/172) - fix rolling location in doc by [@​HPieters](https://togithub.com/HPieters) in [https://github.com/fastify/session/pull/175](https://togithub.com/fastify/session/pull/175) - fix: set domain when clearing cookie by [@​TheWashiba](https://togithub.com/TheWashiba) in [https://github.com/fastify/session/pull/174](https://togithub.com/fastify/session/pull/174) - fix: align cookie implementation with express-session by [@​climba03003](https://togithub.com/climba03003) in [https://github.com/fastify/session/pull/177](https://togithub.com/fastify/session/pull/177) - nodenext compatibility by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/session/pull/178](https://togithub.com/fastify/session/pull/178) - build(deps-dev): bump tsd from 0.24.1 to 0.25.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/179](https://togithub.com/fastify/session/pull/179) - types: fix Session interface reference by [@​FabianFrank](https://togithub.com/FabianFrank) in [https://github.com/fastify/session/pull/182](https://togithub.com/fastify/session/pull/182) - chore(.gitignore): add clinic by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/session/pull/183](https://togithub.com/fastify/session/pull/183) - chore(.gitignore): add bun lockfile by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/session/pull/185](https://togithub.com/fastify/session/pull/185) - build(deps-dev): bump connect-redis from 6.1.3 to 7.0.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/186](https://togithub.com/fastify/session/pull/186) - build(deps-dev): bump tsd from 0.25.0 to 0.27.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/187](https://togithub.com/fastify/session/pull/187) - build(deps-dev): bump tsd from 0.27.0 to 0.28.0 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/session/pull/188](https://togithub.com/fastify/session/pull/188) - fix: express session type compatibility by [@​ojeytonwilliams](https://togithub.com/ojeytonwilliams) in [https://github.com/fastify/session/pull/190](https://togithub.com/fastify/session/pull/190) - feat: add ignoreFields option to regenerate method by [@​RafaelGSS](https://togithub.com/RafaelGSS) in [https://github.com/fastify/session/pull/189](https://togithub.com/fastify/session/pull/189) - fix: separate an actual path from url search part before verification by [@​ohchi](https://togithub.com/ohchi) in [https://github.com/fastify/session/pull/192](https://togithub.com/fastify/session/pull/192) - fix: lint by [@​Eomm](https://togithub.com/Eomm) in [https://github.com/fastify/session/pull/195](https://togithub.com/fastify/session/pull/195) - feat!: stricter types by [@​climba03003](https://togithub.com/climba03003) in [https://github.com/fastify/session/pull/196](https://togithub.com/fastify/session/pull/196) #### New Contributors - [@​mcollina](https://togithub.com/mcollina) made their first contribution in [https://github.com/fastify/session/pull/89](https://togithub.com/fastify/session/pull/89) - [@​ShogunPanda](https://togithub.com/ShogunPanda) made their first contribution in [https://github.com/fastify/session/pull/91](https://togithub.com/fastify/session/pull/91) - [@​Uzlopak](https://togithub.com/Uzlopak) made their first contribution in [https://github.com/fastify/session/pull/107](https://togithub.com/fastify/session/pull/107) - [@​rclmenezes](https://togithub.com/rclmenezes) made their first contribution in [https://github.com/fastify/session/pull/117](https://togithub.com/fastify/session/pull/117) - [@​shrihari-prakash](https://togithub.com/shrihari-prakash) made their first contribution in [https://github.com/fastify/session/pull/164](https://togithub.com/fastify/session/pull/164) - [@​Luchanso](https://togithub.com/Luchanso) made their first contribution in [https://github.com/fastify/session/pull/172](https://togithub.com/fastify/session/pull/172) - [@​HPieters](https://togithub.com/HPieters) made their first contribution in [https://github.com/fastify/session/pull/175](https://togithub.com/fastify/session/pull/175) - [@​TheWashiba](https://togithub.com/TheWashiba) made their first contribution in [https://github.com/fastify/session/pull/174](https://togithub.com/fastify/session/pull/174) - [@​FabianFrank](https://togithub.com/FabianFrank) made their first contribution in [https://github.com/fastify/session/pull/182](https://togithub.com/fastify/session/pull/182) - [@​ojeytonwilliams](https://togithub.com/ojeytonwilliams) made their first contribution in [https://github.com/fastify/session/pull/190](https://togithub.com/fastify/session/pull/190) - [@​RafaelGSS](https://togithub.com/RafaelGSS) made their first contribution in [https://github.com/fastify/session/pull/189](https://togithub.com/fastify/session/pull/189) - [@​ohchi](https://togithub.com/ohchi) made their first contribution in [https://github.com/fastify/session/pull/192](https://togithub.com/fastify/session/pull/192) - [@​Eomm](https://togithub.com/Eomm) made their first contribution in [https://github.com/fastify/session/pull/195](https://togithub.com/fastify/session/pull/195) **Full Changelog**: fastify/session@v8.3.0...v10.3.0 ### [`v10.2.1`](https://togithub.com/fastify/session/releases/tag/v10.2.1) [Compare Source](https://togithub.com/fastify/session/compare/v10.2.0...v10.2.1) #### What's Changed - fix: separate an actual path from url search part before verification by [@​ohchi](https://togithub.com/ohchi) in [https://github.com/fastify/session/pull/192](https://togithub.com/fastify/session/pull/192) - fix: lint by [@​Eomm](https://togithub.com/Eomm) in [https://github.com/fastify/session/pull/195](https://togithub.com/fastify/session/pull/195) #### New Contributors - [@​ohchi](https://togithub.com/ohchi) made their first contribution in [https://github.com/fastify/session/pull/192](https://togithub.com/fastify/session/pull/192) - [@​Eomm](https://togithub.com/Eomm) made their first contribution in [https://github.com/fastify/session/pull/195](https://togithub.com/fastify/session/pull/195) **Full Changelog**: fastify/session@v10.2.0...v10.2.1 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 10pm every weekday" in timezone Europe/Paris, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/specfy/specfy). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi40My4yIiwidXBkYXRlZEluVmVyIjoiMzYuNDMuMiIsInRhcmdldEJyYW5jaCI6ImNob3JlL3Jlbm92YXRlQmFzZUJyYW5jaCJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@rclmenezes
Why does it pass? :D
Checklist
npm run testandnpm run benchmarkand the Code of conduct