difftreelog
White List Unit Test NFT-104
in: master
2 files changed
pallets/nft/src/lib.rsdiffbeforeafterboth--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -40,6 +40,9 @@
#[cfg(test)]
mod tests;
+// Structs
+// #region
+
#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq)]
#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
pub enum CollectionMode {
@@ -158,6 +161,8 @@
type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
}
+// #endregion
+
decl_storage! {
trait Store for Module<T: Trait> as Nft {
@@ -1287,6 +1292,7 @@
////////////////////////////////////////////////////////////////////////////////////////////////////
// Economic models
+// #region
/// Fee multiplier.
pub type Multiplier = FixedU128;
@@ -1481,3 +1487,4 @@
Ok(())
}
}
+// #endregion
\ No newline at end of file
pallets/nft/src/tests.rsdiffbeforeafterboth3use crate::{ApprovePermissions, CollectionMode, AccessMode, Ownership};3use crate::{ApprovePermissions, CollectionMode, AccessMode, Ownership};4use frame_support::{assert_noop, assert_ok};4use frame_support::{assert_noop, assert_ok};556// Use cases tests region7// #region6#[test]8#[test]7fn create_nft_item() {9fn create_nft_item() {8 new_test_ext().execute_with(|| {10 new_test_ext().execute_with(|| {956 });958 });957}959}958960961// #endregion962963// Coverage tests region964// #region965966#[test]967fn owner_can_add_address_to_white_list() {968 new_test_ext().execute_with(|| {969 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();970 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();971 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();972 let mode: CollectionMode = CollectionMode::NFT(2000);973 let origin1 = Origin::signed(1);974975 assert_ok!(TemplateModule::create_collection(976 origin1.clone(),977 col_name1.clone(),978 col_desc1.clone(),979 token_prefix1.clone(),980 mode981 ));982983 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));984 assert_eq!(TemplateModule::white_list(1)[0], 2);985 });986}987988#[test]989fn admin_can_add_address_to_white_list() {990 new_test_ext().execute_with(|| {991 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();992 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();993 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();994 let mode: CollectionMode = CollectionMode::NFT(2000);995 let origin1 = Origin::signed(1);996 let origin2 = Origin::signed(2);997998 assert_ok!(TemplateModule::create_collection(999 origin1.clone(),1000 col_name1.clone(),1001 col_desc1.clone(),1002 token_prefix1.clone(),1003 mode1004 ));10051006 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));1007 assert_ok!(TemplateModule::add_to_white_list(origin2.clone(), 1, 3));1008 assert_eq!(TemplateModule::white_list(1)[0], 3);1009 });1010}10111012#[test]1013fn nonprivileged_user_cannot_add_address_to_white_list() {1014 new_test_ext().execute_with(|| {1015 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1016 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1017 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1018 let mode: CollectionMode = CollectionMode::NFT(2000);1019 let origin1 = Origin::signed(1);1020 let origin2 = Origin::signed(2);10211022 assert_ok!(TemplateModule::create_collection(1023 origin1.clone(),1024 col_name1.clone(),1025 col_desc1.clone(),1026 token_prefix1.clone(),1027 mode1028 ));10291030 assert_noop!(TemplateModule::add_to_white_list(origin2.clone(), 1, 3), "You do not have permissions to modify this collection");1031 });1032}10331034#[test]1035fn nobody_can_add_address_to_white_list_of_nonexisting_collection() {1036 new_test_ext().execute_with(|| {10371038 let origin1 = Origin::signed(1);1039 assert_noop!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2), "This collection does not exist");1040 });1041}10421043#[test]1044fn nobody_can_add_address_to_white_list_of_deleted_collection() {1045 new_test_ext().execute_with(|| {1046 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1047 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1048 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1049 let mode: CollectionMode = CollectionMode::NFT(2000);1050 let origin1 = Origin::signed(1);10511052 assert_ok!(TemplateModule::create_collection(1053 origin1.clone(),1054 col_name1.clone(),1055 col_desc1.clone(),1056 token_prefix1.clone(),1057 mode1058 ));10591060 assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));1061 assert_noop!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2), "This collection does not exist");1062 });1063}10641065// If address is already added to white list, nothing happens1066#[test]1067fn address_is_already_added_to_white_list() {1068 new_test_ext().execute_with(|| {10691070 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1071 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1072 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1073 let mode: CollectionMode = CollectionMode::NFT(2000);1074 let origin1 = Origin::signed(1);10751076 assert_ok!(TemplateModule::create_collection(1077 origin1.clone(),1078 col_name1.clone(),1079 col_desc1.clone(),1080 token_prefix1.clone(),1081 mode1082 ));10831084 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));1085 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));1086 assert_eq!(TemplateModule::white_list(1)[0], 2);1087 assert_eq!(TemplateModule::white_list(1).len(), 1);1088 });1089}10901091#[test]1092fn owner_can_remove_address_from_white_list() {1093 new_test_ext().execute_with(|| {1094 1095 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1096 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1097 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1098 let mode: CollectionMode = CollectionMode::NFT(2000);1099 let origin1 = Origin::signed(1);11001101 assert_ok!(TemplateModule::create_collection(1102 origin1.clone(),1103 col_name1.clone(),1104 col_desc1.clone(),1105 token_prefix1.clone(),1106 mode1107 ));11081109 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));1110 assert_ok!(TemplateModule::remove_from_white_list(origin1.clone(), 1, 2));1111 assert_eq!(TemplateModule::white_list(1).len(), 0);1112 });1113}11141115#[test]1116fn admin_can_remove_address_from_white_list() {1117 new_test_ext().execute_with(|| {11181119 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1120 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1121 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1122 let mode: CollectionMode = CollectionMode::NFT(2000);1123 let origin1 = Origin::signed(1);1124 let origin2 = Origin::signed(2);11251126 assert_ok!(TemplateModule::create_collection(1127 origin1.clone(),1128 col_name1.clone(),1129 col_desc1.clone(),1130 token_prefix1.clone(),1131 mode1132 ));11331134 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));11351136 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 3));1137 assert_ok!(TemplateModule::remove_from_white_list(origin2.clone(), 1, 3));1138 assert_eq!(TemplateModule::white_list(1).len(), 0);1139 });1140}11411142#[test]1143fn nonprivileged_user_cannot_remove_address_from_white_list() {1144 new_test_ext().execute_with(|| {11451146 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1147 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1148 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1149 let mode: CollectionMode = CollectionMode::NFT(2000);1150 let origin1 = Origin::signed(1);1151 let origin2 = Origin::signed(2);11521153 assert_ok!(TemplateModule::create_collection(1154 origin1.clone(),1155 col_name1.clone(),1156 col_desc1.clone(),1157 token_prefix1.clone(),1158 mode1159 ));11601161 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));1162 assert_noop!(TemplateModule::remove_from_white_list(origin2.clone(), 1, 2), "You do not have permissions to modify this collection");1163 assert_eq!(TemplateModule::white_list(1)[0], 2);1164 });1165}11661167#[test]1168fn nobody_can_remove_address_from_white_list_of_nonexisting_collection() {1169 new_test_ext().execute_with(|| {11701171 let origin1 = Origin::signed(1);1172 assert_noop!(TemplateModule::remove_from_white_list(origin1.clone(), 1, 2), "This collection does not exist");1173 });1174}11751176#[test]1177fn nobody_can_remove_address_from_white_list_of_deleted_collection() {1178 new_test_ext().execute_with(|| {11791180 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1181 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1182 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1183 let mode: CollectionMode = CollectionMode::NFT(2000);1184 let origin1 = Origin::signed(1);1185 let origin2 = Origin::signed(2);11861187 assert_ok!(TemplateModule::create_collection(1188 origin1.clone(),1189 col_name1.clone(),1190 col_desc1.clone(),1191 token_prefix1.clone(),1192 mode1193 ));11941195 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));1196 assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));1197 assert_noop!(TemplateModule::remove_from_white_list(origin2.clone(), 1, 2), "This collection does not exist");1198 assert_eq!(TemplateModule::white_list(1).len(), 0);1199 });1200}12011202// If address is already removed from white list, nothing happens1203#[test]1204fn address_is_already_removed_from_white_list() {1205 new_test_ext().execute_with(|| {1206 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1207 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1208 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1209 let mode: CollectionMode = CollectionMode::NFT(2000);1210 let origin1 = Origin::signed(1);12111212 assert_ok!(TemplateModule::create_collection(1213 origin1.clone(),1214 col_name1.clone(),1215 col_desc1.clone(),1216 token_prefix1.clone(),1217 mode1218 ));12191220 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));1221 assert_ok!(TemplateModule::remove_from_white_list(origin1.clone(), 1, 2));1222 assert_ok!(TemplateModule::remove_from_white_list(origin1.clone(), 1, 2));1223 assert_eq!(TemplateModule::white_list(1).len(), 0);1224 });1225}12261227// If Public Access mode is set to WhiteList, tokens can’t be transferred from a non-whitelisted address with transfer or transferFrom (2 tests)1228#[test]1229fn white_list_test_1() {1230 new_test_ext().execute_with(|| {1231 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1232 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1233 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1234 let mode: CollectionMode = CollectionMode::NFT(2000);12351236 let origin1 = Origin::signed(1);1237 assert_ok!(TemplateModule::create_collection(1238 origin1.clone(),1239 col_name1.clone(),1240 col_desc1.clone(),1241 token_prefix1.clone(),1242 mode1243 ));1244 assert_eq!(TemplateModule::collection(1).owner, 1);12451246 assert_ok!(TemplateModule::create_item(1247 origin1.clone(),1248 1,1249 [1, 2, 3].to_vec(),1250 11251 ));12521253 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1254 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));12551256 assert_noop!(TemplateModule::transfer(1257 origin1.clone(),1258 3,1259 1,1260 1,1261 11262 ), "Address is not in white list");1263 });1264}12651266#[test]1267fn white_list_test_2() {1268 new_test_ext().execute_with(|| {1269 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1270 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1271 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1272 let mode: CollectionMode = CollectionMode::NFT(2000);12731274 let origin1 = Origin::signed(1);1275 assert_ok!(TemplateModule::create_collection(1276 origin1.clone(),1277 col_name1.clone(),1278 col_desc1.clone(),1279 token_prefix1.clone(),1280 mode1281 ));1282 assert_eq!(TemplateModule::collection(1).owner, 1);12831284 assert_ok!(TemplateModule::create_item(1285 origin1.clone(),1286 1,1287 [1, 2, 3].to_vec(),1288 11289 ));12901291 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1292 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));1293 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));12941295 // do approve1296 assert_ok!(TemplateModule::approve(origin1.clone(), 1, 1, 1));1297 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);12981299 assert_ok!(TemplateModule::remove_from_white_list(origin1.clone(), 1, 1));13001301 assert_noop!(TemplateModule::transfer_from(1302 origin1.clone(),1303 1,1304 3,1305 1,1306 1,1307 11308 ), "Address is not in white list");1309 });1310}13111312// If Public Access mode is set to WhiteList, tokens can’t be transferred to a non-whitelisted address with transfer or transferFrom (2 tests)1313#[test]1314fn white_list_test_3() {1315 new_test_ext().execute_with(|| {1316 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1317 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1318 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1319 let mode: CollectionMode = CollectionMode::NFT(2000);13201321 let origin1 = Origin::signed(1);1322 assert_ok!(TemplateModule::create_collection(1323 origin1.clone(),1324 col_name1.clone(),1325 col_desc1.clone(),1326 token_prefix1.clone(),1327 mode1328 ));1329 assert_eq!(TemplateModule::collection(1).owner, 1);13301331 assert_ok!(TemplateModule::create_item(1332 origin1.clone(),1333 1,1334 [1, 2, 3].to_vec(),1335 11336 ));13371338 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1339 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));13401341 assert_noop!(TemplateModule::transfer(1342 origin1.clone(),1343 3,1344 1,1345 1,1346 11347 ), "Address is not in white list");1348 });1349}13501351#[test]1352fn white_list_test_4() {1353 new_test_ext().execute_with(|| {1354 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1355 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1356 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1357 let mode: CollectionMode = CollectionMode::NFT(2000);13581359 let origin1 = Origin::signed(1);1360 assert_ok!(TemplateModule::create_collection(1361 origin1.clone(),1362 col_name1.clone(),1363 col_desc1.clone(),1364 token_prefix1.clone(),1365 mode1366 ));1367 assert_eq!(TemplateModule::collection(1).owner, 1);13681369 assert_ok!(TemplateModule::create_item(1370 origin1.clone(),1371 1,1372 [1, 2, 3].to_vec(),1373 11374 ));13751376 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1377 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));1378 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));13791380 // do approve1381 assert_ok!(TemplateModule::approve(origin1.clone(), 1, 1, 1));1382 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);13831384 assert_ok!(TemplateModule::remove_from_white_list(origin1.clone(), 1, 2));13851386 assert_noop!(TemplateModule::transfer_from(1387 origin1.clone(),1388 1,1389 3,1390 1,1391 1,1392 11393 ), "Address is not in white list");1394 });1395}13961397// If Public Access mode is set to WhiteList, tokens can’t be destroyed by a non-whitelisted address (even if it owned them before enabling WhiteList mode)1398#[test]1399fn white_list_test_5() {1400 new_test_ext().execute_with(|| {1401 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1402 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1403 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1404 let mode: CollectionMode = CollectionMode::NFT(2000);14051406 let origin1 = Origin::signed(1);1407 assert_ok!(TemplateModule::create_collection(1408 origin1.clone(),1409 col_name1.clone(),1410 col_desc1.clone(),1411 token_prefix1.clone(),1412 mode1413 ));1414 assert_eq!(TemplateModule::collection(1).owner, 1);14151416 assert_ok!(TemplateModule::create_item(1417 origin1.clone(),1418 1,1419 [1, 2, 3].to_vec(),1420 11421 ));14221423 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1424 assert_noop!(TemplateModule::burn_item(origin1.clone(), 1, 1), "Address is not in white list");1425 });1426}14271428// If Public Access mode is set to WhiteList, oken transfers can’t be Approved by a non-whitelisted address (see Approve method).1429#[test]1430fn white_list_test_6() {1431 new_test_ext().execute_with(|| {1432 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1433 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1434 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1435 let mode: CollectionMode = CollectionMode::NFT(2000);14361437 let origin1 = Origin::signed(1);1438 assert_ok!(TemplateModule::create_collection(1439 origin1.clone(),1440 col_name1.clone(),1441 col_desc1.clone(),1442 token_prefix1.clone(),1443 mode1444 ));1445 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));14461447 // do approve1448 assert_noop!(TemplateModule::approve(origin1.clone(), 1, 1, 1), "Address is not in white list");1449 });1450}14511452// If Public Access mode is set to WhiteList, tokens can be transferred from a whitelisted address with transfer or transferFrom (2 tests) and1453// tokens can be transferred from a whitelisted address with transfer or transferFrom (2 tests)1454#[test]1455fn white_list_test_7() {1456 new_test_ext().execute_with(|| {1457 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1458 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1459 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1460 let mode: CollectionMode = CollectionMode::NFT(2000);14611462 let origin1 = Origin::signed(1);1463 assert_ok!(TemplateModule::create_collection(1464 origin1.clone(),1465 col_name1.clone(),1466 col_desc1.clone(),1467 token_prefix1.clone(),1468 mode1469 ));1470 assert_eq!(TemplateModule::collection(1).owner, 1);14711472 assert_ok!(TemplateModule::create_item(1473 origin1.clone(),1474 1,1475 [1, 2, 3].to_vec(),1476 11477 ));14781479 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1480 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));1481 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));14821483 assert_ok!(TemplateModule::transfer(1484 origin1.clone(),1485 2,1486 1,1487 1,1488 11489 ));1490 });1491}14921493#[test]1494fn white_list_test_8() {1495 new_test_ext().execute_with(|| {1496 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1497 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1498 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1499 let mode: CollectionMode = CollectionMode::NFT(2000);15001501 let origin1 = Origin::signed(1);1502 assert_ok!(TemplateModule::create_collection(1503 origin1.clone(),1504 col_name1.clone(),1505 col_desc1.clone(),1506 token_prefix1.clone(),1507 mode1508 ));1509 assert_eq!(TemplateModule::collection(1).owner, 1);15101511 assert_ok!(TemplateModule::create_item(1512 origin1.clone(),1513 1,1514 [1, 2, 3].to_vec(),1515 11516 ));15171518 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1519 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1));1520 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));15211522 // do approve1523 assert_ok!(TemplateModule::approve(origin1.clone(), 1, 1, 1));1524 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);15251526 assert_ok!(TemplateModule::transfer_from(1527 origin1.clone(),1528 1,1529 2,1530 1,1531 1,1532 11533 ));1534 });1535}15361537// If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens can be created by owner.1538#[test]1539fn white_list_test_9() {1540 new_test_ext().execute_with(|| {1541 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1542 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1543 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1544 let mode: CollectionMode = CollectionMode::NFT(2000);15451546 let origin1 = Origin::signed(1);1547 assert_ok!(TemplateModule::create_collection(1548 origin1.clone(),1549 col_name1.clone(),1550 col_desc1.clone(),1551 token_prefix1.clone(),1552 mode1553 ));15541555 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1556 assert_ok!(TemplateModule::set_mint_permission(origin1.clone(), 1, false));15571558 assert_ok!(TemplateModule::create_item(1559 origin1.clone(),1560 1,1561 [1, 2, 3].to_vec(),1562 11563 ));1564 });1565}15661567// If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens can be created by admin.1568#[test]1569fn white_list_test_10() {1570 new_test_ext().execute_with(|| {1571 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1572 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1573 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1574 let mode: CollectionMode = CollectionMode::NFT(2000);15751576 let origin1 = Origin::signed(1);1577 let origin2 = Origin::signed(2);1578 assert_ok!(TemplateModule::create_collection(1579 origin1.clone(),1580 col_name1.clone(),1581 col_desc1.clone(),1582 token_prefix1.clone(),1583 mode1584 ));15851586 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1587 assert_ok!(TemplateModule::set_mint_permission(origin1.clone(), 1, false));15881589 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));15901591 assert_ok!(TemplateModule::create_item(1592 origin2.clone(),1593 1,1594 [1, 2, 3].to_vec(),1595 21596 ));1597 });1598}15991600// If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens cannot be created by non-privileged and white listed address.1601#[test]1602fn white_list_test_11() {1603 new_test_ext().execute_with(|| {1604 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1605 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1606 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1607 let mode: CollectionMode = CollectionMode::NFT(2000);16081609 let origin1 = Origin::signed(1);1610 let origin2 = Origin::signed(2);1611 assert_ok!(TemplateModule::create_collection(1612 origin1.clone(),1613 col_name1.clone(),1614 col_desc1.clone(),1615 token_prefix1.clone(),1616 mode1617 ));16181619 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1620 assert_ok!(TemplateModule::set_mint_permission(origin1.clone(), 1, false));1621 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));16221623 assert_noop!(TemplateModule::create_item(1624 origin2.clone(),1625 1,1626 [1, 2, 3].to_vec(),1627 21628 ), "Collection is not in mint mode");1629 });1630}16311632// If Public Access mode is set to WhiteList, and Mint Permission is set to false, tokens cannot be created by non-privileged and non-white listed address.1633#[test]1634fn white_list_test_12() {1635 new_test_ext().execute_with(|| {1636 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1637 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1638 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1639 let mode: CollectionMode = CollectionMode::NFT(2000);16401641 let origin1 = Origin::signed(1);1642 let origin2 = Origin::signed(2);1643 assert_ok!(TemplateModule::create_collection(1644 origin1.clone(),1645 col_name1.clone(),1646 col_desc1.clone(),1647 token_prefix1.clone(),1648 mode1649 ));16501651 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1652 assert_ok!(TemplateModule::set_mint_permission(origin1.clone(), 1, false));16531654 assert_noop!(TemplateModule::create_item(1655 origin2.clone(),1656 1,1657 [1, 2, 3].to_vec(),1658 21659 ), "Collection is not in mint mode");1660 });1661}16621663// If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens can be created by owner.1664#[test]1665fn white_list_test_13() {1666 new_test_ext().execute_with(|| {1667 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1668 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1669 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1670 let mode: CollectionMode = CollectionMode::NFT(2000);16711672 let origin1 = Origin::signed(1);1673 assert_ok!(TemplateModule::create_collection(1674 origin1.clone(),1675 col_name1.clone(),1676 col_desc1.clone(),1677 token_prefix1.clone(),1678 mode1679 ));16801681 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1682 assert_ok!(TemplateModule::set_mint_permission(origin1.clone(), 1, true));16831684 assert_ok!(TemplateModule::create_item(1685 origin1.clone(),1686 1,1687 [1, 2, 3].to_vec(),1688 11689 ));1690 });1691}16921693// If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens can be created by admin.1694#[test]1695fn white_list_test_14() {1696 new_test_ext().execute_with(|| {1697 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1698 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1699 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1700 let mode: CollectionMode = CollectionMode::NFT(2000);17011702 let origin1 = Origin::signed(1);1703 let origin2 = Origin::signed(2);1704 assert_ok!(TemplateModule::create_collection(1705 origin1.clone(),1706 col_name1.clone(),1707 col_desc1.clone(),1708 token_prefix1.clone(),1709 mode1710 ));17111712 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1713 assert_ok!(TemplateModule::set_mint_permission(origin1.clone(), 1, true));17141715 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));17161717 assert_ok!(TemplateModule::create_item(1718 origin2.clone(),1719 1,1720 [1, 2, 3].to_vec(),1721 21722 ));1723 });1724}17251726// If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens cannot be created by non-privileged and non-white listed address.1727#[test]1728fn white_list_test_15() {1729 new_test_ext().execute_with(|| {1730 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1731 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1732 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1733 let mode: CollectionMode = CollectionMode::NFT(2000);17341735 let origin1 = Origin::signed(1);1736 let origin2 = Origin::signed(2);1737 assert_ok!(TemplateModule::create_collection(1738 origin1.clone(),1739 col_name1.clone(),1740 col_desc1.clone(),1741 token_prefix1.clone(),1742 mode1743 ));17441745 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1746 assert_ok!(TemplateModule::set_mint_permission(origin1.clone(), 1, true));17471748 assert_noop!(TemplateModule::create_item(1749 origin2.clone(),1750 1,1751 [1, 2, 3].to_vec(),1752 21753 ), "Address is not in white list");1754 });1755}17561757// If Public Access mode is set to WhiteList, and Mint Permission is set to true, tokens can be created by non-privileged and white listed address.1758#[test]1759fn white_list_test_16() {1760 new_test_ext().execute_with(|| {1761 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1762 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1763 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1764 let mode: CollectionMode = CollectionMode::NFT(2000);17651766 let origin1 = Origin::signed(1);1767 let origin2 = Origin::signed(2);1768 assert_ok!(TemplateModule::create_collection(1769 origin1.clone(),1770 col_name1.clone(),1771 col_desc1.clone(),1772 token_prefix1.clone(),1773 mode1774 ));17751776 assert_ok!(TemplateModule::set_public_access_mode(origin1.clone(), 1, AccessMode::WhiteList));1777 assert_ok!(TemplateModule::set_mint_permission(origin1.clone(), 1, true));1778 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2));17791780 assert_ok!(TemplateModule::create_item(1781 origin2.clone(),1782 1,1783 [1, 2, 3].to_vec(),1784 21785 ));1786 });1787}17881789// #endregion