Contracts: Fix legacy uapi (#3994)

Fix some broken legacy definitions of pallet_contracts_uapi storage host
functions
This commit is contained in:
PG Herveou
2024-04-10 07:05:21 +02:00
committed by GitHub
parent df818d2974
commit 2d927b0772
5 changed files with 112 additions and 131 deletions
+31 -124
View File
@@ -913,6 +913,21 @@ fn instantiate_unique_trie_id() {
});
}
#[test]
fn storage_work() {
let (code, _code_hash) = compile_module::<Test>("storage").unwrap();
ExtBuilder::default().build().execute_with(|| {
let _ = <Test as Config>::Currency::set_balance(&ALICE, 1_000_000);
let min_balance = Contracts::min_balance();
let addr = builder::bare_instantiate(Code::Upload(code))
.value(min_balance * 100)
.build_and_unwrap_account_id();
builder::bare_call(addr).build_and_unwrap_result();
});
}
#[test]
fn storage_max_value_limit() {
let (wasm, _code_hash) = compile_module::<Test>("storage_size").unwrap();
@@ -1385,19 +1400,7 @@ fn crypto_hashes() {
// We offset data in the contract tables by 1.
let mut params = vec![(n + 1) as u8];
params.extend_from_slice(input);
let result = <Pallet<Test>>::bare_call(
ALICE,
addr.clone(),
0,
GAS_LIMIT,
None,
params,
DebugInfo::Skip,
CollectEvents::Skip,
Determinism::Enforced,
)
.result
.unwrap();
let result = builder::bare_call(addr.clone()).data(params).build_and_unwrap_result();
assert!(!result.did_revert());
let expected = hash_fn(input.as_ref());
assert_eq!(&result.data[..*expected_size], &*expected);
@@ -2277,19 +2280,7 @@ fn ecdsa_recover() {
params.extend_from_slice(&signature);
params.extend_from_slice(&message_hash);
assert!(params.len() == 65 + 32);
let result = <Pallet<Test>>::bare_call(
ALICE,
addr.clone(),
0,
GAS_LIMIT,
None,
params,
DebugInfo::Skip,
CollectEvents::Skip,
Determinism::Enforced,
)
.result
.unwrap();
let result = builder::bare_call(addr.clone()).data(params).build_and_unwrap_result();
assert!(!result.did_revert());
assert_eq!(result.data, EXPECTED_COMPRESSED_PUBLIC_KEY);
})
@@ -2404,19 +2395,7 @@ fn sr25519_verify() {
params.extend_from_slice(&public_key);
params.extend_from_slice(message);
<Pallet<Test>>::bare_call(
ALICE,
addr.clone(),
0,
GAS_LIMIT,
None,
params,
DebugInfo::Skip,
CollectEvents::Skip,
Determinism::Enforced,
)
.result
.unwrap()
builder::bare_call(addr.clone()).data(params).build_and_unwrap_result()
};
// verification should succeed for "hello world"
@@ -3692,35 +3671,13 @@ fn cannot_instantiate_indeterministic_code() {
// Try to instantiate `code_hash` from another contract in deterministic mode
assert_err!(
<Pallet<Test>>::bare_call(
ALICE,
addr.clone(),
0,
GAS_LIMIT,
None,
code_hash.encode(),
DebugInfo::Skip,
CollectEvents::Skip,
Determinism::Enforced,
)
.result,
builder::bare_call(addr.clone()).data(code_hash.encode()).build().result,
<Error<Test>>::Indeterministic,
);
// Instantiations are not allowed even in non-determinism mode
assert_err!(
<Pallet<Test>>::bare_call(
ALICE,
addr.clone(),
0,
GAS_LIMIT,
None,
code_hash.encode(),
DebugInfo::Skip,
CollectEvents::Skip,
Determinism::Relaxed,
)
.result,
builder::bare_call(addr.clone()).data(code_hash.encode()).build().result,
<Error<Test>>::Indeterministic,
);
});
@@ -3747,18 +3704,7 @@ fn cannot_set_code_indeterministic_code() {
// We do not allow to set the code hash to a non-deterministic wasm
assert_err!(
<Pallet<Test>>::bare_call(
ALICE,
caller_addr.clone(),
0,
GAS_LIMIT,
None,
code_hash.encode(),
DebugInfo::Skip,
CollectEvents::Skip,
Determinism::Relaxed,
)
.result,
builder::bare_call(caller_addr.clone()).data(code_hash.encode()).build().result,
<Error<Test>>::Indeterministic,
);
});
@@ -3785,35 +3731,17 @@ fn delegate_call_indeterministic_code() {
// The delegate call will fail in deterministic mode
assert_err!(
<Pallet<Test>>::bare_call(
ALICE,
caller_addr.clone(),
0,
GAS_LIMIT,
None,
code_hash.encode(),
DebugInfo::Skip,
CollectEvents::Skip,
Determinism::Enforced,
)
.result,
builder::bare_call(caller_addr.clone()).data(code_hash.encode()).build().result,
<Error<Test>>::Indeterministic,
);
// The delegate call will work on non-deterministic mode
assert_ok!(
<Pallet<Test>>::bare_call(
ALICE,
caller_addr.clone(),
0,
GAS_LIMIT,
None,
code_hash.encode(),
DebugInfo::Skip,
CollectEvents::Skip,
Determinism::Relaxed,
)
.result
builder::bare_call(caller_addr.clone())
.data(code_hash.encode())
.determinism(Determinism::Relaxed)
.build()
.result
);
});
}
@@ -3845,19 +3773,8 @@ fn locking_delegate_dependency_works() {
// Call contract with the given input.
let call = |addr_caller: &AccountId32, input: &(u32, H256)| {
<Pallet<Test>>::bare_call(
ALICE,
addr_caller.clone(),
0,
GAS_LIMIT,
None,
input.encode(),
DebugInfo::UnsafeDebug,
CollectEvents::Skip,
Determinism::Enforced,
)
builder::bare_call(addr_caller.clone()).data(input.encode()).build()
};
const ED: u64 = 2000;
ExtBuilder::default().existential_deposit(ED).build().execute_with(|| {
let _ = Balances::set_balance(&ALICE, 1_000_000);
@@ -4023,19 +3940,9 @@ fn native_dependency_deposit_works() {
assert_eq!(res.storage_deposit.charge_or_zero(), deposit);
// call set_code_hash
<Pallet<Test>>::bare_call(
ALICE,
addr.clone(),
0,
GAS_LIMIT,
None,
dummy_code_hash.encode(),
DebugInfo::Skip,
CollectEvents::Skip,
Determinism::Enforced,
)
.result
.unwrap();
builder::bare_call(addr.clone())
.data(dummy_code_hash.encode())
.build_and_unwrap_result();
// Check updated storage_deposit
let code_deposit = test_utils::get_code_deposit(&dummy_code_hash);