63 lines
1.6 KiB
Rust
63 lines
1.6 KiB
Rust
mod common;
|
|
use common::*;
|
|
use solana_signer::Signer;
|
|
|
|
#[test]
|
|
fn complete_releases_funds_to_seller() {
|
|
let (mut svm, seller, buyer, _resolver) = setup();
|
|
|
|
send(
|
|
&mut svm,
|
|
ix_create_escrow(&seller.pubkey(), &buyer.pubkey(), AMOUNT, None, ESCROW_ID),
|
|
&seller,
|
|
);
|
|
send(&mut svm, ix_deposit(&buyer.pubkey(), &seller.pubkey(), ESCROW_ID), &buyer);
|
|
|
|
let seller_before = svm.get_account(&seller.pubkey()).map(|a| a.lamports).unwrap_or(0);
|
|
|
|
send(
|
|
&mut svm,
|
|
ix_complete(&buyer.pubkey(), &seller.pubkey(), ESCROW_ID),
|
|
&buyer,
|
|
);
|
|
|
|
assert!(svm.get_account(&escrow_pda(&seller.pubkey(), ESCROW_ID)).is_none());
|
|
let seller_after = svm.get_account(&seller.pubkey()).map(|a| a.lamports).unwrap_or(0);
|
|
assert!(seller_after > seller_before);
|
|
}
|
|
|
|
#[test]
|
|
fn complete_before_deposit_fails() {
|
|
let (mut svm, seller, buyer, _resolver) = setup();
|
|
|
|
send(
|
|
&mut svm,
|
|
ix_create_escrow(&seller.pubkey(), &buyer.pubkey(), AMOUNT, None, ESCROW_ID),
|
|
&seller,
|
|
);
|
|
|
|
assert!(!try_send(
|
|
&mut svm,
|
|
ix_complete(&buyer.pubkey(), &seller.pubkey(), ESCROW_ID),
|
|
&buyer,
|
|
));
|
|
}
|
|
|
|
#[test]
|
|
fn complete_wrong_buyer_fails() {
|
|
let (mut svm, seller, buyer, resolver) = setup();
|
|
|
|
send(
|
|
&mut svm,
|
|
ix_create_escrow(&seller.pubkey(), &buyer.pubkey(), AMOUNT, None, ESCROW_ID),
|
|
&seller,
|
|
);
|
|
send(&mut svm, ix_deposit(&buyer.pubkey(), &seller.pubkey(), ESCROW_ID), &buyer);
|
|
|
|
assert!(!try_send(
|
|
&mut svm,
|
|
ix_complete(&resolver.pubkey(), &seller.pubkey(), ESCROW_ID),
|
|
&resolver,
|
|
));
|
|
}
|