diff --git a/pallets/runtime/tests/src/settlement_pallet/transfer_funds.rs b/pallets/runtime/tests/src/settlement_pallet/transfer_funds.rs index 807fc5685a..f5489898eb 100644 --- a/pallets/runtime/tests/src/settlement_pallet/transfer_funds.rs +++ b/pallets/runtime/tests/src/settlement_pallet/transfer_funds.rs @@ -492,3 +492,23 @@ fn nft_spender_rejected() { ); }); } + +#[test] +fn nft_reject_frozen_asset() { + ExtBuilder::default().build().execute_with(|| { + let alice = User::new(Sr25519Keyring::Alice); + let asset_id = create_and_issue_nft_to_account(&alice); + + assert_ok!(Asset::freeze(alice.origin(), asset_id)); + + assert_noop!( + Settlement::transfer_funds( + alice.origin(), + Some(AssetHolder::Account(alice.acc())), + AssetHolder::Portfolio(PortfolioId::default_portfolio(alice.did)), + nft_fund(asset_id, NFTId(1)), + ), + AssetError::InvalidTransferFrozenAsset + ); + }); +} diff --git a/pallets/settlement/src/lib.rs b/pallets/settlement/src/lib.rs index 13abb6b130..dcfc010b51 100644 --- a/pallets/settlement/src/lib.rs +++ b/pallets/settlement/src/lib.rs @@ -1630,6 +1630,7 @@ impl Pallet { } FundDescription::NonFungible(ref nfts) => { ensure!(nfts.len() > 0, Error::::ZeroAmount); + Asset::::ensure_asset_is_not_frozen(nfts.asset_id())?; Nft::::ensure_nft_ownership(&resolved_from, nfts)?; Nft::::transfer_holders_nfts(&resolved_from, to.clone(), nfts)?; } diff --git a/pallets/utility/src/lib.rs b/pallets/utility/src/lib.rs index a7e40e791a..fec9280a34 100644 --- a/pallets/utility/src/lib.rs +++ b/pallets/utility/src/lib.rs @@ -409,7 +409,7 @@ pub mod pallet { } else { Self::deposit_event(Event::::BatchCompleted); } - let base_weight = ::WeightInfo::batch(calls_len as u32); + let base_weight = ::WeightInfo::force_batch(calls_len as u32); Ok(Some(base_weight.saturating_add(weight)).into()) }