-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
refactor(api): deduplicate HTTP test helpers and allow session cookie access #9977
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(api): deduplicate HTTP test helpers and allow session cookie access #9977
Conversation
These refactorizations were made in [PR syncthing#9175][1] to accommodate a few new variants of authentication method and body content. On request from reviewers, this PR extracts it as a smaller refactorization to review in isolation. This extracts a shared `httpRequest` base function from `httpGet` and `httpPost`, which will be used in PR syncthing#9175 for new helper functions `httpGetCsrf` (hiding all optional parameters except the CSRF token), `httpPostCsrf` (same) and `httpPostCsrfAuth` (hiding basic auth parameters). A `getSessionCookie` function is also extracted from `hasSessionCookie` and will be used to test that concurrent WebAuthn authentications result in separate sessions (indicated by different session cookies). [1]: syncthing#9175
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks reasonable and it touches only the test file, which still passes fine. So I'm inclined to get this done with quickly. However, leaving a chance for a second opinion.
@acolomb Is this okay to merge or should I continue to wait for a second opinion? |
Any objections would have been raised by now... Sorry for the wait, I'm a bit busy right now and for the next few days. |
No worries at all! I'm not exactly in a position to complain about things taking time 😅 |
* main: refactor(api): make shutdown timeout configurable for tests (syncthing#9980) refactor(api): deduplicate HTTP test helpers and allow session cookie access (syncthing#9977) build: correct API call for Weblate statistics
* main: (25 commits) refactor(api): make shutdown timeout configurable for tests (#9980) refactor(api): deduplicate HTTP test helpers and allow session cookie access (#9977) build: correct API call for Weblate statistics build(deps): update dependencies (#9978) chore(etc): remove /usr/bin prefix from Linux .desktop files (#9966) build: use Go 1.24, minimum is Go 1.23 (#9960) fix(policy): do not require multiple maintainers for build changes chore(gui, man, authors): update docs, translations, and contributors chore(fs): build kqueue instead of fsevents watcher on iOS (#9950) build(deps): update dependencies (#9951) refactor: using slices.Contains to simplify the code (#9918) build: switch to cloud code signing for Windows (#9948) chore(gui, man, authors): update docs, translations, and contributors chore(gui, man, authors): update docs, translations, and contributors fix(model): clarify errors on Windows user/group lookup (fixes #9929) (#9930) chore(gui, man, authors): update docs, translations, and contributors chore(scanner): don't warn about cancelled scan (#9920) chore(gui, man, authors): update docs, translations, and contributors chore(proto): change symlinktarget to be byte sequence (fixes #9913) (#9914) fix(api): don't crash requests after failing to unmarshal tokens (fixes #9909) (#9912) ...
* main: (175 commits) build: move nightly build schedule to separate workflow (syncthing#10000) chore(syncthing): use file lock on certificate to prevent multiple instances (syncthing#10003) chore(ur): add RSS to reported stats (syncthing#10002) chore(gui, man, authors): update docs, translations, and contributors chore(gui, man, authors): update docs, translations, and contributors fix(api): prevent tilde expansion in path suggestions (fixes syncthing#9990) (syncthing#9992) fix(syncthing): don't auto upgrade to higher major on startup (syncthing#9989) build(deps): update dependencies (syncthing#9988) chore(gui, man, authors): update docs, translations, and contributors refactor(api): extract method configMuxBuilder.postAdjustGui and add test coverage (syncthing#9979) refactor(api): make shutdown timeout configurable for tests (syncthing#9980) refactor(api): deduplicate HTTP test helpers and allow session cookie access (syncthing#9977) build: correct API call for Weblate statistics build(deps): update dependencies (syncthing#9978) chore(etc): remove /usr/bin prefix from Linux .desktop files (syncthing#9966) build: use Go 1.24, minimum is Go 1.23 (syncthing#9960) fix(policy): do not require multiple maintainers for build changes chore(gui, man, authors): update docs, translations, and contributors chore(fs): build kqueue instead of fsevents watcher on iOS (syncthing#9950) build(deps): update dependencies (syncthing#9951) ...
…-is-disabled-for-Send-Only-folders * main: (266 commits) build: move nightly build schedule to separate workflow (syncthing#10000) chore(syncthing): use file lock on certificate to prevent multiple instances (syncthing#10003) chore(ur): add RSS to reported stats (syncthing#10002) chore(gui, man, authors): update docs, translations, and contributors chore(gui, man, authors): update docs, translations, and contributors fix(api): prevent tilde expansion in path suggestions (fixes syncthing#9990) (syncthing#9992) fix(syncthing): don't auto upgrade to higher major on startup (syncthing#9989) build(deps): update dependencies (syncthing#9988) chore(gui, man, authors): update docs, translations, and contributors refactor(api): extract method configMuxBuilder.postAdjustGui and add test coverage (syncthing#9979) refactor(api): make shutdown timeout configurable for tests (syncthing#9980) refactor(api): deduplicate HTTP test helpers and allow session cookie access (syncthing#9977) build: correct API call for Weblate statistics build(deps): update dependencies (syncthing#9978) chore(etc): remove /usr/bin prefix from Linux .desktop files (syncthing#9966) build: use Go 1.24, minimum is Go 1.23 (syncthing#9960) fix(policy): do not require multiple maintainers for build changes chore(gui, man, authors): update docs, translations, and contributors chore(fs): build kqueue instead of fsevents watcher on iOS (syncthing#9950) build(deps): update dependencies (syncthing#9951) ...
These refactorizations were made in PR #9175 to accommodate a few new variants of authentication method and body content. On request from reviewers, this PR extracts it as a smaller refactorization to review in isolation.
Purpose
This extracts a shared
httpRequest
base function fromhttpGet
andhttpPost
, which will be used in PR #9175 for new helper functionshttpGetCsrf
(hiding all optional parameters except the CSRF token),httpPostCsrf
(same) andhttpPostCsrfAuth
(hiding basic auth parameters). AgetSessionCookie
function is also extracted fromhasSessionCookie
and will be used to test that concurrent WebAuthn authentications result in separate sessions (indicated by different session cookies).Testing
Tests still pass after the change.