@@ -4465,6 +4465,46 @@ fn test_close_auction_rejects_when_no_bids_exist() {
44654465 assert ! ( !auction_closed) ;
44664466}
44674467
4468+ #[ test]
4469+ fn test_close_auction_rejects_double_closure ( ) {
4470+ let env = Env :: default ( ) ;
4471+ env. mock_all_auths ( ) ;
4472+
4473+ let ( client, _admin, usdc_id, _, _) = setup_auction_test ( & env) ;
4474+ let usdc_token = token:: StellarAssetClient :: new ( & env, & usdc_id) ;
4475+
4476+ let bidder = Address :: generate ( & env) ;
4477+ let funded_amount = 20_000_000_000i128 ;
4478+ usdc_token. mint ( & bidder, & funded_amount) ;
4479+ token:: Client :: new ( & env, & usdc_id) . approve ( & bidder, & client. address , & funded_amount, & 99999 ) ;
4480+
4481+ let event_id = String :: from_str ( & env, "event_1" ) ;
4482+ let tier_id = String :: from_str ( & env, "tier_1" ) ;
4483+ let first_payment_id = String :: from_str ( & env, "payment_1" ) ;
4484+ let second_payment_id = String :: from_str ( & env, "payment_2" ) ;
4485+
4486+ client. place_bid ( & event_id, & tier_id, & bidder, & usdc_id, & 1100_0000000i128 ) ;
4487+
4488+ env. ledger ( ) . set_timestamp ( 1001 ) ;
4489+
4490+ let first_close = client. try_close_auction ( & first_payment_id, & event_id, & tier_id) ;
4491+ assert_eq ! ( first_close, Ok ( Ok ( ( ) ) ) ) ;
4492+
4493+ let second_close = client. try_close_auction ( & second_payment_id, & event_id, & tier_id) ;
4494+ assert_eq ! ( second_close, Err ( Ok ( TicketPaymentError :: AuctionEnded ) ) ) ;
4495+
4496+ let auction_closed = env. as_contract ( & client. address , || {
4497+ is_auction_closed ( & env, event_id. clone ( ) , tier_id. clone ( ) )
4498+ } ) ;
4499+ assert ! ( auction_closed) ;
4500+
4501+ let payment = client. get_payment_status ( & first_payment_id) . unwrap ( ) ;
4502+ assert_eq ! ( payment. payment_id, first_payment_id) ;
4503+ assert_eq ! ( payment. buyer_address, bidder) ;
4504+ assert_eq ! ( payment. status, PaymentStatus :: Confirmed ) ;
4505+ assert_eq ! ( client. get_payment_status( & second_payment_id) , None ) ;
4506+ }
4507+
44684508#[ test]
44694509fn test_governance_rejects_slippage_above_fifty_percent ( ) {
44704510 let env = Env :: default ( ) ;
0 commit comments