@@ -678,11 +678,11 @@ mod test {
678678 ) ;
679679 }
680680
681- #[ async_test]
682- async fn test_grant_login_with_generated_qr_code ( ) {
681+ async fn test_grant_login_with_generated_qr_code ( msc_4388 : bool ) {
683682 let server = MatrixMockServer :: new ( ) . await ;
684683 let rendezvous_server =
685- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX ) . await ;
684+ MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX , msc_4388)
685+ . await ;
686686 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
687687
688688 let device_authorization_grant = AuthorizationGrant {
@@ -727,10 +727,15 @@ mod test {
727727
728728 // Prepare the login granting future.
729729 let oauth = alice. oauth ( ) ;
730- let grant = oauth
730+ let mut grant = oauth
731731 . grant_login_with_qr_code ( )
732732 . device_creation_timeout ( Duration :: from_secs ( 2 ) )
733733 . generate ( ) ;
734+
735+ if msc_4388 {
736+ grant. with_msc4388_support ( ) ;
737+ }
738+
734739 let secrets_bundle = export_secrets_bundle ( & alice)
735740 . await
736741 . expect ( "Alice should be able to export the secrets bundle" ) ;
@@ -823,10 +828,20 @@ mod test {
823828 }
824829
825830 #[ async_test]
826- async fn test_grant_login_with_scanned_qr_code ( ) {
831+ async fn test_grant_login_with_generated_qr_code_msc_4108 ( ) {
832+ test_grant_login_with_generated_qr_code ( false ) . await ;
833+ }
834+
835+ #[ async_test]
836+ async fn test_grant_login_with_generated_qr_code_msc_4388 ( ) {
837+ test_grant_login_with_generated_qr_code ( true ) . await ;
838+ }
839+
840+ async fn test_grant_login_with_scanned_qr_code ( msc_4388 : bool ) {
827841 let server = MatrixMockServer :: new ( ) . await ;
828842 let rendezvous_server =
829- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX ) . await ;
843+ MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX , msc_4388)
844+ . await ;
830845 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
831846
832847 let device_authorization_grant = AuthorizationGrant {
@@ -857,7 +872,7 @@ mod test {
857872
858873 // Create a secure channel on the new client (Bob) and extract the QR code.
859874 let client = HttpClient :: new ( reqwest:: Client :: new ( ) , Default :: default ( ) ) ;
860- let channel = SecureChannel :: login ( client, & rendezvous_server. homeserver_url , false )
875+ let channel = SecureChannel :: login ( client, & rendezvous_server. homeserver_url , msc_4388 )
861876 . await
862877 . expect ( "Bob should be able to create a secure channel." ) ;
863878 let qr_code_data = channel. qr_code_data ( ) . clone ( ) ;
@@ -949,11 +964,22 @@ mod test {
949964 bob_task. await . expect ( "Bob's task should finish" ) ;
950965 }
951966
967+ #[ async_test]
968+ async fn test_grant_login_with_scanned_qr_code_msc_4108 ( ) {
969+ test_grant_login_with_scanned_qr_code ( false ) . await ;
970+ }
971+
972+ #[ async_test]
973+ async fn test_grant_login_with_scanned_qr_code_msc_4388 ( ) {
974+ test_grant_login_with_scanned_qr_code ( true ) . await ;
975+ }
976+
952977 #[ async_test]
953978 async fn test_grant_login_with_scanned_qr_code_with_homeserver_swap ( ) {
954979 let server = MatrixMockServer :: new ( ) . await ;
955980 let rendezvous_server =
956- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX ) . await ;
981+ MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX , false )
982+ . await ;
957983 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
958984
959985 let device_authorization_grant = AuthorizationGrant {
@@ -1083,7 +1109,8 @@ mod test {
10831109 {
10841110 let server = MatrixMockServer :: new ( ) . await ;
10851111 let rendezvous_server =
1086- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX ) . await ;
1112+ MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX , false )
1113+ . await ;
10871114 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
10881115
10891116 server. mock_upload_keys ( ) . ok ( ) . expect ( 1 ) . named ( "upload_keys" ) . mount ( ) . await ;
@@ -1200,7 +1227,8 @@ mod test {
12001227 async fn test_grant_login_with_scanned_qr_code_unexpected_message_instead_of_login_protocol ( ) {
12011228 let server = MatrixMockServer :: new ( ) . await ;
12021229 let rendezvous_server =
1203- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX ) . await ;
1230+ MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX , false )
1231+ . await ;
12041232 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
12051233
12061234 server. mock_upload_keys ( ) . ok ( ) . expect ( 1 ) . named ( "upload_keys" ) . mount ( ) . await ;
@@ -1303,7 +1331,8 @@ mod test {
13031331 async fn test_grant_login_with_generated_qr_code_device_already_exists ( ) {
13041332 let server = MatrixMockServer :: new ( ) . await ;
13051333 let rendezvous_server =
1306- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX ) . await ;
1334+ MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX , false )
1335+ . await ;
13071336 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
13081337
13091338 let device_authorization_grant = AuthorizationGrant {
@@ -1429,7 +1458,8 @@ mod test {
14291458 async fn test_grant_login_with_scanned_qr_code_device_already_exists ( ) {
14301459 let server = MatrixMockServer :: new ( ) . await ;
14311460 let rendezvous_server =
1432- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX ) . await ;
1461+ MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX , false )
1462+ . await ;
14331463 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
14341464
14351465 let device_authorization_grant = AuthorizationGrant {
@@ -1540,7 +1570,8 @@ mod test {
15401570 async fn test_grant_login_with_generated_qr_code_device_not_created ( ) {
15411571 let server = MatrixMockServer :: new ( ) . await ;
15421572 let rendezvous_server =
1543- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX ) . await ;
1573+ MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX , false )
1574+ . await ;
15441575 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
15451576
15461577 let device_authorization_grant = AuthorizationGrant {
@@ -1676,7 +1707,8 @@ mod test {
16761707 async fn test_grant_login_with_scanned_qr_code_device_not_created ( ) {
16771708 let server = MatrixMockServer :: new ( ) . await ;
16781709 let rendezvous_server =
1679- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX ) . await ;
1710+ MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: MAX , false )
1711+ . await ;
16801712 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
16811713
16821714 let device_authorization_grant = AuthorizationGrant {
@@ -1794,9 +1826,13 @@ mod test {
17941826 #[ async_test]
17951827 async fn test_grant_login_with_generated_qr_code_session_expired ( ) {
17961828 let server = MatrixMockServer :: new ( ) . await ;
1797- let rendezvous_server =
1798- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: from_secs ( 2 ) )
1799- . await ;
1829+ let rendezvous_server = MockedRendezvousServer :: new (
1830+ server. server ( ) ,
1831+ "abcdEFG12345" ,
1832+ Duration :: from_secs ( 2 ) ,
1833+ false ,
1834+ )
1835+ . await ;
18001836 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
18011837
18021838 server. mock_upload_keys ( ) . ok ( ) . expect ( 1 ) . named ( "upload_keys" ) . mount ( ) . await ;
@@ -1869,9 +1905,13 @@ mod test {
18691905 #[ async_test]
18701906 async fn test_grant_login_with_scanned_qr_code_session_expired ( ) {
18711907 let server = MatrixMockServer :: new ( ) . await ;
1872- let rendezvous_server =
1873- MockedRendezvousServer :: new ( server. server ( ) , "abcdEFG12345" , Duration :: from_secs ( 2 ) )
1874- . await ;
1908+ let rendezvous_server = MockedRendezvousServer :: new (
1909+ server. server ( ) ,
1910+ "abcdEFG12345" ,
1911+ Duration :: from_secs ( 2 ) ,
1912+ false ,
1913+ )
1914+ . await ;
18751915 debug ! ( "Set up rendezvous server mock at {}" , rendezvous_server. rendezvous_url) ;
18761916
18771917 server. mock_upload_keys ( ) . ok ( ) . expect ( 1 ) . named ( "upload_keys" ) . mount ( ) . await ;
0 commit comments