From f8ea549ed486c52680f050b72573a39a2d80ae4e Mon Sep 17 00:00:00 2001 From: AshenI99 Date: Mon, 7 Mar 2022 19:12:09 +0530 Subject: [PATCH 1/2] token metadata validation --- as/cNFT/assembly/__tests__/index.cnft.unit.spec.ts | 7 ++++--- as/cNFT/assembly/mint.ts | 1 + as/utils.ts | 6 ++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/as/cNFT/assembly/__tests__/index.cnft.unit.spec.ts b/as/cNFT/assembly/__tests__/index.cnft.unit.spec.ts index ba6ea66a..e534fb33 100644 --- a/as/cNFT/assembly/__tests__/index.cnft.unit.spec.ts +++ b/as/cNFT/assembly/__tests__/index.cnft.unit.spec.ts @@ -23,7 +23,7 @@ import { Token } from '../models/persistent_tokens' import { AccountId } from '../types' import { nft_payout } from '../royalty_payout' import { Bid } from '../models/market' -import { ONE_NEAR } from '../../../utils' +import {ONE_NEAR, randomInt} from '../../../utils' import { nft_metadata_extra } from '../metadata' const initContract = (): void => { @@ -38,8 +38,9 @@ const mintToken = (accountId: AccountId): Token => { VMContext.setAttached_deposit(ONE_NEAR) const token_metadata = new TokenMetadata() - token_metadata.media = 'media' - token_metadata.extra = 'extra' + token_metadata.title = 'Sample Token' + token_metadata.description = 'Sample token description' + token_metadata.copies = randomInt(1, 10) const token_royalty = new TokenRoyalty() token_royalty.percentage = 2500 diff --git a/as/cNFT/assembly/mint.ts b/as/cNFT/assembly/mint.ts index 73e4fd55..c7f3e724 100644 --- a/as/cNFT/assembly/mint.ts +++ b/as/cNFT/assembly/mint.ts @@ -60,6 +60,7 @@ export function mint( token_royalty: TokenRoyalty ): Token { assert_not_paused() + assert(tokenMetadata.title && tokenMetadata.description && tokenMetadata.copies, 'Token should have valid metadata') const contract_extra = storage.getSome( PersistentNFTContractMetadata.STORAGE_KEY_EXTRA diff --git a/as/utils.ts b/as/utils.ts index 436b63e6..71d275a9 100644 --- a/as/utils.ts +++ b/as/utils.ts @@ -117,3 +117,9 @@ export function royalty_to_payout( u128.from(ONE_HUNDRED_PERCENT) ) } + + +/** @hidden */ +export function randomInt(min: number = 0, max: number = 10): number { + return Math.floor(Math.random() * (max - min + 1) + min) +} \ No newline at end of file From 25539b3038d02e751d2ca6e750ba6672d7aa4f10 Mon Sep 17 00:00:00 2001 From: AshenI99 Date: Mon, 7 Mar 2022 19:39:27 +0530 Subject: [PATCH 2/2] Workspace tests --- near-workspaces/__tests__/nft.ava.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/near-workspaces/__tests__/nft.ava.ts b/near-workspaces/__tests__/nft.ava.ts index e832f93c..e7dd61b4 100644 --- a/near-workspaces/__tests__/nft.ava.ts +++ b/near-workspaces/__tests__/nft.ava.ts @@ -3,6 +3,7 @@ import { CONTRACT_EXTRA, CONTRACT_METADATA, get_random_token_metadata, + TOKEN_ROYALTY, } from '../utils/dummyData' import { call_burn_design, @@ -79,14 +80,13 @@ workspace.test( }) test.log(`✓ Alice failed to mint with wrong deposit\n`) - /** @todo fix in the contract **/ - // await test.throwsAsync(async () => { - // await call_mint(contract, alice, { - // tokenMetadata: {}, - // token_royalty: TOKEN_ROYALTY - // }) - // }) - // test.log(`✓ Alice failed to mint without tokenMetadata\n`) + await test.throwsAsync(async () => { + await call_mint(contract, alice, { + tokenMetadata: {}, + token_royalty: TOKEN_ROYALTY + }) + }) + test.log(`✓ Alice failed to mint without tokenMetadata\n`) await test.throwsAsync(async () => { await call_mint(contract, alice, {