riot-web/test
Ed Geraghty bb4f57583f
MSC3575 (Sliding Sync) add well-known proxy support (#12307)
* Initial commit

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Remove commented code

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Change function to reflect it's proxy not native support

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Re-add check for servers with native support

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Add native support check back in

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Re-add endpoint health check function

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Use inbuilt `getWellKnown` function

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Change the error message to the correct function

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Stop storing the proxyurl in the settings for now

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Make the logger messages more useful

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Start moving the checking logic directly into the controller

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Add missing import

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Get the client rather than passing it in to the functions

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* remove invalid `function` keyword

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Fix imports

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Our new functions are private

We shouldn't(?) have to use these check in future elsewhere

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Change our proxy check function to return a boolean

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Make `nativeSlidingSyncSupport` also return boolean, add in health check

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Disable the sliding sync option if the server doesn't support

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Only enable the setting if it passes (again)

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Update our comments to better match what's going on

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Remove unused dialog

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Add a well-known check on start-up, if sliding sync has been enabled

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Check against the correct endpoint...

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Extract baseUrl as we'll reuse it

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Make the logs differentiate between the types of proxy

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Grab the client well-known directly for use

Can't use the client object at this point, it hasn't read in the well-known

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Add myself to the copyright assignation

I wrote the majority of this file...

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Only return `true` if it's actually there

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Correct the `proxySlidingSyncSupport` function comment to match the code

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Correct the `nativeSlidingSyncSupport`function comment to match the code

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Another comment/functionality paring

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Remove duplicated types from the doc

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Move await to the previous line

Removes brackets, and corrects `wellKnown` from being a `Promise`
Signed-off-by: Ed Geraghty <ed@geraghty.family>

* use `waitForClientWellKnown` to avoid a race condition with the request

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Move getting the client out of the `if`, use `waitForClientWellKnown`

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Remove `beforeChange` override

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Move proxy setup logic into `SlidingSyncManager`

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Swap `configure` to private, we call it from `setup` which handles proxy

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Promises are always `true`

TIL.
Signed-off-by: Ed Geraghty <ed@geraghty.family>

* use `timeoutSignal`

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Change message when there's no server support

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Refactor `slidingSyncHealthCheck`

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Refactor `nativeSlidingSyncSupport` with try/catch

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Change comment to hotlink

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Try and make the toggle disabled when there's no endpoint

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Move the if statement outside the refactored fn to avoid an await

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Revert "Swap `configure` to private, we call it from `setup` which handles proxy"

This reverts commit c80a00b50c261becc9ad58e08d2a893d572d8426.

* Remove unused import

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Further refactor `slidingSyncHealthCheck`

`proxySlidingSyncSupport` already checks the client well-known is there
Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Make `proxySlidingSyncSupport` log on success

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Clarify log message for proxy being up

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Move the logic into SlidingSyncManager

All so we can set a static variable because the disabled check isn't asynchronous :)

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Obviously this isn't a return so don't overwrite with false!

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Remove outdated comment

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* No need to pass in the client

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Activating SS should probably be info level logs

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* If we've not enabled sliding sync, push the logs down a bit

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Update i18n error message

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Remove unused i18n strings

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Correct log message

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Prettier

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Remove many of the log messages

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Short out of `checkSupport` if it's `true`

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Add the endpoint back into the log when we're enabling it

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Note in the comment that `feature_sliding_sync_proxy_url` is legacy

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Expand the well-known liveness check log

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* No need to stall the client waiting for sliding sync support

* `AutoDiscovery.findClientConfig` throws if the baseUrl is blank

* Fix `getProxyFromWellKnown` (?)

* Add missing semicolon

Sorry, linter!
Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Pass our `MatrixClient` through instead of trying to grab it

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Add missing return in function comment

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Actually pass through our Client, not the Peg object

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Remove SonarCube smell complaint

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Neew to make our other two methods public to test

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* First passing test

Hurrah!
Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Two more tests, this time on `checkSupport`

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Reset our `serverSupportsSlidingSync` between tests

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Check the static member is being set

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Move the static assignation down to the relevant tests

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Pull getProxyFromWellKnown mocking up

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Check we /haven't/ shorted out

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Move our spy up so we can reuse it

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Check spidering  is being called

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Test the proxy is declared

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Test entered manually

Signed-off-by: Ed Geraghty <ed@geraghty.family>

* Sorry, linter

* I guess these strings are wrong?

* Replace any with string

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

---------

Signed-off-by: Ed Geraghty <ed@geraghty.family>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2024-04-30 18:11:11 +00:00
..
@types
__snapshots__ fix selector so maths support doesn't mangle divs (#12433) 2024-04-16 16:53:57 +00:00
accessibility Improve Forward Dialog a11y by switching to roving tab index interactions (#12306) 2024-03-08 14:45:15 +00:00
actions/handlers
audio Move `mediaDevices` mock out of `setupManualMocks` (#11413) 2023-08-16 08:29:34 +00:00
autocomplete Add MatrixClientPeg::safeGet and use it in tests (#10985) 2023-06-05 18:12:23 +01:00
components Prepare for OIDC QR Login PR (#12463) 2024-04-30 17:18:55 +00:00
contexts OIDC: Persist details in session storage, create store (#11302) 2023-07-20 21:30:19 +00:00
dispatcher
editor Deserialise spoilers back into slash command form (#11805) 2023-10-26 13:35:02 +00:00
events
hooks Adept KnownMembership imports for new location in types 2024-03-18 14:43:08 +00:00
i18n Use Intl for names of languages (#11427) 2023-08-22 14:07:16 +00:00
images
img
models Fix external guest access url for unencrypted rooms (#12345) 2024-03-28 12:25:00 +00:00
modules Replace `SecurityCustomisations` with `CryptoSetupExtension` (#12342) 2024-04-12 15:15:17 +00:00
notifications
settings Add analytics to activity toggles (#12418) 2024-04-22 16:15:29 +00:00
setup Locallazy: Convert even more strings (#11679) 2023-10-02 11:43:00 +01:00
stores Show the local echo in previews (#12451) 2024-04-24 09:22:07 +00:00
test-utils Take the Threads Activity Centre out of labs (#12439) 2024-04-29 15:30:19 +00:00
toasts Refactor element call lobby + skip lobby (#12057) 2024-01-29 16:06:12 +00:00
utils Allow popping out a Jitsi widget to respect Desktop `web_base_url` config (#12376) 2024-03-26 16:27:11 +00:00
voice-broadcast Avoid using deprecated exports & methods from matrix-js-sdk (#12359) 2024-03-25 12:21:02 +00:00
widgets Add config to skip widget_build_url for DM rooms (#11044) 2023-06-06 14:07:51 +00:00
Avatar-test.ts
ContentMessages-test.ts Avoid using deprecated exports & methods from matrix-js-sdk (#12359) 2024-03-25 12:21:02 +00:00
DecryptionFailureTracker-test.ts Use a different error message for UTDs when you weren't in the room. (#12453) 2024-04-29 17:18:57 +00:00
DeviceListener-test.ts DeviceListener: Remove usage of deprecated keybackup API (#11614) 2023-09-20 11:34:18 +00:00
HtmlUtils-test.tsx fix selector so maths support doesn't mangle divs (#12433) 2024-04-16 16:53:57 +00:00
Image-test.ts
KeyBindingsManager-test.ts
LegacyCallHandler-test.ts Adept KnownMembership imports for new location in types 2024-03-18 14:43:08 +00:00
Lifecycle-test.ts Fix spurious session corruption error (#12280) 2024-02-26 15:30:32 +00:00
Markdown-test.ts
MatrixClientPeg-test.ts Replace `SecurityCustomisations` with `CryptoSetupExtension` (#12342) 2024-04-12 15:15:17 +00:00
MediaDeviceHandler-test.ts Add MatrixClientPeg::safeGet and use it in tests (#10985) 2023-06-05 18:12:23 +01:00
Notifier-test.ts Add ringing for matrixRTC (#11870) 2023-11-21 17:12:08 +00:00
PosthogAnalytics-test.ts Update all non-major dependencies (#12468) 2024-04-30 14:41:46 +00:00
PreferredRoomVersions-test.ts Allow creating knock rooms (#11182) 2023-07-10 08:01:03 +00:00
Reply-test.ts Avoid using deprecated exports & methods from matrix-js-sdk (#12359) 2024-03-25 12:21:02 +00:00
RoomNotifs-test.ts Adept KnownMembership imports for new location in types 2024-03-18 14:43:08 +00:00
Rooms-test.ts
ScalarAuthClient-test.ts
SdkConfig-test.ts
SecurityManager-test.ts Set up key backup using non-deprecated APIs (2nd take) (#12098) 2024-01-10 10:34:03 +00:00
SlashCommands-test.tsx Adept KnownMembership imports for new location in types 2024-03-18 14:43:08 +00:00
SlidingSyncManager-test.ts MSC3575 (Sliding Sync) add well-known proxy support (#12307) 2024-04-30 18:11:11 +00:00
Terms-test.tsx
TestSdkContext.ts
TextForEvent-test.ts Avoid using deprecated exports & methods from matrix-js-sdk (#12359) 2024-03-25 12:21:02 +00:00
Unread-test.ts Avoid using deprecated exports & methods from matrix-js-sdk (#12359) 2024-03-25 12:21:02 +00:00
UserActivity-test.ts Replace sinon fake timers with jest timers (#11275) 2023-07-17 12:29:51 +00:00
WorkerManager-test.ts Load web workers in a way that Webpack 5 can bundle them 2023-11-11 16:03:08 +01:00
createRoom-test.ts Avoid using deprecated exports & methods from matrix-js-sdk (#12359) 2024-03-25 12:21:02 +00:00
email-test.ts
globalSetup.ts Improve randomString mock for better snapshots (#11375) 2023-08-09 09:39:48 +01:00
languageHandler-test.tsx Migrate more strings to translation keys (#11694) 2023-10-03 19:17:26 +01:00
linkify-matrix-test.ts Fix clicking MXID in timeline going to matrix.to (#11263) 2023-07-14 10:55:55 +00:00
predictableRandom.ts GYU: Account Notification Settings (#11008) 2023-06-29 15:46:31 +00:00
setupTests.ts Only retry Jest tests in CI mode (#12111) 2024-01-08 12:05:02 +00:00
slowReporter.js
submit-rageshake-test.ts Add A-Element-R labels to rageshakes if rust (#12251) 2024-02-15 19:45:46 +00:00
theme-test.ts Enable custom themes to theme Compound (#12240) 2024-02-13 14:07:58 +00:00
useTopic-test.tsx Switch to importing models/Room from main js-sdk export (#11361) 2023-08-04 07:36:16 +00:00