@@ -122,6 +122,7 @@ def default_config(self) -> Dict[str, Any]:
122122 "client_id" : CLIENT_ID ,
123123 "client_auth_method" : "client_secret_post" ,
124124 "client_secret" : CLIENT_SECRET ,
125+ "admin_token" : "admin_token_value" ,
125126 }
126127 }
127128 return config
@@ -791,3 +792,39 @@ def test_admin_api_endpoints_removed(self) -> None:
791792 self .expect_unrecognized ("GET" , "/_synapse/admin/v1/users/foo/admin" )
792793 self .expect_unrecognized ("PUT" , "/_synapse/admin/v1/users/foo/admin" )
793794 self .expect_unrecognized ("POST" , "/_synapse/admin/v1/account_validity/validity" )
795+
796+ def test_admin_token (self ) -> None :
797+ """The handler should return a requester with admin rights when admin_token is used."""
798+
799+ request = Mock (args = {})
800+ request .args [b"access_token" ] = [b"admin_token_value" ]
801+ request .requestHeaders .getRawHeaders = mock_getRawHeaders ()
802+ requester = self .get_success (self .auth .get_user_by_req (request ))
803+ self .assertEqual (
804+ requester .user .to_string (), "@%s:%s" % ("__oidc_admin" , SERVER_NAME )
805+ )
806+ self .assertEqual (requester .is_guest , False )
807+ self .assertEqual (requester .device_id , None )
808+ self .assertEqual (
809+ get_awaitable_result (self .auth .is_server_admin (requester )), True
810+ )
811+
812+ def test_oidc_admin_impersonate_user_id (self ) -> None :
813+ """The handler should return a requester with the correct user when _oidc_admin_impersonate_user_id param is used."""
814+
815+ request = Mock (
816+ args = {
817+ b"_oidc_admin_impersonate_user_id" : [
818+ ("@foo:" + SERVER_NAME ).encode ("ascii" )
819+ ],
820+ b"access_token" : [b"admin_token_value" ],
821+ }
822+ )
823+ request .requestHeaders .getRawHeaders = mock_getRawHeaders ()
824+ requester = self .get_success (self .auth .get_user_by_req (request ))
825+ self .assertEqual (requester .user .to_string (), "@%s:%s" % ("foo" , SERVER_NAME ))
826+ self .assertEqual (requester .is_guest , False )
827+ self .assertEqual (requester .device_id , None )
828+ self .assertEqual (
829+ get_awaitable_result (self .auth .is_server_admin (requester )), False
830+ )
0 commit comments