git.delta.rocks / unique-network / refs/commits / 9cdbe6a7b905

difftreelog

Set metadata check fix. Some tests added

str-mv2021-09-05parent: #81e625c.patch.diff
in: master

2 files changed

modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
1520 Error::<T>::TokenVariableDataLimitExceeded1520 Error::<T>::TokenVariableDataLimitExceeded
1521 );1521 );
15221522
1523 // Modify permissions check
1524 ensure!(1523 ensure!(
1525 Self::is_item_owner(sender, collection, item_id)?1524 (Self::is_item_owner(sender, collection, item_id)?
1525 && collection.meta_update_permission == MetaUpdatePermission::ItemOwner)
1526 || Self::is_owner_or_admin_permissions(collection, sender)?,1526 || (Self::is_owner_or_admin_permissions(collection, sender)?
1527 && collection.meta_update_permission == MetaUpdatePermission::Admin),
1527 Error::<T>::NoPermission1528 Error::<T>::NoPermission
1528 );1529 );
15291530
modifiedtests/src/metadataUpdate.test.tsdiffbeforeafterboth
11import {11import {
12 createItemExpectSuccess,12 createItemExpectSuccess,
13 createCollectionExpectSuccess,13 createCollectionExpectSuccess,
14 enablePublicMintingExpectSuccess,
15 enableWhiteListExpectSuccess,
14 setMetadataUpdatePermissionFlagExpectSuccess,16 setMetadataUpdatePermissionFlagExpectSuccess,
15 setVariableMetaDataExpectSuccess,17 setVariableMetaDataExpectSuccess,
16 setMintPermissionExpectSuccess,18 setMintPermissionExpectSuccess,
2224
23chai.use(chaiAsPromised);25chai.use(chaiAsPromised);
26
27describe('Metadata update permissions with ItemOwner flag', () => {
28 it('ItemOwner can set variable metadata with ItemOwner permission flag', async () => {
29 await usingApi(async () => {
30 const Alice = privateKey('//Alice');
31
32 const data = [1, 2, 254, 255];
33
34 // nft
35 const nftCollectionId = await createCollectionExpectSuccess();
36 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
37 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'ItemOwner');
38
39 await setVariableMetaDataExpectSuccess(Alice, nftCollectionId, newNftTokenId, data);
40 });
41 });
42
43 it('Admin can\'n set variable metadata with ItemOwner permission flag', async () => {
44 await usingApi(async () => {
45 const Alice = privateKey('//Alice');
46 const Bob = privateKey('//Bob');
47
48 const data = [1, 2, 254, 255];
49
50 // nft
51 const nftCollectionId = await createCollectionExpectSuccess();
52 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
53 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'ItemOwner');
54
55 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);
56 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
57 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);
58
59 await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);
60 });
61 });
62
63 it('User can\'n set variable metadata with ItemOwner permission flag', async () => {
64 await usingApi(async () => {
65 const Alice = privateKey('//Alice');
66 const Bob = privateKey('//Bob');
67
68 const data = [1, 2, 254, 255];
69
70 // nft
71 const nftCollectionId = await createCollectionExpectSuccess();
72 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
73 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'ItemOwner');
74
75 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);
76 await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);
77 });
78 });
79});
80
81describe('Metadata update permissions with Admin flag', () => {
82 it('Admin can set variable metadata with Admin permission flag', async () => {
83 await usingApi(async () => {
84 const Alice = privateKey('//Alice');
85 const Bob = privateKey('//Bob');
86
87 const data = [1, 2, 254, 255];
88
89 // nft
90 const nftCollectionId = await createCollectionExpectSuccess();
91 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
92 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'Admin');
93
94 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);
95 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
96 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);
97
98 await setVariableMetaDataExpectSuccess(Bob, nftCollectionId, newNftTokenId, data);
99 });
100 });
101
102 it('User can\'n can set variable metadata with Admin permission flag', async () => {
103 await usingApi(async () => {
104 const Alice = privateKey('//Alice');
105 const Bob = privateKey('//Bob');
106
107 const data = [1, 2, 254, 255];
108
109 // nft
110 const nftCollectionId = await createCollectionExpectSuccess();
111 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
112 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'Admin');
113
114 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);
115 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
116 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);
117
118 await setVariableMetaDataExpectSuccess(Bob, nftCollectionId, newNftTokenId, data);
119 });
120 });
121
122 it('ItemOwner can\'n can set variable metadata with Admin permission flag', async () => {
123 await usingApi(async () => {
124 const Alice = privateKey('//Alice');
125 const Bob = privateKey('//Bob');
126
127 const data = [1, 2, 254, 255];
128
129 // nft
130 const nftCollectionId = await createCollectionExpectSuccess();
131 await enablePublicMintingExpectSuccess(Alice, nftCollectionId);
132 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
133 await enableWhiteListExpectSuccess(Alice, nftCollectionId);
134 const newNftTokenId = await createItemExpectSuccess(Bob, nftCollectionId, 'NFT');
135 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'Admin');
136
137 await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);
138 });
139 });
140});
24141
25describe('Metadata update permissions ', () => {142describe('Metadata update permissions with None flag', () => {
26 it('Set variable metadata with ItemOwner permission flag', async () => {
27 await usingApi(async () => {
28 const Alice = privateKey('//Alice');
29
30 const data = [1, 2, 254, 255];
31
32 // nft
33 const nftCollectionId = await createCollectionExpectSuccess();
34 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
35 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'ItemOwner');
36
37 await setVariableMetaDataExpectSuccess(Alice, nftCollectionId, newNftTokenId, data);
38 });
39 });
40
41 it('User can\'n set variable metadata with ItemOwner permission flag', async () => {143 it('Nobody can set variable metadata with None flag (Regular)', async () => {
42 await usingApi(async () => {144 await usingApi(async () => {
43 const Alice = privateKey('//Alice');145 const Alice = privateKey('//Alice');
44 const Bob = privateKey('//Bob');146 const Bob = privateKey('//Bob');
48 // nft150 // nft
49 const nftCollectionId = await createCollectionExpectSuccess();151 const nftCollectionId = await createCollectionExpectSuccess();
50 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');152 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
51 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'ItemOwner');153 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');
52154
53 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);
54 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
55 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);
56
57 await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);155 await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);
58 });156 });
59 });157 });
60158
61 it('Admin can set variable metadata with Admin permission flag', async () => {159 it('Nobody can set variable metadata with None flag (Admin)', async () => {
62 await usingApi(async () => {160 await usingApi(async () => {
63 const Alice = privateKey('//Alice');161 const Alice = privateKey('//Alice');
64 const Bob = privateKey('//Bob');162 const Bob = privateKey('//Bob');
68 // nft166 // nft
69 const nftCollectionId = await createCollectionExpectSuccess();167 const nftCollectionId = await createCollectionExpectSuccess();
70 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');168 const newNftTokenId = await createItemExpectSuccess(Alice, nftCollectionId, 'NFT');
71 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'Admin');169 await setMetadataUpdatePermissionFlagExpectSuccess(Alice, nftCollectionId, 'None');
72170
73 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);171 await setMintPermissionExpectSuccess(Alice, nftCollectionId, true);
74 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);172 await addToWhiteListExpectSuccess(Alice, nftCollectionId, Bob.address);
75 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);173 await addCollectionAdminExpectSuccess(Alice, nftCollectionId, Bob);
76 174
77 await setVariableMetaDataExpectSuccess(Bob, nftCollectionId, newNftTokenId, data);175 await setVariableMetaDataExpectFailure(Bob, nftCollectionId, newNftTokenId, data);
78 });176 });
79 });177 });
80178
81 it('Nobody can set variable metadata with None flag', async () => {179 it('Nobody can set variable metadata with None flag (ItemOwner)', async () => {
82 await usingApi(async () => {180 await usingApi(async () => {
83 const Alice = privateKey('//Alice');181 const Alice = privateKey('//Alice');
84 182