Skip to content

Commit 477aa69

Browse files
authored
Asset: added test cases for asset and VC over issuance (#465)
1 parent ad5109e commit 477aa69

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed

pallets/asset/src/tests.rs

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,7 @@ fn asset_vc_status_change_should_succeed() {
495495
));
496496
});
497497
}
498+
498499
#[test]
499500
fn changing_status_of_asset_instance_with_same_status_should_fail() {
500501
// Set up test parameters
@@ -874,3 +875,185 @@ fn changing_status_of_vc_asset_with_same_status_should_fail() {
874875
);
875876
});
876877
}
878+
879+
#[test]
880+
fn asset_over_issuance_should_not_succeed() {
881+
let creator = DID_00;
882+
let author = ACCOUNT_00;
883+
let capacity = 5u64;
884+
885+
let raw_space = [2u8; 256].to_vec();
886+
let space_digest = <Test as frame_system::Config>::Hashing::hash(&raw_space.encode()[..]);
887+
let space_id_digest = <Test as frame_system::Config>::Hashing::hash(
888+
&[&space_digest.encode()[..], &creator.encode()[..]].concat()[..],
889+
);
890+
let space_id: SpaceIdOf = generate_space_id::<Test>(&space_id_digest);
891+
892+
let auth_digest = <Test as frame_system::Config>::Hashing::hash(
893+
&[&space_id.encode()[..], &creator.encode()[..]].concat()[..],
894+
);
895+
896+
let authorization_id: Ss58Identifier = generate_authorization_id::<Test>(&auth_digest);
897+
898+
let asset_desc = BoundedVec::try_from([72u8; 10].to_vec()).unwrap();
899+
let asset_tag = BoundedVec::try_from([72u8; 10].to_vec()).unwrap();
900+
let asset_meta = BoundedVec::try_from([72u8; 10].to_vec()).unwrap();
901+
let asset_qty = 10;
902+
let asset_value = 10;
903+
let asset_type = AssetTypeOf::MF;
904+
905+
let entry = AssetInputEntryOf::<Test> {
906+
asset_desc,
907+
asset_qty,
908+
asset_type,
909+
asset_value,
910+
asset_tag,
911+
asset_meta,
912+
};
913+
914+
let digest = <Test as frame_system::Config>::Hashing::hash(&[&entry.encode()[..]].concat()[..]);
915+
916+
let issue_id_digest = <Test as frame_system::Config>::Hashing::hash(
917+
&[&digest.encode()[..], &space_id.encode()[..], &creator.encode()[..]].concat()[..],
918+
);
919+
920+
let asset_id: Ss58Identifier = generate_asset_id::<Test>(&issue_id_digest);
921+
922+
let issue_entry = AssetIssuanceEntryOf::<Test> {
923+
asset_id,
924+
asset_owner: creator.clone(),
925+
asset_issuance_qty: Some(20),
926+
};
927+
928+
let issue_entry_digest =
929+
<Test as frame_system::Config>::Hashing::hash(&[&issue_entry.encode()[..]].concat()[..]);
930+
931+
new_test_ext().execute_with(|| {
932+
assert_ok!(Space::create(
933+
DoubleOrigin(author.clone(), creator.clone()).into(),
934+
space_digest,
935+
));
936+
937+
assert_ok!(Space::approve(RawOrigin::Root.into(), space_id, capacity));
938+
939+
assert_ok!(Asset::create(
940+
DoubleOrigin(author.clone(), creator.clone()).into(),
941+
entry,
942+
digest,
943+
authorization_id.clone()
944+
));
945+
946+
assert_err!(
947+
Asset::issue(
948+
DoubleOrigin(author.clone(), creator.clone()).into(),
949+
issue_entry.clone(),
950+
issue_entry_digest,
951+
authorization_id
952+
),
953+
Error::<Test>::OverIssuanceLimit
954+
);
955+
});
956+
}
957+
958+
#[test]
959+
fn asset_over_issuance_vc_status_change_should_not_succeed() {
960+
let creator = DID_00;
961+
let author = ACCOUNT_00;
962+
963+
let capacity = 5u64;
964+
965+
let raw_space = [2u8; 256].to_vec();
966+
let space_digest = <Test as frame_system::Config>::Hashing::hash(&raw_space.encode()[..]);
967+
let space_id_digest = <Test as frame_system::Config>::Hashing::hash(
968+
&[&space_digest.encode()[..], &creator.encode()[..]].concat()[..],
969+
);
970+
let space_id: SpaceIdOf = generate_space_id::<Test>(&space_id_digest);
971+
972+
let auth_digest = <Test as frame_system::Config>::Hashing::hash(
973+
&[&space_id.encode()[..], &creator.encode()[..]].concat()[..],
974+
);
975+
976+
let authorization_id: Ss58Identifier = generate_authorization_id::<Test>(&auth_digest);
977+
978+
let asset_desc = BoundedVec::try_from([72u8; 10].to_vec()).unwrap();
979+
let asset_tag = BoundedVec::try_from([72u8; 10].to_vec()).unwrap();
980+
let asset_meta = BoundedVec::try_from([72u8; 10].to_vec()).unwrap();
981+
let asset_qty = 10;
982+
let asset_value = 10;
983+
let asset_type = AssetTypeOf::MF;
984+
985+
let entry = AssetInputEntryOf::<Test> {
986+
asset_desc,
987+
asset_qty,
988+
asset_type,
989+
asset_value,
990+
asset_tag,
991+
asset_meta,
992+
};
993+
994+
let digest = <Test as frame_system::Config>::Hashing::hash(&[&entry.encode()[..]].concat()[..]);
995+
996+
let issue_id_digest = <Test as frame_system::Config>::Hashing::hash(
997+
&[&digest.encode()[..], &space_id.encode()[..], &creator.encode()[..]].concat()[..],
998+
);
999+
1000+
let asset_id: Ss58Identifier = generate_asset_id::<Test>(&issue_id_digest);
1001+
1002+
let issue_entry = AssetIssuanceEntryOf::<Test> {
1003+
asset_id: asset_id.clone(),
1004+
asset_owner: creator.clone(),
1005+
asset_issuance_qty: Some(30),
1006+
};
1007+
1008+
let issue_entry_digest =
1009+
<Test as frame_system::Config>::Hashing::hash(&[&issue_entry.encode()[..]].concat()[..]);
1010+
1011+
let instance_id_digest = <Test as frame_system::Config>::Hashing::hash(
1012+
&[
1013+
&asset_id.encode()[..],
1014+
&creator.encode()[..],
1015+
&space_id.encode()[..],
1016+
&creator.encode()[..],
1017+
&issue_entry_digest.encode()[..],
1018+
]
1019+
.concat()[..],
1020+
);
1021+
1022+
let instance_id = generate_asset_instance_id::<Test>(&instance_id_digest);
1023+
1024+
new_test_ext().execute_with(|| {
1025+
assert_ok!(Space::create(
1026+
DoubleOrigin(author.clone(), creator.clone()).into(),
1027+
space_digest,
1028+
));
1029+
1030+
assert_ok!(Space::approve(RawOrigin::Root.into(), space_id, capacity));
1031+
1032+
assert_ok!(Asset::vc_create(
1033+
DoubleOrigin(author.clone(), creator.clone()).into(),
1034+
asset_qty,
1035+
digest,
1036+
authorization_id.clone()
1037+
));
1038+
1039+
assert_err!(
1040+
Asset::vc_issue(
1041+
DoubleOrigin(author.clone(), creator.clone()).into(),
1042+
issue_entry.clone(),
1043+
issue_entry_digest,
1044+
authorization_id
1045+
),
1046+
Error::<Test>::OverIssuanceLimit
1047+
);
1048+
1049+
assert_err!(
1050+
Asset::vc_status_change(
1051+
DoubleOrigin(author.clone(), creator.clone()).into(),
1052+
asset_id.clone(),
1053+
Some(instance_id.clone()),
1054+
AssetStatusOf::INACTIVE
1055+
),
1056+
Error::<Test>::AssetInstanceNotFound
1057+
);
1058+
});
1059+
}

0 commit comments

Comments
 (0)