@@ -17,6 +17,7 @@ limitations under the License.
17
17
import { SlidingSync } from "matrix-js-sdk/src/sliding-sync" ;
18
18
import { mocked } from "jest-mock" ;
19
19
import { MatrixClient , MatrixEvent , Room } from "matrix-js-sdk/src/matrix" ;
20
+ import fetchMockJest from "fetch-mock-jest" ;
20
21
21
22
import { SlidingSyncManager } from "../src/SlidingSyncManager" ;
22
23
import { stubClient } from "./test-utils" ;
@@ -39,6 +40,8 @@ describe("SlidingSyncManager", () => {
39
40
mocked ( client . getRoom ) . mockReturnValue ( null ) ;
40
41
manager . configure ( client , "invalid" ) ;
41
42
manager . slidingSync = slidingSync ;
43
+ fetchMockJest . reset ( ) ;
44
+ fetchMockJest . get ( "https://proxy/client/server.json" , { } ) ;
42
45
} ) ;
43
46
44
47
describe ( "setRoomVisible" , ( ) => {
@@ -236,7 +239,7 @@ describe("SlidingSyncManager", () => {
236
239
describe ( "checkSupport" , ( ) => {
237
240
beforeEach ( ( ) => {
238
241
SlidingSyncController . serverSupportsSlidingSync = false ;
239
- jest . spyOn ( manager , "getProxyFromWellKnown" ) . mockResolvedValue ( "proxy" ) ;
242
+ jest . spyOn ( manager , "getProxyFromWellKnown" ) . mockResolvedValue ( "https:// proxy/ " ) ;
240
243
} ) ;
241
244
it ( "shorts out if the server has 'native' sliding sync support" , async ( ) => {
242
245
jest . spyOn ( manager , "nativeSlidingSyncSupport" ) . mockResolvedValue ( true ) ;
@@ -252,6 +255,25 @@ describe("SlidingSyncManager", () => {
252
255
expect ( manager . getProxyFromWellKnown ) . toHaveBeenCalled ( ) ;
253
256
expect ( SlidingSyncController . serverSupportsSlidingSync ) . toBeTruthy ( ) ;
254
257
} ) ;
258
+ it ( "should query well-known on server_name not baseUrl" , async ( ) => {
259
+ fetchMockJest . get ( "https://matrix.org/.well-known/matrix/client" , {
260
+ "m.homeserver" : {
261
+ base_url : "https://matrix-client.matrix.org" ,
262
+ server : "matrix.org" ,
263
+ } ,
264
+ "org.matrix.msc3575.proxy" : {
265
+ url : "https://proxy/" ,
266
+ } ,
267
+ } ) ;
268
+ fetchMockJest . get ( "https://matrix-client.matrix.org/_matrix/client/versions" , { versions : [ "v1.4" ] } ) ;
269
+
270
+ mocked ( manager . getProxyFromWellKnown ) . mockRestore ( ) ;
271
+ jest . spyOn ( manager , "nativeSlidingSyncSupport" ) . mockResolvedValue ( false ) ;
272
+ expect ( SlidingSyncController . serverSupportsSlidingSync ) . toBeFalsy ( ) ;
273
+ await manager . checkSupport ( client ) ;
274
+ expect ( SlidingSyncController . serverSupportsSlidingSync ) . toBeTruthy ( ) ;
275
+ expect ( fetchMockJest ) . not . toHaveFetched ( "https://matrix-client.matrix.org/.well-known/matrix/client" ) ;
276
+ } ) ;
255
277
} ) ;
256
278
describe ( "nativeSlidingSyncSupport" , ( ) => {
257
279
beforeEach ( ( ) => {
@@ -266,7 +288,7 @@ describe("SlidingSyncManager", () => {
266
288
expect ( feature ) . toBe ( "org.matrix.msc3575" ) ;
267
289
return true ;
268
290
} ) ;
269
- const proxySpy = jest . spyOn ( manager , "getProxyFromWellKnown" ) . mockResolvedValue ( "proxy" ) ;
291
+ const proxySpy = jest . spyOn ( manager , "getProxyFromWellKnown" ) . mockResolvedValue ( "https:// proxy/ " ) ;
270
292
271
293
expect ( SlidingSyncController . serverSupportsSlidingSync ) . toBeFalsy ( ) ;
272
294
await manager . checkSupport ( client ) ; // first thing it does is call nativeSlidingSyncSupport
@@ -287,14 +309,14 @@ describe("SlidingSyncManager", () => {
287
309
expect ( manager . startSpidering ) . toHaveBeenCalled ( ) ;
288
310
} ) ;
289
311
it ( "uses the proxy declared in the client well-known" , async ( ) => {
290
- jest . spyOn ( manager , "getProxyFromWellKnown" ) . mockResolvedValue ( "proxy" ) ;
312
+ jest . spyOn ( manager , "getProxyFromWellKnown" ) . mockResolvedValue ( "https:// proxy/ " ) ;
291
313
await manager . setup ( client ) ;
292
314
expect ( manager . configure ) . toHaveBeenCalled ( ) ;
293
- expect ( manager . configure ) . toHaveBeenCalledWith ( client , "proxy" ) ;
315
+ expect ( manager . configure ) . toHaveBeenCalledWith ( client , "https:// proxy/ " ) ;
294
316
expect ( manager . startSpidering ) . toHaveBeenCalled ( ) ;
295
317
} ) ;
296
318
it ( "uses the legacy `feature_sliding_sync_proxy_url` if it was set" , async ( ) => {
297
- jest . spyOn ( manager , "getProxyFromWellKnown" ) . mockResolvedValue ( "proxy" ) ;
319
+ jest . spyOn ( manager , "getProxyFromWellKnown" ) . mockResolvedValue ( "https:// proxy/ " ) ;
298
320
jest . spyOn ( SettingsStore , "getValue" ) . mockImplementation ( ( name : string ) => {
299
321
if ( name === "feature_sliding_sync_proxy_url" ) return "legacy-proxy" ;
300
322
} ) ;
0 commit comments