Skip to content

Commit

Permalink
update version to 0.27.0
Browse files Browse the repository at this point in the history
- Failing to deploy contracts with older version
  • Loading branch information
byteZorvin committed Sep 3, 2024
1 parent a225f11 commit 86b4aec
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 2,489 deletions.
2 changes: 1 addition & 1 deletion .tool-versions
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
scarb 2.6.5
starknet-foundry 0.19.0
starknet-foundry 0.27.0
4 changes: 2 additions & 2 deletions Scarb.lock
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ dependencies = [

[[package]]
name = "snforge_std"
version = "0.19.0"
source = "git+https://github.com/foundry-rs/starknet-foundry?tag=v0.19.0#a3391dce5bdda51c63237032e6cfc64fb7a346d4"
version = "0.27.0"
source = "git+https://github.com/foundry-rs/starknet-foundry?tag=v0.27.0#2d99b7c00678ef0363881ee0273550c44a9263de"
2 changes: 1 addition & 1 deletion Scarb.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ starknet = "2.5.3"
openzeppelin = { git = "https://github.com/OpenZeppelin/cairo-contracts.git", tag = "v0.14.0" }

[dev-dependencies]
snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry", tag = "v0.19.0" }
snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry", tag = "v0.27.0" }

[lib]
sierra = true
Expand Down
2,436 changes: 1 addition & 2,435 deletions bindings/src/bindings.rs

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions src/config/tests/test_config.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ use piltover::config::{
};
use piltover::messaging::tests::constants as c;
use snforge_std as snf;
use snforge_std::{CheatTarget, ContractClassTrait};
use snforge_std::ContractClassTrait;
use starknet::ContractAddress;

fn deploy_mock() -> IConfigDispatcher {
let contract = snf::declare("config_mock");
let contract = snf::declare("config_mock").unwrap();
let calldata = array![c::OWNER().into()];
let contract_address = contract.deploy(@calldata).unwrap();
let (contract_address, _) = contract.deploy(@calldata).unwrap();
IConfigDispatcher { contract_address }
}

Expand All @@ -19,7 +19,7 @@ fn config_register_operator_ok() {
let mock = deploy_mock();
assert(!mock.is_operator(c::OPERATOR()), 'expect not operator');

snf::start_prank(CheatTarget::One(mock.contract_address), c::OWNER());
snf::start_cheat_caller_address(mock.contract_address, c::OWNER());

mock.register_operator(c::OPERATOR());
assert(mock.is_operator(c::OPERATOR()), 'expect operator');
Expand All @@ -31,7 +31,7 @@ fn config_register_multiple_operators_ok() {
assert(!mock.is_operator(c::OPERATOR()), 'expect not operator');
assert(!mock.is_operator(c::OTHER()), 'expect not operator');

snf::start_prank(CheatTarget::One(mock.contract_address), c::OWNER());
snf::start_cheat_caller_address(mock.contract_address, c::OWNER());

mock.register_operator(c::OPERATOR());
mock.register_operator(c::OTHER());
Expand All @@ -44,7 +44,7 @@ fn config_register_multiple_operators_ok() {
fn config_unregister_operator_ok() {
let mock = deploy_mock();

snf::start_prank(CheatTarget::One(mock.contract_address), c::OWNER());
snf::start_cheat_caller_address(mock.contract_address, c::OWNER());

mock.register_operator(c::OPERATOR());
assert(mock.is_operator(c::OPERATOR()), 'expect operator');
Expand All @@ -57,7 +57,7 @@ fn config_unregister_operator_ok() {
fn config_unregister_multiple_operators_ok() {
let mock = deploy_mock();

snf::start_prank(CheatTarget::One(mock.contract_address), c::OWNER());
snf::start_cheat_caller_address(mock.contract_address, c::OWNER());

mock.register_operator(c::OPERATOR());
mock.register_operator(c::OTHER());
Expand Down Expand Up @@ -85,7 +85,7 @@ fn config_set_operator_unauthorized() {
fn config_set_program_info_ok() {
let mock = deploy_mock();

snf::start_prank(CheatTarget::One(mock.contract_address), c::OWNER());
snf::start_cheat_caller_address(mock.contract_address, c::OWNER());

// Owner sets the info.
mock.set_program_info(0x1, 0x2);
Expand All @@ -94,7 +94,7 @@ fn config_set_program_info_ok() {
mock.register_operator(c::OPERATOR());

// Operator can also set the program info.
snf::start_prank(CheatTarget::One(mock.contract_address), c::OPERATOR());
snf::start_cheat_caller_address(mock.contract_address, c::OPERATOR());
mock.set_program_info(0x11, 0x22);

assert(mock.get_program_info() == (0x11, 0x22), 'expect operator hashes');
Expand All @@ -105,15 +105,15 @@ fn config_set_program_info_ok() {
fn config_set_program_info_unauthorized() {
let mock = deploy_mock();

snf::start_prank(CheatTarget::One(mock.contract_address), c::OPERATOR());
snf::start_cheat_caller_address(mock.contract_address, c::OPERATOR());
mock.set_program_info(0x11, 0x22);
}

#[test]
fn config_set_facts_registry_ok() {
let mock = deploy_mock();

snf::start_prank(CheatTarget::One(mock.contract_address), c::OWNER());
snf::start_cheat_caller_address(mock.contract_address, c::OWNER());

let facts_registry_address = starknet::contract_address_const::<0x123>();

Expand All @@ -124,7 +124,7 @@ fn config_set_facts_registry_ok() {
mock.register_operator(c::OPERATOR());

// Operator can also set the program info.
snf::start_prank(CheatTarget::One(mock.contract_address), c::OPERATOR());
snf::start_cheat_caller_address(mock.contract_address, c::OPERATOR());
mock.set_facts_registry(c::OTHER());

assert(mock.get_facts_registry() == c::OTHER(), 'expect other address');
Expand All @@ -138,6 +138,6 @@ fn config_set_facts_registry_unauthorized() {
let facts_registry_address = starknet::contract_address_const::<0x123>();

// Other is not an operator.
snf::start_prank(CheatTarget::One(mock.contract_address), c::OTHER());
snf::start_cheat_caller_address(mock.contract_address, c::OTHER());
mock.set_facts_registry(facts_registry_address);
}
36 changes: 17 additions & 19 deletions src/messaging/tests/test_messaging.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,16 @@ use piltover::messaging::{
output_process::{MessageToStarknet, MessageToAppchain}, hash, output_process,
};
use snforge_std as snf;
use snforge_std::{
CheatTarget, ContractClassTrait, SpyOn, EventSpy, cheatcodes::events::EventAssertions,
};
use snforge_std::{ContractClassTrait, EventSpy, EventSpyAssertionsTrait};
use starknet::{ContractAddress, storage::StorageMemberAccessTrait};

/// Deploys the mock with a specific cancellation delay.
fn deploy_mock_with_delay(cancellation_delay_secs: u64) -> (IMessagingDispatcher, EventSpy) {
let contract = snf::declare("messaging_mock");
let contract = snf::declare("messaging_mock").unwrap();
let calldata = array![cancellation_delay_secs.into()];
let contract_address = contract.deploy(@calldata).unwrap();
let (contract_address, _) = contract.deploy(@calldata).unwrap();

let mut spy = snf::spy_events(SpyOn::One(contract_address));
let mut spy = snf::spy_events();

(IMessagingDispatcher { contract_address }, spy)
}
Expand Down Expand Up @@ -164,7 +162,7 @@ fn send_message_ok() {
let selector = selector!("func1");
let payload = array![1, 2, 3];

snf::start_prank(CheatTarget::One(mock.contract_address), from);
snf::start_cheat_caller_address(mock.contract_address, from);
let (message_hash, nonce) = mock.send_message_to_appchain(to, selector, payload.span());

assert(message_hash.is_non_zero(), 'invalid message hash');
Expand All @@ -186,7 +184,7 @@ fn start_cancellation_ok() {
let selector = selector!("func1");
let payload = array![1, 2, 3];

snf::start_prank(CheatTarget::One(mock.contract_address), from);
snf::start_cheat_caller_address(mock.contract_address, from);
let (message_hash, nonce) = mock.send_message_to_appchain(to, selector, payload.span());

let message_hash_cancel = mock.start_message_cancellation(to, selector, payload.span(), nonce);
Expand Down Expand Up @@ -245,15 +243,15 @@ fn cancel_message_ok() {
let selector = selector!("func1");
let payload = array![1, 2, 3];

snf::start_prank(CheatTarget::One(mock.contract_address), from);
snf::start_cheat_caller_address(mock.contract_address, from);
let (message_hash, nonce) = mock.send_message_to_appchain(to, selector, payload.span());

// The block timestamp must not be 0 for the protocol to be valid.
// This can't happen on-chain, but here it must be explicitely set greater than 0.
snf::start_warp(CheatTarget::One(mock.contract_address), 1);
snf::start_cheat_block_timestamp(mock.contract_address, 1);
mock.start_message_cancellation(to, selector, payload.span(), nonce);

snf::start_warp(CheatTarget::One(mock.contract_address), delay_secs + 10);
snf::start_cheat_block_timestamp(mock.contract_address, delay_secs + 10);
let message_hash_cancel = mock.cancel_message(to, selector, payload.span(), nonce);
assert(message_hash_cancel == message_hash, 'invalid message hash');

Expand Down Expand Up @@ -303,12 +301,12 @@ fn cancel_message_cancellation_not_requested() {
let selector = selector!("func1");
let payload = array![1, 2, 3];

snf::start_prank(CheatTarget::One(mock.contract_address), from);
snf::start_cheat_caller_address(mock.contract_address, from);
let (_message_hash, nonce) = mock.send_message_to_appchain(to, selector, payload.span());

// Don't start the cancellation.

snf::start_warp(CheatTarget::One(mock.contract_address), delay_secs + 10);
snf::start_cheat_block_timestamp(mock.contract_address, delay_secs + 10);
mock.cancel_message(to, selector, payload.span(), nonce);
}

Expand All @@ -323,13 +321,13 @@ fn cancel_message_cancellation_not_allowed_yet() {
let selector = selector!("func1");
let payload = array![1, 2, 3];

snf::start_prank(CheatTarget::One(mock.contract_address), from);
snf::start_cheat_caller_address(mock.contract_address, from);
let (_message_hash, nonce) = mock.send_message_to_appchain(to, selector, payload.span());

snf::start_warp(CheatTarget::One(mock.contract_address), 1);
snf::start_cheat_block_timestamp(mock.contract_address, 1);
mock.start_message_cancellation(to, selector, payload.span(), nonce);

snf::start_warp(CheatTarget::One(mock.contract_address), 5);
snf::start_cheat_block_timestamp(mock.contract_address, 5);
mock.cancel_message(to, selector, payload.span(), nonce);
}

Expand Down Expand Up @@ -367,7 +365,7 @@ fn process_messages_to_appchain_ok() {
let selector = selector!("func1");
let payload = array![1, 2, 3];

snf::start_prank(CheatTarget::One(starknet::get_contract_address()), from);
snf::start_cheat_caller_address(starknet::get_contract_address(), from);
let (_message_hash, _nonce) = mock.send_message_to_appchain(to, selector, payload.span());

let m = MessageToAppchain {
Expand Down Expand Up @@ -410,7 +408,7 @@ fn consume_message_from_appchain_ok() {
mock.process_messages_to_starknet(messages);

// Ensure the caller address inside the mock function is correctly set.
snf::start_prank(CheatTarget::One(to), to);
snf::start_cheat_caller_address(to, to);
mock.consume_message_from_appchain(from, payload);
}

Expand All @@ -426,6 +424,6 @@ fn consume_message_from_appchain_invalid_to_consume() {
// Don't process the messages to starknet.

// Ensure the caller address inside the mock function is correctly set.
snf::start_prank(CheatTarget::One(to), to);
snf::start_cheat_caller_address(to, to);
mock.consume_message_from_appchain(from, payload);
}
5 changes: 3 additions & 2 deletions src/state/tests/test_state.cairo
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use core::result::ResultTrait;
use piltover::state::{
state_cpt, state_cpt::InternalTrait as StateInternal, IState, IStateDispatcher,
IStateDispatcherTrait, state_mock,
Expand All @@ -9,9 +10,9 @@ use snforge_std::{ContractClassTrait};
fn deploy_mock_with_state(
state_root: felt252, block_number: felt252, block_hash: felt252,
) -> IStateDispatcher {
let contract = snf::declare("state_mock");
let contract = snf::declare("state_mock").unwrap();
let calldata = array![state_root, block_number, block_hash];
let contract_address = contract.deploy(@calldata).unwrap();
let (contract_address, _) = contract.deploy(@calldata).unwrap();
IStateDispatcher { contract_address }
}

Expand Down
31 changes: 15 additions & 16 deletions tests/test_appchain.cairo
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use core::result::ResultTrait;
use piltover::appchain::appchain::{Event, LogStateUpdate, LogStateTransitionFact};
use piltover::config::{IConfig, IConfigDispatcherTrait, IConfigDispatcher};
use piltover::interface::{IAppchain, IAppchainDispatcherTrait, IAppchainDispatcher};
Expand All @@ -10,18 +11,16 @@ use piltover::mocks::{
}; // To change when Herodotus finishes implementing FactRegistry.
use piltover::snos_output::ProgramOutput;
use snforge_std as snf;
use snforge_std::{
CheatTarget, ContractClassTrait, SpyOn, EventSpy, cheatcodes::events::EventAssertions,
};
use snforge_std::{ContractClassTrait, EventSpy, EventSpyAssertionsTrait};
use starknet::{ContractAddress, storage::StorageMemberAccessTrait};

/// Deploys the appchain contract.
fn deploy_with_owner(owner: felt252) -> (IAppchainDispatcher, EventSpy) {
let contract = snf::declare("appchain");
let contract = snf::declare("appchain").unwrap();
let calldata = array![owner, 0, 0, 0];
let contract_address = contract.deploy(@calldata).unwrap();
let (contract_address, _) = contract.deploy(@calldata).unwrap();

let mut spy = snf::spy_events(SpyOn::One(contract_address));
let mut spy = snf::spy_events();

(IAppchainDispatcher { contract_address }, spy)
}
Expand All @@ -30,19 +29,19 @@ fn deploy_with_owner(owner: felt252) -> (IAppchainDispatcher, EventSpy) {
fn deploy_with_owner_and_state(
owner: felt252, state_root: felt252, block_number: felt252, block_hash: felt252,
) -> (IAppchainDispatcher, EventSpy) {
let contract = snf::declare("appchain");
let contract = snf::declare("appchain").unwrap();
let calldata = array![owner, state_root, block_number, block_hash];
let contract_address = contract.deploy(@calldata).unwrap();
let (contract_address, _) = contract.deploy(@calldata).unwrap();

let mut spy = snf::spy_events(SpyOn::One(contract_address));
let mut spy = snf::spy_events();

(IAppchainDispatcher { contract_address }, spy)
}

/// Deploys the fact registry mock contract.
fn deploy_fact_registry_mock() -> IFactRegistryMockDispatcher {
let contract = snf::declare("fact_registry_mock");
let contract_address = contract.deploy(@array![]).unwrap();
let contract = snf::declare("fact_registry_mock").unwrap();
let (contract_address, _) = contract.deploy(@array![]).unwrap();
IFactRegistryMockDispatcher { contract_address }
}

Expand Down Expand Up @@ -123,7 +122,7 @@ fn appchain_owner_ok() {

let iconfig = IConfigDispatcher { contract_address: appchain.contract_address };

snf::start_prank(CheatTarget::One(appchain.contract_address), c::OWNER());
snf::start_cheat_caller_address(appchain.contract_address, c::OWNER());
iconfig.set_program_info(0x11, 0x22);
}

Expand Down Expand Up @@ -169,7 +168,7 @@ fn update_state_ok() {
]
.span();

snf::start_prank(CheatTarget::One(appchain.contract_address), c::OWNER());
snf::start_cheat_caller_address(appchain.contract_address, c::OWNER());
iconfig
.set_program_info(
program_hash: 0x11,
Expand All @@ -184,15 +183,15 @@ fn update_state_ok() {
appchain.contract_address, selector!("sn_to_appc_nonce"), array![1629170 - 1].span()
);

snf::start_prank(CheatTarget::One(appchain.contract_address), contract_sn);
snf::start_cheat_caller_address(appchain.contract_address, contract_sn);
imsg.send_message_to_appchain(contract_appc, selector_appc, payload_sn_to_appc);

// Updating the state will register the message to starknet ready to be consumed
// and the message to appchain as sealed.
let output = get_state_update();
let onchain_data_hash = 0x0;
let onchain_data_size: u256 = 0;
snf::start_prank(CheatTarget::One(appchain.contract_address), c::OWNER());
snf::start_cheat_caller_address(appchain.contract_address, c::OWNER());
appchain.update_state(output, onchain_data_hash, onchain_data_size);

let expected_log_state_update = LogStateUpdate {
Expand All @@ -216,6 +215,6 @@ fn update_state_ok() {
]
);

snf::start_prank(CheatTarget::One(appchain.contract_address), contract_sn);
snf::start_cheat_caller_address(appchain.contract_address, contract_sn);
imsg.consume_message_from_appchain(contract_appc, payload_appc_to_sn);
}

0 comments on commit 86b4aec

Please sign in to comment.