Search in sources :

Example 1 with TokenCreateTransaction

use of com.hedera.hashgraph.sdk.TokenCreateTransaction in project hedera-sdk-java by hashgraph.

the class TokenDissociateIntegrationTest method cannotDissociateAccountWhenAccountDoesNotSignTransaction.

@Test
@DisplayName("Cannot dissociate account with tokens when account does not sign transaction")
void cannotDissociateAccountWhenAccountDoesNotSignTransaction() throws Exception {
    var testEnv = new IntegrationTestEnv(1).useThrowawayAccount();
    var key = PrivateKey.generateED25519();
    var response = new AccountCreateTransaction().setKey(key).setInitialBalance(new Hbar(1)).execute(testEnv.client);
    var accountId = Objects.requireNonNull(response.getReceipt(testEnv.client).accountId);
    var tokenId = Objects.requireNonNull(new TokenCreateTransaction().setTokenName("ffff").setTokenSymbol("F").setDecimals(3).setInitialSupply(1000000).setTreasuryAccountId(testEnv.operatorId).setAdminKey(testEnv.operatorKey).setFreezeKey(testEnv.operatorKey).setWipeKey(testEnv.operatorKey).setKycKey(testEnv.operatorKey).setSupplyKey(testEnv.operatorKey).setFreezeDefault(false).execute(testEnv.client).getReceipt(testEnv.client).tokenId);
    assertThatExceptionOfType(ReceiptStatusException.class).isThrownBy(() -> {
        new TokenDissociateTransaction().setAccountId(accountId).setTokenIds(Collections.singletonList(tokenId)).execute(testEnv.client).getReceipt(testEnv.client);
    }).withMessageContaining(Status.INVALID_SIGNATURE.toString());
    testEnv.close(tokenId, accountId, key);
}
Also used : TokenDissociateTransaction(com.hedera.hashgraph.sdk.TokenDissociateTransaction) Hbar(com.hedera.hashgraph.sdk.Hbar) TokenCreateTransaction(com.hedera.hashgraph.sdk.TokenCreateTransaction) AccountCreateTransaction(com.hedera.hashgraph.sdk.AccountCreateTransaction) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 2 with TokenCreateTransaction

use of com.hedera.hashgraph.sdk.TokenCreateTransaction in project hedera-sdk-java by hashgraph.

the class TokenDissociateIntegrationTest method canAssociateAccountWithToken.

@Test
@DisplayName("Can dissociate account with token")
void canAssociateAccountWithToken() throws Exception {
    var testEnv = new IntegrationTestEnv(1).useThrowawayAccount();
    var key = PrivateKey.generateED25519();
    var response = new AccountCreateTransaction().setKey(key).setInitialBalance(new Hbar(1)).execute(testEnv.client);
    var accountId = Objects.requireNonNull(response.getReceipt(testEnv.client).accountId);
    var tokenId = Objects.requireNonNull(new TokenCreateTransaction().setTokenName("ffff").setTokenSymbol("F").setDecimals(3).setInitialSupply(1000000).setTreasuryAccountId(testEnv.operatorId).setAdminKey(testEnv.operatorKey).setFreezeKey(testEnv.operatorKey).setWipeKey(testEnv.operatorKey).setKycKey(testEnv.operatorKey).setSupplyKey(testEnv.operatorKey).setFreezeDefault(false).execute(testEnv.client).getReceipt(testEnv.client).tokenId);
    new TokenAssociateTransaction().setAccountId(accountId).setTokenIds(Collections.singletonList(tokenId)).freezeWith(testEnv.client).sign(key).execute(testEnv.client).getReceipt(testEnv.client);
    new TokenDissociateTransaction().setAccountId(accountId).setTokenIds(Collections.singletonList(tokenId)).freezeWith(testEnv.client).sign(key).execute(testEnv.client).getReceipt(testEnv.client);
    testEnv.close(tokenId, accountId, key);
}
Also used : TokenAssociateTransaction(com.hedera.hashgraph.sdk.TokenAssociateTransaction) TokenDissociateTransaction(com.hedera.hashgraph.sdk.TokenDissociateTransaction) Hbar(com.hedera.hashgraph.sdk.Hbar) TokenCreateTransaction(com.hedera.hashgraph.sdk.TokenCreateTransaction) AccountCreateTransaction(com.hedera.hashgraph.sdk.AccountCreateTransaction) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 3 with TokenCreateTransaction

use of com.hedera.hashgraph.sdk.TokenCreateTransaction in project hedera-sdk-java by hashgraph.

the class TokenFeeScheduleUpdateIntegrationTest method cannotUpdateWithAnyOtherKey.

@Test
@DisplayName("Cannot update fee schedule with any key other than fee schedule key")
void cannotUpdateWithAnyOtherKey() throws Exception {
    var testEnv = new IntegrationTestEnv(1).useThrowawayAccount();
    var response = new TokenCreateTransaction().setTokenName("ffff").setTokenSymbol("F").setTreasuryAccountId(testEnv.operatorId).setAdminKey(testEnv.operatorKey).setFeeScheduleKey(PrivateKey.generate()).setFreezeDefault(false).execute(testEnv.client);
    var tokenId = Objects.requireNonNull(response.getReceipt(testEnv.client).tokenId);
    var customFees = new ArrayList<CustomFee>();
    customFees.add(new CustomFixedFee().setAmount(10).setFeeCollectorAccountId(testEnv.operatorId));
    customFees.add(new CustomFractionalFee().setNumerator(1).setDenominator(20).setMin(1).setMax(10).setFeeCollectorAccountId(testEnv.operatorId));
    assertThatExceptionOfType(ReceiptStatusException.class).isThrownBy(() -> {
        new TokenFeeScheduleUpdateTransaction().setTokenId(tokenId).setCustomFees(customFees).execute(testEnv.client).getReceipt(testEnv.client);
    }).withMessageContaining(Status.INVALID_SIGNATURE.toString());
    testEnv.close(tokenId);
}
Also used : CustomFractionalFee(com.hedera.hashgraph.sdk.CustomFractionalFee) ArrayList(java.util.ArrayList) CustomFixedFee(com.hedera.hashgraph.sdk.CustomFixedFee) TokenCreateTransaction(com.hedera.hashgraph.sdk.TokenCreateTransaction) TokenFeeScheduleUpdateTransaction(com.hedera.hashgraph.sdk.TokenFeeScheduleUpdateTransaction) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 4 with TokenCreateTransaction

use of com.hedera.hashgraph.sdk.TokenCreateTransaction in project hedera-sdk-java by hashgraph.

the class TokenFeeScheduleUpdateIntegrationTest method canUpdateToken.

@Test
@DisplayName("Can update token fees")
void canUpdateToken() throws Exception {
    var testEnv = new IntegrationTestEnv(1).useThrowawayAccount();
    var response = new TokenCreateTransaction().setTokenName("ffff").setTokenSymbol("F").setDecimals(3).setInitialSupply(1000000).setTreasuryAccountId(testEnv.operatorId).setAdminKey(testEnv.operatorKey).setFreezeKey(testEnv.operatorKey).setWipeKey(testEnv.operatorKey).setKycKey(testEnv.operatorKey).setSupplyKey(testEnv.operatorKey).setFeeScheduleKey(testEnv.operatorKey).setFreezeDefault(false).execute(testEnv.client);
    var tokenId = Objects.requireNonNull(response.getReceipt(testEnv.client).tokenId);
    @Var var info = new TokenInfoQuery().setTokenId(tokenId).execute(testEnv.client);
    assertThat(info.tokenId).isEqualTo(tokenId);
    assertThat(info.name).isEqualTo("ffff");
    assertThat(info.symbol).isEqualTo("F");
    assertThat(info.decimals).isEqualTo(3);
    assertThat(testEnv.operatorId).isEqualTo(info.treasuryAccountId);
    assertThat(info.adminKey).isNotNull();
    assertThat(info.freezeKey).isNotNull();
    assertThat(info.wipeKey).isNotNull();
    assertThat(info.kycKey).isNotNull();
    assertThat(info.supplyKey).isNotNull();
    assertThat(info.adminKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.freezeKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.wipeKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.kycKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.supplyKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.feeScheduleKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.defaultFreezeStatus).isNotNull();
    assertThat(info.defaultFreezeStatus).isFalse();
    assertThat(info.defaultKycStatus).isNotNull();
    assertThat(info.defaultKycStatus).isFalse();
    assertThat(info.customFees.size()).isEqualTo(0);
    var customFees = new ArrayList<CustomFee>();
    customFees.add(new CustomFixedFee().setAmount(10).setFeeCollectorAccountId(testEnv.operatorId));
    customFees.add(new CustomFractionalFee().setNumerator(1).setDenominator(20).setMin(1).setMax(10).setFeeCollectorAccountId(testEnv.operatorId));
    new TokenFeeScheduleUpdateTransaction().setTokenId(tokenId).setCustomFees(customFees).execute(testEnv.client).getReceipt(testEnv.client);
    info = new TokenInfoQuery().setTokenId(tokenId).execute(testEnv.client);
    assertThat(info.tokenId).isEqualTo(tokenId);
    assertThat(info.name).isEqualTo("ffff");
    assertThat(info.symbol).isEqualTo("F");
    assertThat(info.decimals).isEqualTo(3);
    assertThat(info.treasuryAccountId).isEqualTo(testEnv.operatorId);
    assertThat(info.adminKey).isNotNull();
    assertThat(info.freezeKey).isNotNull();
    assertThat(info.wipeKey).isNotNull();
    assertThat(info.kycKey).isNotNull();
    assertThat(info.supplyKey).isNotNull();
    assertThat(info.adminKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.freezeKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.wipeKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.kycKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.supplyKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.feeScheduleKey.toString()).isEqualTo(testEnv.operatorKey.toString());
    assertThat(info.defaultFreezeStatus).isNotNull();
    assertThat(info.defaultFreezeStatus).isFalse();
    assertThat(info.defaultKycStatus).isNotNull();
    assertThat(info.defaultKycStatus).isFalse();
    var fees = info.customFees;
    assertThat(fees.size()).isEqualTo(2);
    @Var int fixedCount = 0;
    @Var int fractionalCount = 0;
    for (var fee : fees) {
        if (fee instanceof CustomFixedFee) {
            fixedCount++;
            var fixed = (CustomFixedFee) fee;
            assertThat(fixed.getAmount()).isEqualTo(10);
            assertThat(fixed.getFeeCollectorAccountId()).isEqualTo(testEnv.operatorId);
            assertThat(fixed.getDenominatingTokenId()).isNull();
        } else if (fee instanceof CustomFractionalFee) {
            fractionalCount++;
            var fractional = (CustomFractionalFee) fee;
            assertThat(fractional.getNumerator()).isEqualTo(1);
            assertThat(fractional.getDenominator()).isEqualTo(20);
            assertThat(fractional.getMin()).isEqualTo(1);
            assertThat(fractional.getMax()).isEqualTo(10);
            assertThat(fractional.getFeeCollectorAccountId()).isEqualTo(testEnv.operatorId);
        }
    }
    assertThat(fixedCount).isEqualTo(1);
    assertThat(fractionalCount).isEqualTo(1);
    testEnv.close(tokenId);
}
Also used : CustomFractionalFee(com.hedera.hashgraph.sdk.CustomFractionalFee) TokenInfoQuery(com.hedera.hashgraph.sdk.TokenInfoQuery) Var(com.google.errorprone.annotations.Var) ArrayList(java.util.ArrayList) CustomFixedFee(com.hedera.hashgraph.sdk.CustomFixedFee) TokenCreateTransaction(com.hedera.hashgraph.sdk.TokenCreateTransaction) TokenFeeScheduleUpdateTransaction(com.hedera.hashgraph.sdk.TokenFeeScheduleUpdateTransaction) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 5 with TokenCreateTransaction

use of com.hedera.hashgraph.sdk.TokenCreateTransaction in project hedera-sdk-java by hashgraph.

the class TokenFreezeIntegrationTest method canFreezeAccountWithToken.

@Test
@DisplayName("Can freeze account with token")
void canFreezeAccountWithToken() throws Exception {
    var testEnv = new IntegrationTestEnv(1).useThrowawayAccount();
    var key = PrivateKey.generateED25519();
    var response = new AccountCreateTransaction().setKey(key).setInitialBalance(new Hbar(1)).execute(testEnv.client);
    var accountId = Objects.requireNonNull(response.getReceipt(testEnv.client).accountId);
    var tokenId = Objects.requireNonNull(new TokenCreateTransaction().setTokenName("ffff").setTokenSymbol("F").setDecimals(3).setInitialSupply(1000000).setTreasuryAccountId(testEnv.operatorId).setAdminKey(testEnv.operatorKey).setFreezeKey(testEnv.operatorKey).setWipeKey(testEnv.operatorKey).setKycKey(testEnv.operatorKey).setSupplyKey(testEnv.operatorKey).setFreezeDefault(false).execute(testEnv.client).getReceipt(testEnv.client).tokenId);
    new TokenAssociateTransaction().setAccountId(accountId).setTokenIds(Collections.singletonList(tokenId)).freezeWith(testEnv.client).sign(key).execute(testEnv.client).getReceipt(testEnv.client);
    new TokenFreezeTransaction().setAccountId(accountId).setTokenId(tokenId).freezeWith(testEnv.client).sign(key).execute(testEnv.client).getReceipt(testEnv.client);
    testEnv.close(tokenId, accountId, key);
}
Also used : TokenFreezeTransaction(com.hedera.hashgraph.sdk.TokenFreezeTransaction) TokenAssociateTransaction(com.hedera.hashgraph.sdk.TokenAssociateTransaction) Hbar(com.hedera.hashgraph.sdk.Hbar) TokenCreateTransaction(com.hedera.hashgraph.sdk.TokenCreateTransaction) AccountCreateTransaction(com.hedera.hashgraph.sdk.AccountCreateTransaction) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Aggregations

TokenCreateTransaction (com.hedera.hashgraph.sdk.TokenCreateTransaction)70 Test (org.junit.jupiter.api.Test)64 DisplayName (org.junit.jupiter.api.DisplayName)61 Hbar (com.hedera.hashgraph.sdk.Hbar)34 AccountCreateTransaction (com.hedera.hashgraph.sdk.AccountCreateTransaction)29 TokenAssociateTransaction (com.hedera.hashgraph.sdk.TokenAssociateTransaction)21 TokenMintTransaction (com.hedera.hashgraph.sdk.TokenMintTransaction)15 TransferTransaction (com.hedera.hashgraph.sdk.TransferTransaction)14 TokenGrantKycTransaction (com.hedera.hashgraph.sdk.TokenGrantKycTransaction)11 TokenInfoQuery (com.hedera.hashgraph.sdk.TokenInfoQuery)10 TokenWipeTransaction (com.hedera.hashgraph.sdk.TokenWipeTransaction)8 CustomFixedFee (com.hedera.hashgraph.sdk.CustomFixedFee)7 ArrayList (java.util.ArrayList)7 Var (com.google.errorprone.annotations.Var)6 TokenDeleteTransaction (com.hedera.hashgraph.sdk.TokenDeleteTransaction)6 PrivateKey (com.hedera.hashgraph.sdk.PrivateKey)5 PublicKey (com.hedera.hashgraph.sdk.PublicKey)5 CustomFractionalFee (com.hedera.hashgraph.sdk.CustomFractionalFee)4 TokenId (com.hedera.hashgraph.sdk.TokenId)4 TokenNftInfoQuery (com.hedera.hashgraph.sdk.TokenNftInfoQuery)4