@@ -846,6 +846,58 @@ fn test_swap_wrong_mint_fee() {
846846 ) ;
847847}
848848
849+ #[ test]
850+ fn test_swap_wrong_token_program_fee ( ) {
851+ let SwapSetupResult {
852+ mut svm,
853+ user,
854+ searcher,
855+ token_searcher,
856+ token_user,
857+ router_ta_mint_searcher,
858+ relayer_signer,
859+ ..
860+ } = setup_swap ( Default :: default ( ) ) ;
861+
862+ let express_relay_metadata = get_express_relay_metadata ( & mut svm) ;
863+
864+ let swap_args = SwapArgs {
865+ deadline : svm. get_sysvar :: < Clock > ( ) . unix_timestamp ,
866+ amount_searcher : token_searcher. get_amount_with_decimals ( 1. ) ,
867+ amount_user : token_user. get_amount_with_decimals ( 1. ) ,
868+ referral_fee_bps : 1500 ,
869+ fee_token : FeeToken :: User ,
870+ } ;
871+
872+ let instructions = build_swap_instructions ( SwapParams {
873+ searcher : searcher. pubkey ( ) ,
874+ user : user. pubkey ( ) ,
875+ router_fee_receiver_ta : router_ta_mint_searcher,
876+ fee_receiver_relayer : express_relay_metadata. fee_receiver_relayer ,
877+ token_searcher : token_searcher. clone ( ) ,
878+ token_user : token_user. clone ( ) ,
879+ swap_args,
880+ overrides : SwapParamOverride {
881+ token_program_fee : Some ( token_user. token_program ) , // wrong token program fee
882+ ..Default :: default ( )
883+ } ,
884+ relayer_signer : relayer_signer. pubkey ( ) ,
885+ } ) ;
886+
887+ let result = submit_transaction (
888+ & mut svm,
889+ & instructions,
890+ & searcher,
891+ & [ & searcher, & user, & relayer_signer] ,
892+ )
893+ . unwrap_err ( ) ;
894+ assert_custom_error (
895+ result. err ,
896+ 4 ,
897+ InstructionError :: Custom ( AnchorErrorCode :: ConstraintTokenMint . into ( ) ) ,
898+ ) ;
899+ }
900+
849901
850902#[ test]
851903fn test_swap_fail_wrong_relayer_signer ( ) {
0 commit comments