@@ -648,3 +648,53 @@ def test_configure_grant_types(self):
648648 assert len (self .token_endpoint .helper ) == 1
649649 assert "access_token" in self .token_endpoint .helper
650650 assert "refresh_token" not in self .token_endpoint .helper
651+
652+ def test_token_request_other_client (self ):
653+ _context = self .endpoint_context
654+ _context .cdb ["client_2" ] = _context .cdb ["client_1" ]
655+ session_id = self ._create_session (AUTH_REQ )
656+ grant = self .session_manager [session_id ]
657+ code = self ._mint_code (grant , AUTH_REQ ["client_id" ])
658+
659+ _token_request = TOKEN_REQ_DICT .copy ()
660+ _token_request ["client_id" ] = "client_2"
661+ _token_request ["code" ] = code .value
662+
663+ _req = self .token_endpoint .parse_request (_token_request )
664+ _resp = self .token_endpoint .process_request (request = _req )
665+
666+ assert isinstance (_resp , TokenErrorResponse )
667+ assert _resp .to_dict () == {
668+ "error" : "invalid_grant" , "error_description" : "Wrong client"
669+ }
670+
671+ def test_refresh_token_request_other_client (self ):
672+ _context = self .endpoint_context
673+ _context .cdb ["client_2" ] = _context .cdb ["client_1" ]
674+ session_id = self ._create_session (AUTH_REQ )
675+ grant = self .session_manager [session_id ]
676+ code = self ._mint_code (grant , AUTH_REQ ["client_id" ])
677+
678+ _token_request = TOKEN_REQ_DICT .copy ()
679+ _token_request ["code" ] = code .value
680+
681+ _req = self .token_endpoint .parse_request (_token_request )
682+ _resp = self .token_endpoint .process_request (
683+ request = _req , issue_refresh = True
684+ )
685+
686+ _request = REFRESH_TOKEN_REQ .copy ()
687+ _request ["client_id" ] = "client_2"
688+ _request ["refresh_token" ] = _resp ["response_args" ]["refresh_token" ]
689+
690+ _token_value = _resp ["response_args" ]["refresh_token" ]
691+ _session_info = self .session_manager .get_session_info_by_token (_token_value )
692+ _token = self .session_manager .find_token (_session_info ["session_id" ], _token_value )
693+ _token .usage_rules ["supports_minting" ] = ["access_token" , "refresh_token" ]
694+
695+ _req = self .token_endpoint .parse_request (_request .to_json ())
696+ _resp = self .token_endpoint .process_request (request = _req , )
697+ assert isinstance (_resp , TokenErrorResponse )
698+ assert _resp .to_dict () == {
699+ "error" : "invalid_grant" , "error_description" : "Wrong client"
700+ }
0 commit comments