20
20
import com .openelements .hiero .base .protocol .data .TokenAssociateResult ;
21
21
import com .openelements .hiero .base .protocol .data .TokenDissociateRequest ;
22
22
import com .openelements .hiero .base .protocol .data .TokenDissociateResult ;
23
+ import com .openelements .hiero .base .protocol .data .TokenMintRequest ;
24
+ import com .openelements .hiero .base .protocol .data .TokenMintResult ;
23
25
24
26
import java .util .List ;
25
27
import org .junit .jupiter .api .Assertions ;
@@ -36,6 +38,7 @@ public class FungibleClientImplTest {
36
38
ArgumentCaptor <TokenCreateRequest > tokenCreateCaptor = ArgumentCaptor .forClass (TokenCreateRequest .class );
37
39
ArgumentCaptor <TokenAssociateRequest > tokenAssociateCaptor = ArgumentCaptor .forClass (TokenAssociateRequest .class );
38
40
ArgumentCaptor <TokenDissociateRequest > tokenDissociateCaptor = ArgumentCaptor .forClass (TokenDissociateRequest .class );
41
+ ArgumentCaptor <TokenMintRequest > tokenMintCaptor = ArgumentCaptor .forClass (TokenMintRequest .class );
39
42
40
43
@ BeforeEach
41
44
public void setup () {
@@ -422,4 +425,114 @@ void testDissociateTokenWithMultipleTokenThrowExceptionIfListEmpty() {
422
425
() -> fungibleClientImpl .dissociateToken (List .of (), accountId , accountKey ));
423
426
Assertions .assertEquals ("tokenIds must not be empty" , e .getMessage ());
424
427
}
428
+
429
+ @ Test
430
+ void testMintToken () throws HieroException {
431
+ final TokenMintResult tokenMintResult = Mockito .mock (TokenMintResult .class );
432
+ final long totalSupply = 20 ;
433
+ final PrivateKey privateKey = PrivateKey .generateECDSA ();
434
+
435
+ final TokenId tokenId = TokenId .fromString ("0.0.1" );
436
+ final long amount = 10 ;
437
+
438
+ when (operationalAccount .privateKey ()).thenReturn (privateKey );
439
+ when (protocolLayerClient .executeMintTokenTransaction (any (TokenMintRequest .class )))
440
+ .thenReturn (tokenMintResult );
441
+ when (tokenMintResult .totalSupply ()).thenReturn (totalSupply );
442
+
443
+ final long result = fungibleClientImpl .mintToken (tokenId , amount );
444
+
445
+ verify (operationalAccount , times (1 )).privateKey ();
446
+ verify (protocolLayerClient , times (1 ))
447
+ .executeMintTokenTransaction (tokenMintCaptor .capture ());
448
+ verify (tokenMintResult , times (1 )).totalSupply ();
449
+
450
+ final TokenMintRequest capture = tokenMintCaptor .getValue ();
451
+ Assertions .assertEquals (tokenId , capture .tokenId ());
452
+ Assertions .assertEquals (privateKey , capture .supplyKey ());
453
+ Assertions .assertEquals (amount , capture .amount ());
454
+ Assertions .assertEquals (totalSupply , result );
455
+ }
456
+
457
+ @ Test
458
+ void testMintTokenWithSupplyKey () throws HieroException {
459
+ final TokenMintResult tokenMintResult = Mockito .mock (TokenMintResult .class );
460
+ final long totalSupply = 20 ;
461
+
462
+ final PrivateKey supplyKey = PrivateKey .generateECDSA ();
463
+ final TokenId tokenId = TokenId .fromString ("0.0.1" );
464
+ final long amount = 10 ;
465
+
466
+ when (protocolLayerClient .executeMintTokenTransaction (any (TokenMintRequest .class )))
467
+ .thenReturn (tokenMintResult );
468
+ when (tokenMintResult .totalSupply ()).thenReturn (totalSupply );
469
+
470
+ final long result = fungibleClientImpl .mintToken (tokenId , supplyKey , amount );
471
+
472
+ verify (protocolLayerClient , times (1 ))
473
+ .executeMintTokenTransaction (tokenMintCaptor .capture ());
474
+ verify (tokenMintResult , times (1 )).totalSupply ();
475
+
476
+ final TokenMintRequest capture = tokenMintCaptor .getValue ();
477
+ Assertions .assertEquals (tokenId , capture .tokenId ());
478
+ Assertions .assertEquals (supplyKey , capture .supplyKey ());
479
+ Assertions .assertEquals (amount , capture .amount ());
480
+ Assertions .assertEquals (totalSupply , result );
481
+ }
482
+
483
+ @ Test
484
+ void testMintTokenThrowExceptionIfAmountLessThanEqualToZero () {
485
+ final String message = "amount must be greater than 0" ;
486
+
487
+ final PrivateKey supplyKey = PrivateKey .generateECDSA ();
488
+ final TokenId tokenId = TokenId .fromString ("0.0.1" );
489
+ final long amount = 0 ;
490
+
491
+ when (operationalAccount .privateKey ()).thenReturn (supplyKey );
492
+
493
+ final IllegalArgumentException e1 = Assertions .assertThrows (
494
+ IllegalArgumentException .class , () -> fungibleClientImpl .mintToken (tokenId , amount )
495
+ );
496
+ final IllegalArgumentException e2 = Assertions .assertThrows (
497
+ IllegalArgumentException .class , () -> fungibleClientImpl .mintToken (tokenId , supplyKey , amount )
498
+ );
499
+
500
+ Assertions .assertEquals (message , e1 .getMessage ());
501
+ Assertions .assertEquals (message , e2 .getMessage ());
502
+ }
503
+
504
+ @ Test
505
+ void testMintTokenThrowExceptionForInvalidTokenId () throws HieroException {
506
+ final PrivateKey supplyKey = PrivateKey .generateECDSA ();
507
+ final TokenId tokenId = TokenId .fromString ("0.0.1" );
508
+ final long amount = 10 ;
509
+
510
+ when (operationalAccount .privateKey ()).thenReturn (supplyKey );
511
+ when (protocolLayerClient .executeMintTokenTransaction (any (TokenMintRequest .class )))
512
+ .thenThrow (new HieroException ("Failed to execute transaction of type TokenMintTransaction" ));
513
+
514
+ Assertions .assertThrows (HieroException .class , () -> fungibleClientImpl .mintToken (tokenId , amount ));
515
+ Assertions .assertThrows (HieroException .class , () -> fungibleClientImpl .mintToken (tokenId , supplyKey , amount ));
516
+ }
517
+
518
+ @ Test
519
+ void testMintTokenThrowExceptionForNullParams () {
520
+ final PrivateKey supplyKey = PrivateKey .generateECDSA ();
521
+ final TokenId tokenId = TokenId .fromString ("0.0.1" );
522
+ final long amount = 10 ;
523
+
524
+ final NullPointerException e1 = Assertions .assertThrows (
525
+ NullPointerException .class , () -> fungibleClientImpl .mintToken ((TokenId ) null , amount )
526
+ );
527
+ final NullPointerException e2 = Assertions .assertThrows (
528
+ NullPointerException .class , () -> fungibleClientImpl .mintToken (null , supplyKey , amount )
529
+ );
530
+ final NullPointerException e3 = Assertions .assertThrows (
531
+ NullPointerException .class , () -> fungibleClientImpl .mintToken (tokenId , null , amount )
532
+ );
533
+
534
+ Assertions .assertEquals ("tokenId must not be null" , e1 .getMessage ());
535
+ Assertions .assertEquals ("tokenId must not be null" , e2 .getMessage ());
536
+ Assertions .assertEquals ("supplyKey must not be null" , e3 .getMessage ());
537
+ }
425
538
}
0 commit comments