Skip to content

Commit 8ce0b23

Browse files
committed
added test for mintToken() method of fungibleTokenClientImpl
Signed-off-by: Manish Dait <daitmanish88@gmail.com>
1 parent b1ccc7a commit 8ce0b23

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed

hiero-enterprise-base/src/test/java/com/openelements/hiero/base/test/FungibleClientImplTest.java

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import com.openelements.hiero.base.protocol.data.TokenAssociateResult;
2121
import com.openelements.hiero.base.protocol.data.TokenDissociateRequest;
2222
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;
2325

2426
import java.util.List;
2527
import org.junit.jupiter.api.Assertions;
@@ -36,6 +38,7 @@ public class FungibleClientImplTest {
3638
ArgumentCaptor<TokenCreateRequest> tokenCreateCaptor = ArgumentCaptor.forClass(TokenCreateRequest.class);
3739
ArgumentCaptor<TokenAssociateRequest> tokenAssociateCaptor = ArgumentCaptor.forClass(TokenAssociateRequest.class);
3840
ArgumentCaptor<TokenDissociateRequest> tokenDissociateCaptor = ArgumentCaptor.forClass(TokenDissociateRequest.class);
41+
ArgumentCaptor<TokenMintRequest> tokenMintCaptor = ArgumentCaptor.forClass(TokenMintRequest.class);
3942

4043
@BeforeEach
4144
public void setup() {
@@ -422,4 +425,114 @@ void testDissociateTokenWithMultipleTokenThrowExceptionIfListEmpty() {
422425
() -> fungibleClientImpl.dissociateToken(List.of(), accountId, accountKey));
423426
Assertions.assertEquals("tokenIds must not be empty", e.getMessage());
424427
}
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+
}
425538
}

0 commit comments

Comments
 (0)