Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
0xChqrles committed Sep 17, 2024
1 parent 4728bd5 commit ec76418
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 72 deletions.
49 changes: 2 additions & 47 deletions contracts/src/components/escrow/escrow_test.cairo
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use core::starknet::get_contract_address;

use openzeppelin::presets::interfaces::ERC20UpgradeableABIDispatcherTrait;
use snforge_std::{start_cheat_caller_address, EventSpyAssertionsTrait, spy_events};
use zkramp::components::escrow::escrow::EscrowComponent::{Event, Locked, UnLocked, EscrowImpl};
use snforge_std::start_cheat_caller_address;
use zkramp::components::escrow::escrow::EscrowComponent::EscrowImpl;
use zkramp::components::escrow::escrow_mock::{TestingStateDefault, ComponentState};
use zkramp::tests::constants;
use zkramp::tests::utils;
Expand All @@ -14,7 +14,6 @@ use zkramp::tests::utils;

#[test]
fn test_lock() {
let mut spy = spy_events();
let token_dispatcher = utils::setup_erc20(recipient: constants::OWNER());
start_cheat_caller_address(token_dispatcher.contract_address, constants::OWNER());

Expand All @@ -31,25 +30,11 @@ fn test_lock() {

assert_eq!(token_dispatcher.balance_of(constants::SPENDER()), 58);
assert_eq!(token_dispatcher.allowance(constants::SPENDER(), constants::RECIPIENT()), 0);

// test event emission
spy
.assert_emitted(
@array![
(
get_contract_address(),
Event::Locked(
Locked { token: token_dispatcher.contract_address, from: constants::SPENDER(), amount: 42 }
)
)
]
)
}


#[test]
fn test_lock_unlock() {
let mut spy = spy_events();
let token_dispatcher = utils::setup_erc20(recipient: constants::OWNER());
start_cheat_caller_address(token_dispatcher.contract_address, constants::OWNER());

Expand All @@ -75,36 +60,6 @@ fn test_lock_unlock() {
assert_eq!(token_dispatcher.balance_of(constants::RECIPIENT()), 42);
assert_eq!(token_dispatcher.allowance(constants::SPENDER(), constants::RECIPIENT()), 0);
assert_eq!(escrow.deposits.read((constants::SPENDER(), token_dispatcher.contract_address)), 0);

// test event emission
spy
.assert_emitted(
@array![
(
get_contract_address(),
Event::Locked(
Locked { token: token_dispatcher.contract_address, from: constants::SPENDER(), amount: 42 }
)
)
]
);

spy
.assert_emitted(
@array![
(
get_contract_address(),
Event::UnLocked(
UnLocked {
token: token_dispatcher.contract_address,
from: constants::SPENDER(),
to: constants::RECIPIENT(),
amount: 42
}
)
)
]
)
}


Expand Down
26 changes: 25 additions & 1 deletion contracts/src/contracts/ramps/revolut/interface.cairo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use starknet::ContractAddress;
use starknet::{ContractAddress, ClassHash};
use zkramp::components::registry::interface::OffchainId;

#[derive(Drop, Serde)]
Expand All @@ -18,3 +18,27 @@ pub trait IZKRampLiquidity<TState> {
fn retrieve_liquidity(ref self: TState, liquidity_key: LiquidityKey);
fn initiate_liquidity_retrieval(ref self: TState, liquidity_key: LiquidityKey);
}

#[starknet::interface]
pub trait ZKRampABI<TState> {
// IZKRampLiquidity
fn add_liquidity(ref self: TState, amount: u256, offchain_id: OffchainId);
fn retrieve_liquidity(ref self: TState, liquidity_key: LiquidityKey);
fn initiate_liquidity_retrieval(ref self: TState, liquidity_key: LiquidityKey);

// IRegistry
fn is_registered(self: @TState, contract_address: ContractAddress, offchain_id: OffchainId) -> bool;
fn register(ref self: TState, offchain_id: OffchainId);

// IOwnable
fn owner(self: @TState) -> ContractAddress;
fn transfer_ownership(ref self: TState, new_owner: ContractAddress);
fn renounce_ownership(ref self: TState);

// IOwnableCamelOnly
fn transferOwnership(ref self: TState, newOwner: ContractAddress);
fn renounceOwnership(ref self: TState);

// IUpgradeable
fn upgrade(ref self: TState, new_class_hash: ClassHash);
}
7 changes: 6 additions & 1 deletion contracts/src/contracts/ramps/revolut/revolut.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ pub mod RevolutRamp {
pub const INVALID_AMOUNT: felt252 = 'Invalid amount';
pub const WRONG_CALLER_ADDRESS: felt252 = 'Wrong caller address';
pub const EMPTY_LIQUIDITY_RETRIEVAL: felt252 = 'Empty liquidity retrieval';
pub const LOCKED_LIQUIDITY_RETRIEVAL: felt252 = 'Locked liquidity retrieval';
pub const UNLOCKED_LIQUIDITY_RETRIEVAL: felt252 = 'Unlocked liquidity retrieval';
}

//
Expand Down Expand Up @@ -160,6 +160,11 @@ pub mod RevolutRamp {
fn retrieve_liquidity(ref self: ContractState, liquidity_key: LiquidityKey) {
let caller = get_caller_address();

// asserts caller is the liquidity owner
assert(self.locked_liquidity.read(liquidity_key), Errors::UNLOCKED_LIQUIDITY_RETRIEVAL);
// asserts caller is the liquidity owner
assert(liquidity_key.owner == caller, Errors::WRONG_CALLER_ADDRESS);

let token = self.token.read();
let amount = self.liquidity.read(liquidity_key);

Expand Down
36 changes: 14 additions & 22 deletions contracts/src/contracts/ramps/revolut/revolut_test.cairo
Original file line number Diff line number Diff line change
@@ -1,41 +1,33 @@
use core::hash::{HashStateTrait, HashStateExTrait};
use core::poseidon::PoseidonTrait;

use core::starknet::{ContractAddress, contract_address_const, get_caller_address};

use core::starknet::{ContractAddress, get_caller_address};
use openzeppelin::utils::serde::SerializedAppend;
use snforge_std::{declare, ContractClassTrait, start_cheat_caller_address, test_address};
use zkramp::contracts::ramps::revolut::interface::{IzkRampABIDispatcher, IzkRampABIDispatcherTrait};
use zkramp::contracts::ramps::revolut::revolut::RevolutRamp::RevolutImpl;

use zkramp::contracts::ramps::revolut::interface::{ZKRampABIDispatcher, ZKRampABIDispatcherTrait, LiquidityKey};
use zkramp::tests::constants;

fn deploy_revolut_ramp() -> (IzkRampABIDispatcher, ContractAddress) {
fn deploy_revolut_ramp() -> ZKRampABIDispatcher {
let contract = declare("RevolutRamp").unwrap();
let owner: ContractAddress = contract_address_const::<'owner'>();
let escrow: ContractAddress = contract_address_const::<'escrow'>();

let mut constructor_calldata = array![owner.into(), escrow.into()];
let mut calldata = array![];

let (contract_address, _) = contract.deploy(@constructor_calldata).unwrap();
calldata.append_serde(constants::OWNER());
// TODO: give a relevant token address for better tests
calldata.append_serde(constants::OWNER());

let dispatcher = IzkRampABIDispatcher { contract_address };
let (contract_address, _) = contract.deploy(@calldata).unwrap();

(dispatcher, contract_address)
ZKRampABIDispatcher { contract_address }
}

#[test]
#[should_panic(expected: 'Empty liquidity retrieval')]
#[should_panic(expected: 'Unlocked liquidity retrieval')]
fn test_retrieve_uninitialized_liquidity_should_panic() {
let test_address: ContractAddress = test_address();

start_cheat_caller_address(test_address, constants::CALLER());

let (revolut_ramp, _) = deploy_revolut_ramp();
let revolut_ramp = deploy_revolut_ramp();

let liquidity_id = PoseidonTrait::new()
.update_with(get_caller_address())
.update_with(constants::REVOLUT_ID())
.finalize();
let liquidity_key = LiquidityKey { owner: get_caller_address(), offchain_id: constants::REVOLUT_ID() };

revolut_ramp.retrieve_liquidity(liquidity_id);
revolut_ramp.retrieve_liquidity(:liquidity_key);
}
2 changes: 1 addition & 1 deletion contracts/src/tests/constants.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ pub fn CALLER() -> ContractAddress {
}

pub fn SPENDER() -> ContractAddress {
contract_address_const::<'soender'>()
contract_address_const::<'spender'>()
}

pub fn RECIPIENT() -> ContractAddress {
Expand Down

0 comments on commit ec76418

Please sign in to comment.