diff --git a/clients/js/test/mintV1.test.ts b/clients/js/test/mintV1.test.ts
index fe593930..1b9ebfb3 100644
--- a/clients/js/test/mintV1.test.ts
+++ b/clients/js/test/mintV1.test.ts
@@ -3,9 +3,10 @@ import {
   generateSigner,
   none,
   publicKey,
+  some,
 } from '@metaplex-foundation/umi';
 import test from 'ava';
-import { MetadataArgsArgs, fetchMerkleTree, hashLeaf, mintV1 } from '../src';
+import { MetadataArgsArgs, TokenStandard, fetchMerkleTree, hashLeaf, mintV1 } from '../src';
 import { createTree, createUmi } from './_setup';
 
 test('it can mint an NFT from a Bubblegum tree', async (t) => {
@@ -46,3 +47,45 @@ test('it can mint an NFT from a Bubblegum tree', async (t) => {
   });
   t.is(merkleTreeAccount.tree.rightMostPath.leaf, publicKey(leaf));
 });
+
+test('it cannot mint an NFT from a Bubblegum tree because token standard is empty', async (t) => {
+  // Given an empty Bubblegum tree.
+  const umi = await createUmi();
+  const merkleTree = await createTree(umi);
+  const leafOwner = generateSigner(umi).publicKey;
+
+  // When we mint a new NFT from the tree using the following metadata.
+  const metadata: MetadataArgsArgs = {
+    name: 'My NFT',
+    uri: 'https://example.com/my-nft.json',
+    sellerFeeBasisPoints: 500, // 5%
+    collection: none(),
+    creators: [],
+    tokenStandard: none()
+  };
+  const promise = mintV1(umi, { leafOwner, merkleTree, metadata }).sendAndConfirm(umi);
+  // Then we expect a program error because metadata's token standard is empty.
+  await t.throwsAsync(promise, { name: 'InvalidTokenStandard' });
+});
+
+
+test('it cannot mint an NFT from a Bubblegum tree because token standard is wrong', async (t) => {
+  // Given an empty Bubblegum tree.
+  const umi = await createUmi();
+  const merkleTree = await createTree(umi);
+  const leafOwner = generateSigner(umi).publicKey;
+
+  // When we mint a new NFT from the tree using the following metadata.
+  const metadata: MetadataArgsArgs = {
+    name: 'My NFT',
+    uri: 'https://example.com/my-nft.json',
+    sellerFeeBasisPoints: 500, // 5%
+    collection: none(),
+    creators: [],
+    tokenStandard: some(TokenStandard.FungibleAsset)
+  };
+  const promise = mintV1(umi, { leafOwner, merkleTree, metadata }).sendAndConfirm(umi);
+  // Then we expect a program error because metadata's token standard is FungibleAsset which is wrong.
+  await t.throwsAsync(promise, { name: 'InvalidTokenStandard' });
+});
+
diff --git a/clients/rust/tests/mint.rs b/clients/rust/tests/mint.rs
index 76ab48d6..3a33af5c 100644
--- a/clients/rust/tests/mint.rs
+++ b/clients/rust/tests/mint.rs
@@ -117,4 +117,94 @@ mod mint {
 
         tree_manager.assert_root(&mut context).await;
     }
+
+    #[tokio::test]
+    async fn mint_empty_token_standard() {
+        let mut program_test = create_program_test();
+        program_test.set_compute_max_units(400_000);
+        let mut context = program_test.start_with_context().await;
+
+        // Given a new merkle tree.
+
+        let mut tree_manager = TreeManager::<5, 8>::default();
+        tree_manager.create(&mut context).await.unwrap();
+
+        assert!(find_account(&mut context, &tree_manager.tree.pubkey())
+            .await
+            .is_some());
+
+        // When minting a new cNFT.
+        let owner = Keypair::new();
+
+        let metadata = MetadataArgs {
+            name: String::from("cNFT"),
+            uri: String::from("https://c.nft"),
+            symbol: String::from("cNFT"),
+            creators: vec![Creator {
+                address: context.payer.pubkey(),
+                share: 100,
+                verified: false,
+            }],
+            edition_nonce: None,
+            is_mutable: true,
+            primary_sale_happened: true,
+            seller_fee_basis_points: 500,
+            token_program_version: TokenProgramVersion::Original,
+            token_standard: None,
+            collection: None,
+            uses: None,
+        };
+
+        let minting_result = tree_manager
+            .mint(&mut context, owner.pubkey(), metadata)
+            .await;
+
+        // Minting must fail because the token standard hasn't been provided.
+        assert!(minting_result.is_err());
+    }
+
+    #[tokio::test]
+    async fn mint_wrong_token_standard() {
+        let mut program_test = create_program_test();
+        program_test.set_compute_max_units(400_000);
+        let mut context = program_test.start_with_context().await;
+
+        // Given a new merkle tree.
+
+        let mut tree_manager = TreeManager::<5, 8>::default();
+        tree_manager.create(&mut context).await.unwrap();
+
+        assert!(find_account(&mut context, &tree_manager.tree.pubkey())
+            .await
+            .is_some());
+
+        // When minting a new cNFT.
+        let owner = Keypair::new();
+
+        let metadata = MetadataArgs {
+            name: String::from("cNFT"),
+            uri: String::from("https://c.nft"),
+            symbol: String::from("cNFT"),
+            creators: vec![Creator {
+                address: context.payer.pubkey(),
+                share: 100,
+                verified: false,
+            }],
+            edition_nonce: None,
+            is_mutable: true,
+            primary_sale_happened: true,
+            seller_fee_basis_points: 500,
+            token_program_version: TokenProgramVersion::Original,
+            token_standard: Some(TokenStandard::FungibleAsset),
+            collection: None,
+            uses: None,
+        };
+
+        let minting_result = tree_manager
+            .mint(&mut context, owner.pubkey(), metadata)
+            .await;
+
+        // Minting must fail because the provided token standard is Fungible.
+        assert!(minting_result.is_err());
+    }
 }