@@ -150,7 +150,12 @@ impl MatrixMockServer {
150
150
/// Get an `OauthMockServer` that uses the same mock server as this one.
151
151
#[ cfg( feature = "experimental-oidc" ) ]
152
152
pub fn oauth ( & self ) -> oauth:: OauthMockServer < ' _ > {
153
- oauth:: OauthMockServer :: new ( self . server ( ) )
153
+ oauth:: OauthMockServer :: new ( self )
154
+ }
155
+
156
+ /// Mock the given endpoint.
157
+ fn mock_endpoint < T > ( & self , mock : MockBuilder , endpoint : T ) -> MockEndpoint < ' _ , T > {
158
+ MockEndpoint :: new ( & self . server , mock, endpoint)
154
159
}
155
160
156
161
/// Overrides the sync/ endpoint with knowledge that the given
@@ -286,11 +291,10 @@ impl MatrixMockServer {
286
291
let mock = Mock :: given ( method ( "GET" ) )
287
292
. and ( path ( "/_matrix/client/v3/sync" ) )
288
293
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
289
- MockEndpoint {
294
+ self . mock_endpoint (
290
295
mock,
291
- server : & self . server ,
292
- endpoint : SyncEndpoint { sync_response_builder : self . sync_response_builder . clone ( ) } ,
293
- }
296
+ SyncEndpoint { sync_response_builder : self . sync_response_builder . clone ( ) } ,
297
+ )
294
298
}
295
299
296
300
/// Creates a prebuilt mock for sending an event in a room.
@@ -334,7 +338,7 @@ impl MatrixMockServer {
334
338
let mock = Mock :: given ( method ( "PUT" ) )
335
339
. and ( header ( "authorization" , "Bearer 1234" ) )
336
340
. and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/send/.*" . to_owned ( ) ) ) ;
337
- MockEndpoint { mock , server : & self . server , endpoint : RoomSendEndpoint }
341
+ self . mock_endpoint ( mock , RoomSendEndpoint )
338
342
}
339
343
340
344
/// Creates a prebuilt mock for sending a state event in a room.
@@ -384,7 +388,7 @@ impl MatrixMockServer {
384
388
let mock = Mock :: given ( method ( "PUT" ) )
385
389
. and ( header ( "authorization" , "Bearer 1234" ) )
386
390
. and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/state/.*/.*" ) ) ;
387
- MockEndpoint { mock , server : & self . server , endpoint : RoomSendStateEndpoint :: default ( ) }
391
+ self . mock_endpoint ( mock , RoomSendStateEndpoint :: default ( ) )
388
392
}
389
393
390
394
/// Creates a prebuilt mock for asking whether *a* room is encrypted or not.
@@ -416,7 +420,7 @@ impl MatrixMockServer {
416
420
let mock = Mock :: given ( method ( "GET" ) )
417
421
. and ( header ( "authorization" , "Bearer 1234" ) )
418
422
. and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/state/m.*room.*encryption.?" ) ) ;
419
- MockEndpoint { mock , server : & self . server , endpoint : EncryptionStateEndpoint }
423
+ self . mock_endpoint ( mock , EncryptionStateEndpoint )
420
424
}
421
425
422
426
/// Creates a prebuilt mock for setting the room encryption state.
@@ -456,7 +460,7 @@ impl MatrixMockServer {
456
460
let mock = Mock :: given ( method ( "PUT" ) )
457
461
. and ( header ( "authorization" , "Bearer 1234" ) )
458
462
. and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/state/m.*room.*encryption.?" ) ) ;
459
- MockEndpoint { mock , server : & self . server , endpoint : SetEncryptionStateEndpoint }
463
+ self . mock_endpoint ( mock , SetEncryptionStateEndpoint )
460
464
}
461
465
462
466
/// Creates a prebuilt mock for the room redact endpoint.
@@ -489,17 +493,13 @@ impl MatrixMockServer {
489
493
let mock = Mock :: given ( method ( "PUT" ) )
490
494
. and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/redact/.*?/.*?" ) )
491
495
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
492
- MockEndpoint { mock , server : & self . server , endpoint : RoomRedactEndpoint }
496
+ self . mock_endpoint ( mock , RoomRedactEndpoint )
493
497
}
494
498
495
499
/// Creates a prebuilt mock for retrieving an event with /room/.../event.
496
500
pub fn mock_room_event ( & self ) -> MockEndpoint < ' _ , RoomEventEndpoint > {
497
501
let mock = Mock :: given ( method ( "GET" ) ) . and ( header ( "authorization" , "Bearer 1234" ) ) ;
498
- MockEndpoint {
499
- mock,
500
- server : & self . server ,
501
- endpoint : RoomEventEndpoint { room : None , match_event_id : false } ,
502
- }
502
+ self . mock_endpoint ( mock, RoomEventEndpoint { room : None , match_event_id : false } )
503
503
}
504
504
505
505
/// Create a prebuild mock for paginating room message with the `/messages`
@@ -508,15 +508,15 @@ impl MatrixMockServer {
508
508
let mock = Mock :: given ( method ( "GET" ) )
509
509
. and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/messages$" ) )
510
510
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
511
- MockEndpoint { mock , server : & self . server , endpoint : RoomMessagesEndpoint }
511
+ self . mock_endpoint ( mock , RoomMessagesEndpoint )
512
512
}
513
513
514
514
/// Create a prebuilt mock for uploading media.
515
515
pub fn mock_upload ( & self ) -> MockEndpoint < ' _ , UploadEndpoint > {
516
516
let mock = Mock :: given ( method ( "POST" ) )
517
517
. and ( path ( "/_matrix/media/v3/upload" ) )
518
518
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
519
- MockEndpoint { mock , server : & self . server , endpoint : UploadEndpoint }
519
+ self . mock_endpoint ( mock , UploadEndpoint )
520
520
}
521
521
522
522
/// Create a prebuilt mock for resolving room aliases.
@@ -549,7 +549,7 @@ impl MatrixMockServer {
549
549
pub fn mock_room_directory_resolve_alias ( & self ) -> MockEndpoint < ' _ , ResolveRoomAliasEndpoint > {
550
550
let mock =
551
551
Mock :: given ( method ( "GET" ) ) . and ( path_regex ( r"/_matrix/client/v3/directory/room/.*" ) ) ;
552
- MockEndpoint { mock , server : & self . server , endpoint : ResolveRoomAliasEndpoint }
552
+ self . mock_endpoint ( mock , ResolveRoomAliasEndpoint )
553
553
}
554
554
555
555
/// Create a prebuilt mock for publishing room aliases in the room
@@ -585,7 +585,7 @@ impl MatrixMockServer {
585
585
) -> MockEndpoint < ' _ , CreateRoomAliasEndpoint > {
586
586
let mock =
587
587
Mock :: given ( method ( "PUT" ) ) . and ( path_regex ( r"/_matrix/client/v3/directory/room/.*" ) ) ;
588
- MockEndpoint { mock , server : & self . server , endpoint : CreateRoomAliasEndpoint }
588
+ self . mock_endpoint ( mock , CreateRoomAliasEndpoint )
589
589
}
590
590
591
591
/// Create a prebuilt mock for removing room aliases from the room
@@ -620,7 +620,7 @@ impl MatrixMockServer {
620
620
) -> MockEndpoint < ' _ , RemoveRoomAliasEndpoint > {
621
621
let mock =
622
622
Mock :: given ( method ( "DELETE" ) ) . and ( path_regex ( r"/_matrix/client/v3/directory/room/.*" ) ) ;
623
- MockEndpoint { mock , server : & self . server , endpoint : RemoveRoomAliasEndpoint }
623
+ self . mock_endpoint ( mock , RemoveRoomAliasEndpoint )
624
624
}
625
625
626
626
/// Create a prebuilt mock for listing public rooms.
@@ -663,7 +663,7 @@ impl MatrixMockServer {
663
663
/// ```
664
664
pub fn mock_public_rooms ( & self ) -> MockEndpoint < ' _ , PublicRoomsEndpoint > {
665
665
let mock = Mock :: given ( method ( "POST" ) ) . and ( path_regex ( r"/_matrix/client/v3/publicRooms" ) ) ;
666
- MockEndpoint { mock , server : & self . server , endpoint : PublicRoomsEndpoint }
666
+ self . mock_endpoint ( mock , PublicRoomsEndpoint )
667
667
}
668
668
669
669
/// Create a prebuilt mock for setting a room's visibility in the room
@@ -701,7 +701,7 @@ impl MatrixMockServer {
701
701
) -> MockEndpoint < ' _ , SetRoomVisibilityEndpoint > {
702
702
let mock = Mock :: given ( method ( "PUT" ) )
703
703
. and ( path_regex ( r"^/_matrix/client/v3/directory/list/room/.*$" ) ) ;
704
- MockEndpoint { mock , server : & self . server , endpoint : SetRoomVisibilityEndpoint }
704
+ self . mock_endpoint ( mock , SetRoomVisibilityEndpoint )
705
705
}
706
706
707
707
/// Create a prebuilt mock for getting a room's visibility in the room
@@ -741,7 +741,7 @@ impl MatrixMockServer {
741
741
) -> MockEndpoint < ' _ , GetRoomVisibilityEndpoint > {
742
742
let mock = Mock :: given ( method ( "GET" ) )
743
743
. and ( path_regex ( r"^/_matrix/client/v3/directory/list/room/.*$" ) ) ;
744
- MockEndpoint { mock , server : & self . server , endpoint : GetRoomVisibilityEndpoint }
744
+ self . mock_endpoint ( mock , GetRoomVisibilityEndpoint )
745
745
}
746
746
747
747
/// Create a prebuilt mock for fetching information about key storage
@@ -771,23 +771,23 @@ impl MatrixMockServer {
771
771
let mock = Mock :: given ( method ( "GET" ) )
772
772
. and ( path_regex ( r"_matrix/client/v3/room_keys/version" ) )
773
773
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
774
- MockEndpoint { mock , server : & self . server , endpoint : RoomKeysVersionEndpoint }
774
+ self . mock_endpoint ( mock , RoomKeysVersionEndpoint )
775
775
}
776
776
777
777
/// Create a prebuilt mock for adding key storage backups via POST
778
778
pub fn mock_add_room_keys_version ( & self ) -> MockEndpoint < ' _ , AddRoomKeysVersionEndpoint > {
779
779
let mock = Mock :: given ( method ( "POST" ) )
780
780
. and ( path_regex ( r"_matrix/client/v3/room_keys/version" ) )
781
781
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
782
- MockEndpoint { mock , server : & self . server , endpoint : AddRoomKeysVersionEndpoint }
782
+ self . mock_endpoint ( mock , AddRoomKeysVersionEndpoint )
783
783
}
784
784
785
785
/// Create a prebuilt mock for adding key storage backups via POST
786
786
pub fn mock_delete_room_keys_version ( & self ) -> MockEndpoint < ' _ , DeleteRoomKeysVersionEndpoint > {
787
787
let mock = Mock :: given ( method ( "DELETE" ) )
788
788
. and ( path_regex ( r"_matrix/client/v3/room_keys/version/[^/]*" ) )
789
789
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
790
- MockEndpoint { mock , server : & self . server , endpoint : DeleteRoomKeysVersionEndpoint }
790
+ self . mock_endpoint ( mock , DeleteRoomKeysVersionEndpoint )
791
791
}
792
792
793
793
/// Create a prebuilt mock for getting the room members in a room.
@@ -836,7 +836,7 @@ impl MatrixMockServer {
836
836
pub fn mock_get_members ( & self ) -> MockEndpoint < ' _ , GetRoomMembersEndpoint > {
837
837
let mock =
838
838
Mock :: given ( method ( "GET" ) ) . and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/members$" ) ) ;
839
- MockEndpoint { mock , server : & self . server , endpoint : GetRoomMembersEndpoint }
839
+ self . mock_endpoint ( mock , GetRoomMembersEndpoint )
840
840
}
841
841
842
842
/// Creates a prebuilt mock for inviting a user to a room by its id.
@@ -866,7 +866,7 @@ impl MatrixMockServer {
866
866
pub fn mock_invite_user_by_id ( & self ) -> MockEndpoint < ' _ , InviteUserByIdEndpoint > {
867
867
let mock =
868
868
Mock :: given ( method ( "POST" ) ) . and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/invite$" ) ) ;
869
- MockEndpoint { mock , server : & self . server , endpoint : InviteUserByIdEndpoint }
869
+ self . mock_endpoint ( mock , InviteUserByIdEndpoint )
870
870
}
871
871
872
872
/// Creates a prebuilt mock for kicking a user from a room.
@@ -896,7 +896,7 @@ impl MatrixMockServer {
896
896
pub fn mock_kick_user ( & self ) -> MockEndpoint < ' _ , KickUserEndpoint > {
897
897
let mock =
898
898
Mock :: given ( method ( "POST" ) ) . and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/kick" ) ) ;
899
- MockEndpoint { mock , server : & self . server , endpoint : KickUserEndpoint }
899
+ self . mock_endpoint ( mock , KickUserEndpoint )
900
900
}
901
901
902
902
/// Creates a prebuilt mock for banning a user from a room.
@@ -925,20 +925,20 @@ impl MatrixMockServer {
925
925
/// ```
926
926
pub fn mock_ban_user ( & self ) -> MockEndpoint < ' _ , BanUserEndpoint > {
927
927
let mock = Mock :: given ( method ( "POST" ) ) . and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/ban" ) ) ;
928
- MockEndpoint { mock , server : & self . server , endpoint : BanUserEndpoint }
928
+ self . mock_endpoint ( mock , BanUserEndpoint )
929
929
}
930
930
931
931
/// Creates a prebuilt mock for the `/_matrix/client/versions` endpoint.
932
932
pub fn mock_versions ( & self ) -> MockEndpoint < ' _ , VersionsEndpoint > {
933
933
let mock = Mock :: given ( method ( "GET" ) ) . and ( path_regex ( r"^/_matrix/client/versions" ) ) ;
934
- MockEndpoint { mock , server : & self . server , endpoint : VersionsEndpoint }
934
+ self . mock_endpoint ( mock , VersionsEndpoint )
935
935
}
936
936
937
937
/// Creates a prebuilt mock for the room summary endpoint [MSC3266](https://github.com/matrix-org/matrix-spec-proposals/pull/3266).
938
938
pub fn mock_room_summary ( & self ) -> MockEndpoint < ' _ , RoomSummaryEndpoint > {
939
939
let mock = Mock :: given ( method ( "GET" ) )
940
940
. and ( path_regex ( r"^/_matrix/client/unstable/im.nheko.summary/rooms/.*/summary" ) ) ;
941
- MockEndpoint { mock , server : & self . server , endpoint : RoomSummaryEndpoint }
941
+ self . mock_endpoint ( mock , RoomSummaryEndpoint )
942
942
}
943
943
944
944
/// Creates a prebuilt mock for the endpoint used to set a room's pinned
@@ -947,7 +947,7 @@ impl MatrixMockServer {
947
947
let mock = Mock :: given ( method ( "PUT" ) )
948
948
. and ( path_regex ( r"^/_matrix/client/v3/rooms/.*/state/m.room.pinned_events/.*?" ) )
949
949
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
950
- MockEndpoint { mock , server : & self . server , endpoint : SetRoomPinnedEventsEndpoint }
950
+ self . mock_endpoint ( mock , SetRoomPinnedEventsEndpoint )
951
951
}
952
952
953
953
/// Creates a prebuilt mock for the endpoint used to get information about
@@ -958,11 +958,7 @@ impl MatrixMockServer {
958
958
pub fn mock_who_am_i ( & self ) -> MockEndpoint < ' _ , WhoAmIEndpoint > {
959
959
let mock =
960
960
Mock :: given ( method ( "GET" ) ) . and ( path_regex ( r"^/_matrix/client/v3/account/whoami" ) ) ;
961
- MockEndpoint {
962
- mock,
963
- server : & self . server ,
964
- endpoint : WhoAmIEndpoint { expected_access_token : "1234" } ,
965
- }
961
+ self . mock_endpoint ( mock, WhoAmIEndpoint { expected_access_token : "1234" } )
966
962
}
967
963
968
964
/// Creates a prebuilt mock for the endpoint used to publish end-to-end
@@ -971,7 +967,7 @@ impl MatrixMockServer {
971
967
let mock = Mock :: given ( method ( "POST" ) )
972
968
. and ( path_regex ( r"^/_matrix/client/v3/keys/upload" ) )
973
969
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
974
- MockEndpoint { mock , server : & self . server , endpoint : UploadKeysEndpoint }
970
+ self . mock_endpoint ( mock , UploadKeysEndpoint )
975
971
}
976
972
977
973
/// Creates a prebuilt mock for the endpoint used to query end-to-end
@@ -980,14 +976,14 @@ impl MatrixMockServer {
980
976
let mock = Mock :: given ( method ( "POST" ) )
981
977
. and ( path_regex ( r"^/_matrix/client/v3/keys/query" ) )
982
978
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
983
- MockEndpoint { mock , server : & self . server , endpoint : QueryKeysEndpoint }
979
+ self . mock_endpoint ( mock , QueryKeysEndpoint )
984
980
}
985
981
986
982
/// Creates a prebuilt mock for the endpoint used to discover the URL of a
987
983
/// homeserver.
988
984
pub fn mock_well_known ( & self ) -> MockEndpoint < ' _ , WellKnownEndpoint > {
989
985
let mock = Mock :: given ( method ( "GET" ) ) . and ( path_regex ( r"^/.well-known/matrix/client" ) ) ;
990
- MockEndpoint { mock , server : & self . server , endpoint : WellKnownEndpoint }
986
+ self . mock_endpoint ( mock , WellKnownEndpoint )
991
987
}
992
988
993
989
/// Creates a prebuilt mock for the endpoint used to publish cross-signing
@@ -998,7 +994,7 @@ impl MatrixMockServer {
998
994
let mock = Mock :: given ( method ( "POST" ) )
999
995
. and ( path_regex ( r"^/_matrix/client/v3/keys/device_signing/upload" ) )
1000
996
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
1001
- MockEndpoint { mock , server : & self . server , endpoint : UploadCrossSigningKeysEndpoint }
997
+ self . mock_endpoint ( mock , UploadCrossSigningKeysEndpoint )
1002
998
}
1003
999
1004
1000
/// Creates a prebuilt mock for the endpoint used to publish cross-signing
@@ -1009,7 +1005,7 @@ impl MatrixMockServer {
1009
1005
let mock = Mock :: given ( method ( "POST" ) )
1010
1006
. and ( path_regex ( r"^/_matrix/client/v3/keys/signatures/upload" ) )
1011
1007
. and ( header ( "authorization" , "Bearer 1234" ) ) ;
1012
- MockEndpoint { mock , server : & self . server , endpoint : UploadCrossSigningSignaturesEndpoint }
1008
+ self . mock_endpoint ( mock , UploadCrossSigningSignaturesEndpoint )
1013
1009
}
1014
1010
}
1015
1011
@@ -1169,6 +1165,10 @@ pub struct MockEndpoint<'a, T> {
1169
1165
}
1170
1166
1171
1167
impl < ' a , T > MockEndpoint < ' a , T > {
1168
+ fn new ( server : & ' a MockServer , mock : MockBuilder , endpoint : T ) -> Self {
1169
+ Self { server, mock, endpoint }
1170
+ }
1171
+
1172
1172
/// Specify how to respond to a query (viz., like
1173
1173
/// [`MockBuilder::respond_with`] does), when other predefined responses
1174
1174
/// aren't sufficient.
0 commit comments