From 2885408949b79d6ba559b7094fb7b4227a7fc267 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Thu, 26 Aug 2021 09:34:07 +0000 Subject: [PATCH] test: remove ChainLimits leftovers --- --- a/pallets/nft/Cargo.toml +++ b/pallets/nft/Cargo.toml @@ -41,6 +41,7 @@ 'evm-coder/std', 'pallet-evm-coder-substrate/std', ] +limit-testing = ["nft-data-structs/limit-testing"] ################################################################################ # Substrate Dependencies --- a/pallets/nft/src/default_weights.rs +++ b/pallets/nft/src/default_weights.rs @@ -117,11 +117,6 @@ .saturating_add(DbWeight::get().reads(2_u64)) .saturating_add(DbWeight::get().writes(1_u64)) } - fn set_chain_limits() -> Weight { - 1_300_000_u64 - .saturating_add(DbWeight::get().reads(0_u64)) - .saturating_add(DbWeight::get().writes(1_u64)) - } fn set_contract_sponsoring_rate_limit() -> Weight { 3_500_000_u64 .saturating_add(DbWeight::get().reads(0_u64)) --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -88,7 +88,6 @@ fn set_variable_meta_data() -> Weight; fn enable_contract_sponsoring() -> Weight; fn set_schema_version() -> Weight; - fn set_chain_limits() -> Weight; fn set_contract_sponsoring_rate_limit() -> Weight; fn set_variable_meta_data_sponsoring_rate_limit() -> Weight; fn toggle_contract_white_list() -> Weight; @@ -1596,38 +1595,17 @@ ) -> DispatchResult { match target_collection.mode { CollectionMode::NFT => { - if let CreateItemData::NFT(data) = data { - // check sizes - ensure!( - CUSTOM_DATA_LIMIT >= data.const_data.len() as u32, - Error::::TokenConstDataLimitExceeded - ); - ensure!( - CUSTOM_DATA_LIMIT >= data.variable_data.len() as u32, - Error::::TokenVariableDataLimitExceeded - ); - } else { + if !matches!(data, CreateItemData::NFT(_)) { fail!(Error::::NotNftDataUsedToMintNftCollectionToken); } } CollectionMode::Fungible(_) => { - if let CreateItemData::Fungible(_) = data { - } else { + if !matches!(data, CreateItemData::Fungible(_)) { fail!(Error::::NotFungibleDataUsedToMintFungibleCollectionToken); } } CollectionMode::ReFungible => { if let CreateItemData::ReFungible(data) = data { - // check sizes - ensure!( - CUSTOM_DATA_LIMIT >= data.const_data.len() as u32, - Error::::TokenConstDataLimitExceeded - ); - ensure!( - CUSTOM_DATA_LIMIT >= data.variable_data.len() as u32, - Error::::TokenVariableDataLimitExceeded - ); - // Check refungibility limits ensure!( data.pieces <= MAX_REFUNGIBLE_PIECES, --- a/pallets/nft/src/tests.rs +++ b/pallets/nft/src/tests.rs @@ -1,40 +1,18 @@ // Tests to be written here use super::*; use crate::mock::*; -use crate::{AccessMode, CollectionMode, Ownership, ChainLimits, CreateItemData}; +use crate::{AccessMode, CollectionMode, Ownership, CreateItemData}; use nft_data_structs::{ CreateNftData, CreateFungibleData, CreateReFungibleData, CollectionId, TokenId, MAX_DECIMAL_POINTS, }; use frame_support::{assert_noop, assert_ok}; -use frame_system::{RawOrigin}; - -fn default_collection_numbers_limit() -> u32 { - 10 -} - -fn default_limits() { - assert_ok!(TemplateModule::set_chain_limits( - RawOrigin::Root.into(), - ChainLimits { - collection_numbers_limit: default_collection_numbers_limit(), - account_token_ownership_limit: 10, - collections_admins_limit: 5, - custom_data_limit: 2048, - nft_sponsor_transfer_timeout: 15, - fungible_sponsor_transfer_timeout: 15, - refungible_sponsor_transfer_timeout: 15, - const_on_chain_schema_limit: 1024, - offchain_schema_limit: 1024, - variable_on_chain_schema_limit: 1024, - } - )); -} +use sp_std::convert::TryInto; fn default_nft_data() -> CreateNftData { CreateNftData { - const_data: vec![1, 2, 3], - variable_data: vec![3, 2, 1], + const_data: vec![1, 2, 3].try_into().unwrap(), + variable_data: vec![3, 2, 1].try_into().unwrap(), } } @@ -44,8 +22,8 @@ fn default_re_fungible_data() -> CreateReFungibleData { CreateReFungibleData { - const_data: vec![1, 2, 3], - variable_data: vec![3, 2, 1], + const_data: vec![1, 2, 3].try_into().unwrap(), + variable_data: vec![3, 2, 1].try_into().unwrap(), pieces: 1023, } } @@ -112,7 +90,6 @@ #[test] fn set_version_schema() { new_test_ext().execute_with(|| { - default_limits(); let origin1 = Origin::signed(1); let collection_id = create_test_collection(&CollectionMode::NFT, 1); @@ -133,8 +110,6 @@ #[test] fn create_fungible_collection_fails_with_large_decimal_numbers() { new_test_ext().execute_with(|| { - default_limits(); - let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); let token_prefix1: Vec = b"token_prefix1\0".to_vec(); @@ -156,14 +131,13 @@ #[test] fn create_nft_item() { new_test_ext().execute_with(|| { - default_limits(); let collection_id = create_test_collection(&CollectionMode::NFT, 1); let data = default_nft_data(); create_test_item(collection_id, &data.clone().into()); let item = TemplateModule::nft_item_id(collection_id, 1).unwrap(); - assert_eq!(item.const_data, data.const_data); - assert_eq!(item.variable_data, data.variable_data); + assert_eq!(item.const_data, data.const_data.into_inner()); + assert_eq!(item.variable_data, data.variable_data.into_inner()); }); } @@ -172,8 +146,6 @@ #[test] fn create_nft_multiple_items() { new_test_ext().execute_with(|| { - default_limits(); - create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -190,10 +162,10 @@ .map(|d| { d.into() }) .collect() )); - for (index, data) in items_data.iter().enumerate() { + for (index, data) in items_data.into_iter().enumerate() { let item = TemplateModule::nft_item_id(1, (index + 1) as TokenId).unwrap(); - assert_eq!(item.const_data.to_vec(), data.const_data); - assert_eq!(item.variable_data.to_vec(), data.variable_data); + assert_eq!(item.const_data.to_vec(), data.const_data.into_inner()); + assert_eq!(item.variable_data.to_vec(), data.variable_data.into_inner()); } }); } @@ -201,14 +173,13 @@ #[test] fn create_refungible_item() { new_test_ext().execute_with(|| { - default_limits(); let collection_id = create_test_collection(&CollectionMode::ReFungible, 1); let data = default_re_fungible_data(); create_test_item(collection_id, &data.clone().into()); let item = TemplateModule::refungible_item_id(collection_id, 1).unwrap(); - assert_eq!(item.const_data, data.const_data); - assert_eq!(item.variable_data, data.variable_data); + assert_eq!(item.const_data, data.const_data.into_inner()); + assert_eq!(item.variable_data, data.variable_data.into_inner()); assert_eq!( item.owner[0], Ownership { @@ -222,8 +193,6 @@ #[test] fn create_multiple_refungible_items() { new_test_ext().execute_with(|| { - default_limits(); - create_test_collection(&CollectionMode::ReFungible, 1); let origin1 = Origin::signed(1); @@ -244,10 +213,10 @@ .map(|d| { d.into() }) .collect() )); - for (index, data) in items_data.iter().enumerate() { + for (index, data) in items_data.into_iter().enumerate() { let item = TemplateModule::refungible_item_id(1, (index + 1) as TokenId).unwrap(); - assert_eq!(item.const_data.to_vec(), data.const_data); - assert_eq!(item.variable_data.to_vec(), data.variable_data); + assert_eq!(item.const_data.to_vec(), data.const_data.into_inner()); + assert_eq!(item.variable_data.to_vec(), data.variable_data.into_inner()); assert_eq!( item.owner[0], Ownership { @@ -262,8 +231,6 @@ #[test] fn create_fungible_item() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1); let data = default_fungible_data(); @@ -302,8 +269,6 @@ #[test] fn transfer_fungible_item() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1); let origin1 = Origin::signed(1); @@ -344,8 +309,6 @@ #[test] fn transfer_refungible_item() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::ReFungible, 1); let data = default_re_fungible_data(); @@ -355,8 +318,8 @@ let origin2 = Origin::signed(2); { let item = TemplateModule::refungible_item_id(collection_id, 1).unwrap(); - assert_eq!(item.const_data, data.const_data); - assert_eq!(item.variable_data, data.variable_data); + assert_eq!(item.const_data, data.const_data.into_inner()); + assert_eq!(item.variable_data, data.variable_data.into_inner()); assert_eq!( item.owner[0], Ownership { @@ -441,8 +404,6 @@ #[test] fn transfer_nft_item() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let data = default_nft_data(); @@ -464,8 +425,6 @@ #[test] fn nft_approve_and_transfer_from() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let data = default_nft_data(); @@ -503,8 +462,6 @@ #[test] fn nft_approve_and_transfer_from_white_list() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -514,8 +471,8 @@ create_test_item(collection_id, &data.clone().into()); assert_eq!( - TemplateModule::nft_item_id(1, 1).unwrap().const_data, - data.const_data + &TemplateModule::nft_item_id(1, 1).unwrap().const_data, + &data.const_data.into_inner() ); assert_eq!(TemplateModule::balance_count(1, 1), 1); assert_eq!(TemplateModule::address_tokens(1, 1), [1]); @@ -573,8 +530,6 @@ #[test] fn refungible_approve_and_transfer_from() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::ReFungible, 1); let origin1 = Origin::signed(1); @@ -636,8 +591,6 @@ #[test] fn fungible_approve_and_transfer_from() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1); let data = default_fungible_data(); @@ -710,8 +663,6 @@ #[test] fn change_collection_owner() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -730,8 +681,6 @@ #[test] fn destroy_collection() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -742,8 +691,6 @@ #[test] fn burn_nft_item() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -773,8 +720,6 @@ #[test] fn burn_fungible_item() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1); let origin1 = Origin::signed(1); @@ -804,8 +749,6 @@ #[test] fn burn_refungible_item() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::ReFungible, 1); let origin1 = Origin::signed(1); @@ -851,8 +794,6 @@ #[test] fn add_collection_admin() { new_test_ext().execute_with(|| { - default_limits(); - let collection1_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1); create_test_collection_for_owner(&CollectionMode::NFT, 2, 2); create_test_collection_for_owner(&CollectionMode::NFT, 3, 3); @@ -879,8 +820,6 @@ #[test] fn remove_collection_admin() { new_test_ext().execute_with(|| { - default_limits(); - let collection1_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1); create_test_collection_for_owner(&CollectionMode::NFT, 2, 2); create_test_collection_for_owner(&CollectionMode::NFT, 3, 3); @@ -916,8 +855,6 @@ #[test] fn balance_of() { new_test_ext().execute_with(|| { - default_limits(); - let nft_collection_id = create_test_collection(&CollectionMode::NFT, 1); let fungible_collection_id = create_test_collection(&CollectionMode::Fungible(3), 2); let re_fungible_collection_id = create_test_collection(&CollectionMode::ReFungible, 3); @@ -969,8 +906,6 @@ #[test] fn approve() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let data = default_nft_data(); @@ -987,8 +922,6 @@ #[test] fn transfer_from() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); @@ -1051,8 +984,6 @@ #[test] fn owner_can_add_address_to_white_list() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1068,8 +999,6 @@ #[test] fn admin_can_add_address_to_white_list() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); @@ -1091,8 +1020,6 @@ #[test] fn nonprivileged_user_cannot_add_address_to_white_list() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin2 = Origin::signed(2); @@ -1106,8 +1033,6 @@ #[test] fn nobody_can_add_address_to_white_list_of_nonexisting_collection() { new_test_ext().execute_with(|| { - default_limits(); - let origin1 = Origin::signed(1); assert_noop!( @@ -1120,8 +1045,6 @@ #[test] fn nobody_can_add_address_to_white_list_of_deleted_collection() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1140,8 +1063,6 @@ #[test] fn address_is_already_added_to_white_list() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1162,8 +1083,6 @@ #[test] fn owner_can_remove_address_from_white_list() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1184,8 +1103,6 @@ #[test] fn admin_can_remove_address_from_white_list() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); @@ -1213,8 +1130,6 @@ #[test] fn nonprivileged_user_cannot_remove_address_from_white_list() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); @@ -1235,7 +1150,6 @@ #[test] fn nobody_can_remove_address_from_white_list_of_nonexisting_collection() { new_test_ext().execute_with(|| { - default_limits(); let origin1 = Origin::signed(1); assert_noop!( @@ -1248,8 +1162,6 @@ #[test] fn nobody_can_remove_address_from_white_list_of_deleted_collection() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); @@ -1272,8 +1184,6 @@ #[test] fn address_is_already_removed_from_white_list() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1300,8 +1210,6 @@ #[test] fn white_list_test_1() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1330,8 +1238,6 @@ #[test] fn white_list_test_2() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1381,8 +1287,6 @@ #[test] fn white_list_test_3() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1411,8 +1315,6 @@ #[test] fn white_list_test_4() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1463,8 +1365,6 @@ #[test] fn white_list_test_5() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1488,8 +1388,6 @@ #[test] fn white_list_test_6() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1516,8 +1414,6 @@ #[test] fn white_list_test_7() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let data = default_nft_data(); @@ -1548,8 +1444,6 @@ #[test] fn white_list_test_8() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let data = default_nft_data(); @@ -1598,8 +1492,6 @@ #[test] fn white_list_test_9() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1623,8 +1515,6 @@ #[test] fn white_list_test_10() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1660,8 +1550,6 @@ #[test] fn white_list_test_11() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1694,8 +1582,6 @@ #[test] fn white_list_test_12() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1723,8 +1609,6 @@ #[test] fn white_list_test_13() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1749,8 +1633,6 @@ #[test] fn white_list_test_14() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1786,8 +1668,6 @@ #[test] fn white_list_test_15() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1815,8 +1695,6 @@ #[test] fn white_list_test_16() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1851,8 +1729,6 @@ #[test] fn total_number_collections_bound() { new_test_ext().execute_with(|| { - default_limits(); - create_test_collection(&CollectionMode::NFT, 1); }); } @@ -1861,11 +1737,9 @@ #[test] fn total_number_collections_bound_neg() { new_test_ext().execute_with(|| { - default_limits(); - let origin1 = Origin::signed(1); - for i in 0..default_collection_numbers_limit() { + for i in 0..COLLECTION_NUMBER_LIMIT { create_test_collection(&CollectionMode::NFT, i + 1); } @@ -1891,8 +1765,6 @@ #[test] fn owned_tokens_bound() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let data = default_nft_data(); @@ -1905,28 +1777,16 @@ #[test] fn owned_tokens_bound_neg() { new_test_ext().execute_with(|| { - assert_ok!(TemplateModule::set_chain_limits( - RawOrigin::Root.into(), - ChainLimits { - collection_numbers_limit: 10, - account_token_ownership_limit: 1, - collections_admins_limit: 5, - custom_data_limit: 2048, - nft_sponsor_transfer_timeout: 15, - fungible_sponsor_transfer_timeout: 15, - refungible_sponsor_transfer_timeout: 15, - const_on_chain_schema_limit: 1024, - offchain_schema_limit: 1024, - variable_on_chain_schema_limit: 1024, - } - )); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); - let data = default_nft_data(); - create_test_item(collection_id, &data.clone().into()); + for _ in 0..ACCOUNT_TOKEN_OWNERSHIP_LIMIT { + let data = default_nft_data(); + create_test_item(collection_id, &data.clone().into()); + } + + let data = default_nft_data(); assert_noop!( TemplateModule::create_item(origin1, 1, account(1), data.into()), Error::::AddressOwnershipLimitExceeded @@ -1938,22 +1798,6 @@ #[test] fn collection_admins_bound() { new_test_ext().execute_with(|| { - assert_ok!(TemplateModule::set_chain_limits( - RawOrigin::Root.into(), - ChainLimits { - collection_numbers_limit: 10, - account_token_ownership_limit: 10, - collections_admins_limit: 2, - custom_data_limit: 2048, - nft_sponsor_transfer_timeout: 15, - fungible_sponsor_transfer_timeout: 15, - refungible_sponsor_transfer_timeout: 15, - const_on_chain_schema_limit: 1024, - offchain_schema_limit: 1024, - variable_on_chain_schema_limit: 1024, - } - )); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -1975,174 +1819,20 @@ #[test] fn collection_admins_bound_neg() { new_test_ext().execute_with(|| { - assert_ok!(TemplateModule::set_chain_limits( - RawOrigin::Root.into(), - ChainLimits { - collection_numbers_limit: 10, - account_token_ownership_limit: 1, - collections_admins_limit: 1, - custom_data_limit: 2048, - nft_sponsor_transfer_timeout: 15, - fungible_sponsor_transfer_timeout: 15, - refungible_sponsor_transfer_timeout: 15, - const_on_chain_schema_limit: 1024, - offchain_schema_limit: 1024, - variable_on_chain_schema_limit: 1024, - } - )); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); - assert_ok!(TemplateModule::add_collection_admin( - origin1.clone(), - collection_id, - account(2) - )); + for i in 0..COLLECTION_ADMINS_LIMIT { + assert_ok!(TemplateModule::add_collection_admin( + origin1.clone(), + collection_id, + account(2 + i) + )); + } assert_noop!( - TemplateModule::add_collection_admin(origin1, collection_id, account(3)), + TemplateModule::add_collection_admin(origin1, collection_id, account(3 + COLLECTION_ADMINS_LIMIT)), Error::::CollectionAdminsLimitExceeded - ); - }); -} - -// NFT custom data size. Negative test const_data. -#[test] -fn custom_data_size_nft_const_data_bound_neg() { - new_test_ext().execute_with(|| { - assert_ok!(TemplateModule::set_chain_limits( - RawOrigin::Root.into(), - ChainLimits { - collection_numbers_limit: 10, - account_token_ownership_limit: 10, - collections_admins_limit: 5, - custom_data_limit: 2, - nft_sponsor_transfer_timeout: 15, - fungible_sponsor_transfer_timeout: 15, - refungible_sponsor_transfer_timeout: 15, - const_on_chain_schema_limit: 1024, - offchain_schema_limit: 1024, - variable_on_chain_schema_limit: 1024, - } - )); - - let collection_id = create_test_collection(&CollectionMode::NFT, 1); - - let origin1 = Origin::signed(1); - let too_big_const_data = CreateItemData::NFT(CreateNftData { - const_data: vec![1, 2, 3, 4], - variable_data: vec![], - }); - - assert_noop!( - TemplateModule::create_item(origin1, collection_id, account(1), too_big_const_data), - Error::::TokenConstDataLimitExceeded - ); - }); -} - -// NFT custom data size. Negative test variable_data. -#[test] -fn custom_data_size_nft_variable_data_bound_neg() { - new_test_ext().execute_with(|| { - assert_ok!(TemplateModule::set_chain_limits( - RawOrigin::Root.into(), - ChainLimits { - collection_numbers_limit: 10, - account_token_ownership_limit: 10, - collections_admins_limit: 5, - custom_data_limit: 2, - nft_sponsor_transfer_timeout: 15, - fungible_sponsor_transfer_timeout: 15, - refungible_sponsor_transfer_timeout: 15, - const_on_chain_schema_limit: 1024, - offchain_schema_limit: 1024, - variable_on_chain_schema_limit: 1024, - } - )); - - let collection_id = create_test_collection(&CollectionMode::NFT, 1); - - let origin1 = Origin::signed(1); - let too_big_const_data = CreateItemData::NFT(CreateNftData { - const_data: vec![], - variable_data: vec![1, 2, 3, 4], - }); - - assert_noop!( - TemplateModule::create_item(origin1, collection_id, account(1), too_big_const_data), - Error::::TokenVariableDataLimitExceeded - ); - }); -} - -// Re fungible custom data size. Negative test const_data. -#[test] -fn custom_data_size_re_fungible_const_data_bound_neg() { - new_test_ext().execute_with(|| { - assert_ok!(TemplateModule::set_chain_limits( - RawOrigin::Root.into(), - ChainLimits { - collection_numbers_limit: 10, - account_token_ownership_limit: 10, - collections_admins_limit: 5, - custom_data_limit: 2, - nft_sponsor_transfer_timeout: 15, - fungible_sponsor_transfer_timeout: 15, - refungible_sponsor_transfer_timeout: 15, - const_on_chain_schema_limit: 1024, - offchain_schema_limit: 1024, - variable_on_chain_schema_limit: 1024, - } - )); - - let collection_id = create_test_collection(&CollectionMode::NFT, 1); - - let origin1 = Origin::signed(1); - let too_big_const_data = CreateItemData::NFT(CreateNftData { - const_data: vec![1, 2, 3, 4], - variable_data: vec![], - }); - - assert_noop!( - TemplateModule::create_item(origin1, collection_id, account(1), too_big_const_data), - Error::::TokenConstDataLimitExceeded - ); - }); -} - -// Re fungible custom data size. Negative test variable_data. -#[test] -fn custom_data_size_re_fungible_variable_data_bound_neg() { - new_test_ext().execute_with(|| { - assert_ok!(TemplateModule::set_chain_limits( - RawOrigin::Root.into(), - ChainLimits { - collection_numbers_limit: 10, - account_token_ownership_limit: 10, - collections_admins_limit: 5, - custom_data_limit: 2, - nft_sponsor_transfer_timeout: 15, - fungible_sponsor_transfer_timeout: 15, - refungible_sponsor_transfer_timeout: 15, - const_on_chain_schema_limit: 1024, - offchain_schema_limit: 1024, - variable_on_chain_schema_limit: 1024, - } - )); - - let collection_id = create_test_collection(&CollectionMode::NFT, 1); - - let origin1 = Origin::signed(1); - let too_big_const_data = CreateItemData::NFT(CreateNftData { - const_data: vec![], - variable_data: vec![1, 2, 3, 4], - }); - - assert_noop!( - TemplateModule::create_item(origin1, collection_id, account(1), too_big_const_data), - Error::::TokenVariableDataLimitExceeded ); }); } @@ -2151,8 +1841,6 @@ #[test] fn set_const_on_chain_schema() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -2180,8 +1868,6 @@ #[test] fn set_variable_on_chain_schema() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -2209,8 +1895,6 @@ #[test] fn set_variable_meta_data_on_nft_token_stores_variable_meta_data() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -2218,7 +1902,7 @@ let data = default_nft_data(); create_test_item(1, &data.into()); - let variable_data = b"test set_variable_meta_data method.".to_vec(); + let variable_data = b"test data".to_vec(); assert_ok!(TemplateModule::set_variable_meta_data( origin1, collection_id, @@ -2238,8 +1922,6 @@ #[test] fn set_variable_meta_data_on_re_fungible_token_stores_variable_meta_data() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::ReFungible, 1); let origin1 = Origin::signed(1); @@ -2247,7 +1929,7 @@ let data = default_re_fungible_data(); create_test_item(1, &data.into()); - let variable_data = b"test set_variable_meta_data method.".to_vec(); + let variable_data = b"test data".to_vec(); assert_ok!(TemplateModule::set_variable_meta_data( origin1, collection_id, @@ -2267,8 +1949,6 @@ #[test] fn set_variable_meta_data_on_fungible_token_fails() { new_test_ext().execute_with(|| { - default_limits(); - let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1); let origin1 = Origin::signed(1); @@ -2276,7 +1956,7 @@ let data = default_fungible_data(); create_test_item(1, &data.into()); - let variable_data = b"test set_variable_meta_data method.".to_vec(); + let variable_data = b"test data".to_vec(); assert_noop!( TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data), Error::::CantStoreMetadataInFungibleTokens @@ -2287,22 +1967,6 @@ #[test] fn set_variable_meta_data_on_nft_token_fails_for_big_data() { new_test_ext().execute_with(|| { - assert_ok!(TemplateModule::set_chain_limits( - RawOrigin::Root.into(), - ChainLimits { - collection_numbers_limit: default_collection_numbers_limit(), - account_token_ownership_limit: 10, - collections_admins_limit: 5, - custom_data_limit: 10, - nft_sponsor_transfer_timeout: 15, - fungible_sponsor_transfer_timeout: 15, - refungible_sponsor_transfer_timeout: 15, - const_on_chain_schema_limit: 1024, - offchain_schema_limit: 1024, - variable_on_chain_schema_limit: 1024, - } - )); - let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); @@ -2321,22 +1985,6 @@ #[test] fn set_variable_meta_data_on_re_fungible_token_fails_for_big_data() { new_test_ext().execute_with(|| { - assert_ok!(TemplateModule::set_chain_limits( - RawOrigin::Root.into(), - ChainLimits { - collection_numbers_limit: default_collection_numbers_limit(), - account_token_ownership_limit: 10, - collections_admins_limit: 5, - custom_data_limit: 10, - nft_sponsor_transfer_timeout: 15, - fungible_sponsor_transfer_timeout: 15, - refungible_sponsor_transfer_timeout: 15, - const_on_chain_schema_limit: 1024, - offchain_schema_limit: 1024, - variable_on_chain_schema_limit: 1024, - } - )); - let collection_id = create_test_collection(&CollectionMode::ReFungible, 1); let origin1 = Origin::signed(1); @@ -2355,8 +2003,6 @@ #[test] fn collection_transfer_flag_works() { new_test_ext().execute_with(|| { - default_limits(); - let origin1 = Origin::signed(1); let collection_id = create_test_collection(&CollectionMode::NFT, 1); @@ -2382,8 +2028,6 @@ #[test] fn collection_transfer_flag_works_neg() { new_test_ext().execute_with(|| { - default_limits(); - let origin1 = Origin::signed(1); let collection_id = create_test_collection(&CollectionMode::NFT, 1); --- a/primitives/nft/Cargo.toml +++ b/primitives/nft/Cargo.toml @@ -32,4 +32,5 @@ "sp-core/std", "sp-std/std", ] -serde1 = ["serde"] \ No newline at end of file +serde1 = ["serde"] +limit-testing = [] \ No newline at end of file --- a/primitives/nft/src/lib.rs +++ b/primitives/nft/src/lib.rs @@ -28,10 +28,10 @@ pub const MAX_SPONSOR_TIMEOUT: u32 = 10_368_000; pub const MAX_TOKEN_OWNERSHIP: u32 = 10_000_000; -pub const COLLECTION_NUMBER_LIMIT: u32 = 100000; -pub const CUSTOM_DATA_LIMIT: u32 = 2048; +pub const COLLECTION_NUMBER_LIMIT: u32 = if cfg!(not(feature = "limit-testing")) { 100000 } else { 10 }; +pub const CUSTOM_DATA_LIMIT: u32 = if cfg!(not(feature = "limit-testing")) { 2048 } else { 10 }; pub const COLLECTION_ADMINS_LIMIT: u64 = 5; -pub const ACCOUNT_TOKEN_OWNERSHIP_LIMIT: u32 = 1000000; +pub const ACCOUNT_TOKEN_OWNERSHIP_LIMIT: u32 = if cfg!(not(feature = "limit-testing")) { 1000000 } else { 10 }; // Timeouts for item types in passed blocks pub const NFT_SPONSOR_TRANSFER_TIMEOUT: u32 = 5; --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -85,6 +85,10 @@ 'xcm-builder/std', 'xcm-executor/std', ] +limit-testing = [ + 'pallet-nft/limit-testing', + 'nft-data-structs/limit-testing', +] ################################################################################ # Substrate Dependencies --- a/runtime/src/nft_weights.rs +++ b/runtime/src/nft_weights.rs @@ -123,11 +123,6 @@ .saturating_add(DbWeight::get().reads(2_u64)) .saturating_add(DbWeight::get().writes(1_u64)) } - fn set_chain_limits() -> Weight { - 1_300_000_u64 - .saturating_add(DbWeight::get().reads(0_u64)) - .saturating_add(DbWeight::get().writes(1_u64)) - } fn set_contract_sponsoring_rate_limit() -> Weight { 3_500_000_u64 .saturating_add(DbWeight::get().reads(0_u64)) -- gitstuff