From 74a9d83466418a78c21ed819d2c1305d985177b1 Mon Sep 17 00:00:00 2001 From: Dmitrii Date: Tue, 30 Apr 2024 15:17:07 +0300 Subject: [PATCH] Refactor: Fixing SonarQube and Spotbugs issues (RA-79) --- .../entity/StakeAddressBalanceEntity.java | 3 + .../api/block/model/domain/Delegation.java | 4 +- .../block/model/domain/PoolRegistration.java | 3 +- .../block/model/domain/PoolRetirement.java | 2 - .../block/model/domain/StakeRegistration.java | 2 - .../enumeration/CatalystDataIndexes.java | 2 +- .../common/enumeration/CatalystLabels.java | 2 +- .../rosetta/common/mapper/DataMapper.java | 3 +- .../mapper/TransactionDataToOperations.java | 4 +- .../services/LedgerDataProviderService.java | 4 -- .../impl/CardanoAddressServiceImpl.java | 2 +- .../services/impl/CardanoServiceImpl.java | 19 +++-- .../rosetta/common/util/Constants.java | 17 +++-- .../common/util/OperationParseUtil.java | 3 + .../common/util/ParseConstructionUtil.java | 70 ++++++++++++------- .../common/util/ProcessConstructionUtil.java | 8 ++- .../LedgerBlockServiceImplIntTest.java | 44 +++++------- .../Rosetta-java-env.postman_environment.json | 2 +- ...osetta-javaDevEnv.postman_environment.json | 2 +- .../rosetta-java.postman_collection.json | 24 +++++-- 20 files changed, 118 insertions(+), 102 deletions(-) diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/account/model/entity/StakeAddressBalanceEntity.java b/api/src/main/java/org/cardanofoundation/rosetta/api/account/model/entity/StakeAddressBalanceEntity.java index 2e8ec800a..7757a87ff 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/account/model/entity/StakeAddressBalanceEntity.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/account/model/entity/StakeAddressBalanceEntity.java @@ -9,12 +9,14 @@ import lombok.AllArgsConstructor; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import org.cardanofoundation.rosetta.api.block.model.entity.BlockAwareEntity; import org.hibernate.annotations.DynamicUpdate; +@EqualsAndHashCode(callSuper = true) @Data @NoArgsConstructor @AllArgsConstructor @@ -45,3 +47,4 @@ public class StakeAddressBalanceEntity extends BlockAwareEntity { @Column(name = "epoch") private Integer epoch; } + diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/Delegation.java b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/Delegation.java index 97404e1b8..afbf364e5 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/Delegation.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/Delegation.java @@ -5,8 +5,6 @@ import lombok.Data; import lombok.NoArgsConstructor; -import org.cardanofoundation.rosetta.api.block.model.entity.DelegationEntity; - @Data @Builder //TODO saa: refactor tests and remove builder and *argConstructor annotations @NoArgsConstructor @@ -21,4 +19,4 @@ public class Delegation { private String address; -} \ No newline at end of file +} diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/PoolRegistration.java b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/PoolRegistration.java index 45fb50a68..4dbda15f5 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/PoolRegistration.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/PoolRegistration.java @@ -8,7 +8,6 @@ import lombok.Data; import lombok.NoArgsConstructor; -import org.cardanofoundation.rosetta.api.block.model.entity.PoolRegistrationEntity; import org.openapitools.client.model.Relay; @Data @@ -28,4 +27,4 @@ public class PoolRegistration { private Set owners; private List relays; -} \ No newline at end of file +} diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/PoolRetirement.java b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/PoolRetirement.java index d1b2bd354..ccc499ed8 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/PoolRetirement.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/PoolRetirement.java @@ -5,8 +5,6 @@ import lombok.Data; import lombok.NoArgsConstructor; -import org.cardanofoundation.rosetta.api.block.model.entity.PoolRetirementEntity; - @Data @Builder // TODO saa: remove this and refactor tests @NoArgsConstructor diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/StakeRegistration.java b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/StakeRegistration.java index 8d96812fc..1b6e8f3ce 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/StakeRegistration.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/block/model/domain/StakeRegistration.java @@ -7,8 +7,6 @@ import com.bloxbean.cardano.yaci.core.model.certs.CertificateType; -import org.cardanofoundation.rosetta.api.block.model.entity.StakeRegistrationEntity; - @Data @Builder //TODO saa: remove this and refactor tests @NoArgsConstructor diff --git a/api/src/main/java/org/cardanofoundation/rosetta/common/enumeration/CatalystDataIndexes.java b/api/src/main/java/org/cardanofoundation/rosetta/common/enumeration/CatalystDataIndexes.java index ac4e4755b..2e226cc29 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/common/enumeration/CatalystDataIndexes.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/common/enumeration/CatalystDataIndexes.java @@ -16,7 +16,7 @@ public enum CatalystDataIndexes { public static CatalystDataIndexes findByValue(Long value) { for (CatalystDataIndexes a : CatalystDataIndexes.values()) { - if (a.getValue() == value) { + if (a.getValue().equals(value)) { return a; } } diff --git a/api/src/main/java/org/cardanofoundation/rosetta/common/enumeration/CatalystLabels.java b/api/src/main/java/org/cardanofoundation/rosetta/common/enumeration/CatalystLabels.java index a69afbdfd..ab7ef2045 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/common/enumeration/CatalystLabels.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/common/enumeration/CatalystLabels.java @@ -14,7 +14,7 @@ public enum CatalystLabels { public static CatalystLabels findByValue(String label) { for (CatalystLabels a : CatalystLabels.values()) { - if (a.getLabel() == label) { + if (a.getLabel().equals(label)) { return a; } } diff --git a/api/src/main/java/org/cardanofoundation/rosetta/common/mapper/DataMapper.java b/api/src/main/java/org/cardanofoundation/rosetta/common/mapper/DataMapper.java index c628236b3..d90201bd9 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/common/mapper/DataMapper.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/common/mapper/DataMapper.java @@ -101,8 +101,7 @@ public static CoinChange getCoinChange(int index, String hash, CoinAction coinAc CoinIdentifier coinIdentifier = new CoinIdentifier(); coinIdentifier.setIdentifier(hash + ":" + index); - return CoinChange.builder().coinIdentifier(CoinIdentifier.builder().identifier(hash + ":" + index).build()) - .coinAction(coinAction).build(); + return CoinChange.builder().coinIdentifier(coinIdentifier).coinAction(coinAction).build(); } diff --git a/api/src/main/java/org/cardanofoundation/rosetta/common/mapper/TransactionDataToOperations.java b/api/src/main/java/org/cardanofoundation/rosetta/common/mapper/TransactionDataToOperations.java index 108899786..397e186a3 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/common/mapper/TransactionDataToOperations.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/common/mapper/TransactionDataToOperations.java @@ -99,7 +99,7 @@ private static void fillOutputOperations(TransactionBody transactionBody, List STAKING_OPERATIONS = new ArrayList<>( + public static final List STAKING_OPERATIONS = List.of(OperationType.STAKE_DELEGATION.getValue(), OperationType.STAKE_KEY_REGISTRATION.getValue(), OperationType.STAKE_KEY_DEREGISTRATION.getValue(), - OperationType.WITHDRAWAL.getValue())); - public static final List POOL_OPERATIONS = new ArrayList<>( + OperationType.WITHDRAWAL.getValue()); + public static final List POOL_OPERATIONS = List.of(OperationType.POOL_RETIREMENT.getValue(), OperationType.POOL_REGISTRATION.getValue(), - OperationType.POOL_REGISTRATION_WITH_CERT.getValue())); - public static final List STAKE_POOL_OPERATIONS = new ArrayList<>( + OperationType.POOL_REGISTRATION_WITH_CERT.getValue()); + public static final List STAKE_POOL_OPERATIONS = List.of(OperationType.STAKE_DELEGATION.getValue(), OperationType.STAKE_KEY_REGISTRATION.getValue(), OperationType.STAKE_KEY_DEREGISTRATION.getValue(), OperationType.POOL_RETIREMENT.getValue(), OperationType.POOL_REGISTRATION.getValue(), - OperationType.POOL_REGISTRATION_WITH_CERT.getValue())); - public static final List VOTE_OPERATIONS = new ArrayList<>( - List.of(OperationType.VOTE_REGISTRATION.getValue())); + OperationType.POOL_REGISTRATION_WITH_CERT.getValue()); + public static final List VOTE_OPERATIONS = + List.of(OperationType.VOTE_REGISTRATION.getValue()); public static final Integer ED_25519_KEY_SIGNATURE_BYTE_LENGTH = 64; diff --git a/api/src/main/java/org/cardanofoundation/rosetta/common/util/OperationParseUtil.java b/api/src/main/java/org/cardanofoundation/rosetta/common/util/OperationParseUtil.java index 579853e55..9d0798bdd 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/common/util/OperationParseUtil.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/common/util/OperationParseUtil.java @@ -18,6 +18,9 @@ public class OperationParseUtil { + private OperationParseUtil() { + } + public static ProcessOperations parseOperation( Operation operation, NetworkIdentifierType networkIdentifierType, ProcessOperations resultAccumulator, String type) { return switch (OperationType.fromValue(type)) { diff --git a/api/src/main/java/org/cardanofoundation/rosetta/common/util/ParseConstructionUtil.java b/api/src/main/java/org/cardanofoundation/rosetta/common/util/ParseConstructionUtil.java index fb02ff55f..6c7a59386 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/common/util/ParseConstructionUtil.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/common/util/ParseConstructionUtil.java @@ -26,13 +26,16 @@ import com.bloxbean.cardano.client.transaction.spec.cert.SingleHostName; import com.bloxbean.cardano.client.transaction.spec.cert.StakeDelegation; import com.bloxbean.cardano.client.util.HexUtil; + import java.math.BigInteger; import java.util.Comparator; import java.util.Objects; -import java.util.Optional; import java.util.concurrent.atomic.AtomicLong; + import lombok.extern.slf4j.Slf4j; + import org.apache.commons.lang3.ObjectUtils; + import org.cardanofoundation.rosetta.common.enumeration.CatalystDataIndexes; import org.cardanofoundation.rosetta.common.enumeration.CatalystLabels; import org.cardanofoundation.rosetta.common.enumeration.CatalystSigIndexes; @@ -45,10 +48,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; + import org.cardanofoundation.rosetta.common.enumeration.OperationType; import org.cardanofoundation.rosetta.common.exception.ExceptionFactory; import org.cardanofoundation.rosetta.common.mapper.DataMapper; import org.cardanofoundation.rosetta.common.model.cardano.network.RelayType; + import org.openapitools.client.model.AccountIdentifier; import org.openapitools.client.model.Amount; import org.openapitools.client.model.CoinAction; @@ -70,6 +75,9 @@ @Slf4j public class ParseConstructionUtil { + private ParseConstructionUtil() { + } + public static Inet4Address parseIpv4(String ip) throws UnknownHostException { if (!ObjectUtils.isEmpty(ip)) { String[] ipNew = ip.split("\\."); @@ -92,10 +100,11 @@ public static Inet6Address parseIpv6(String ip) throws UnknownHostException { } - public static List getOwnerAddressesFromPoolRegistrations(String networkId, PoolRegistration poolRegistration) { + public static List getOwnerAddressesFromPoolRegistrations(String networkId, + PoolRegistration poolRegistration) { List poolOwners = new ArrayList<>(); Set owners = poolRegistration.getPoolOwners(); - for(String owner : owners) { + for (String owner : owners) { if (networkId.equals(NetworkIdentifierType.CARDANO_TESTNET_NETWORK.getNetworkId())) { Address address = CardanoAddressUtils.getAddress(null, HexUtil.decodeHexString(owner), Constants.STAKE_KEY_HASH_HEADER_KIND, @@ -118,7 +127,8 @@ public static List getOwnerAddressesFromPoolRegistrations(String network return poolOwners; } - public static String getRewardAddressFromPoolRegistration(String networkId, PoolRegistration poolRegistration) { + public static String getRewardAddressFromPoolRegistration(String networkId, + PoolRegistration poolRegistration) { String cutRewardAccount = poolRegistration.getRewardAccount(); if (cutRewardAccount.length() == Constants.HEX_PREFIX_AND_REWARD_ACCOUNT_LENGTH) { // removing prefix 0x from reward account, reward account is 56 bytes @@ -126,30 +136,30 @@ public static String getRewardAddressFromPoolRegistration(String networkId, Pool } if (networkId.equals(NetworkIdentifierType.CARDANO_TESTNET_NETWORK.getNetworkId())) { return CardanoAddressUtils.getAddress(null, - HexUtil.decodeHexString(cutRewardAccount), - Constants.STAKE_KEY_HASH_HEADER_KIND, - Networks.testnet(), Reward) - .getAddress(); + HexUtil.decodeHexString(cutRewardAccount), + Constants.STAKE_KEY_HASH_HEADER_KIND, + Networks.testnet(), Reward) + .getAddress(); } if (networkId.equals(NetworkIdentifierType.CARDANO_PREPROD_NETWORK.getNetworkId())) { return CardanoAddressUtils.getAddress(null, - HexUtil.decodeHexString(cutRewardAccount), + HexUtil.decodeHexString(cutRewardAccount), Constants.STAKE_KEY_HASH_HEADER_KIND, - Networks.preprod(), Reward) - .getAddress(); + Networks.preprod(), Reward) + .getAddress(); } if (networkId.equals(NetworkIdentifierType.CARDANO_MAINNET_NETWORK.getNetworkId())) { return CardanoAddressUtils.getAddress(null, - HexUtil.decodeHexString(cutRewardAccount), + HexUtil.decodeHexString(cutRewardAccount), Constants.STAKE_KEY_HASH_HEADER_KIND, - Networks.mainnet(), Reward) - .getAddress(); + Networks.mainnet(), Reward) + .getAddress(); } throw ExceptionFactory.invalidAddressError("Can't get Reward address from PoolRegistration"); } - public static Operation TransactionInputToOperation(TransactionInput input, Long index) { + public static Operation transactionInputToOperation(TransactionInput input, Long index) { return new Operation(new OperationIdentifier(index, null), null, OperationType.INPUT.getValue(), "", null, null, new CoinChange(new CoinIdentifier( @@ -157,7 +167,7 @@ public static Operation TransactionInputToOperation(TransactionInput input, Long + input.getIndex()), CoinAction.SPENT), null); } - public static Operation TransActionOutputToOperation(TransactionOutput output, Long index, + public static Operation transActionOutputToOperation(TransactionOutput output, Long index, List relatedOperations) { OperationIdentifier operationIdentifier = new OperationIdentifier(index, null); AccountIdentifier account = new AccountIdentifier(output.getAddress(), null, null); @@ -186,7 +196,8 @@ public static OperationMetadata parseTokenBundle(TransactionOutput output) { .toList(); } - return !ObjectUtils.isEmpty(multiAssets) ? OperationMetadata.builder().tokenBundle(tokenBundle).build() : null; + return !ObjectUtils.isEmpty(multiAssets) ? OperationMetadata.builder().tokenBundle(tokenBundle) + .build() : null; } public static TokenBundleItem parseTokenAsset(List multiAssets, String policyId) { @@ -256,11 +267,7 @@ public static List parseCertsToOperations(TransactionBody transaction for (int i = 0; i < certsCount; i++) { Operation certOperation = certOps.get(i); if (Constants.STAKING_OPERATIONS.contains(certOperation.getType())) { - String hex = null; - if (checkStakeCredential(certOperation)) { - hex = certOperation.getMetadata().getStakingCredential().getHexBytes(); - } - Optional.ofNullable(hex).orElseThrow(ExceptionFactory::missingStakingKeyError); + String hex = getStakingCredentialHex(certOperation); HdPublicKey hdPublicKey = new HdPublicKey(); hdPublicKey.setKeyData(HexUtil.decodeHexString(hex)); String address = CardanoAddressUtils.generateRewardAddress( @@ -295,6 +302,18 @@ public static List parseCertsToOperations(TransactionBody transaction return parsedOperations; } + private static String getStakingCredentialHex(Operation certOperation) { + String hex = null; + if (checkStakeCredential(certOperation)) { + hex = certOperation.getMetadata().getStakingCredential().getHexBytes(); + } + if (hex == null) { + log.error("[parseCertsToOperations] Missing staking key"); + throw ExceptionFactory.missingStakingKeyError(); + } + return hex; + } + public static Operation parsePoolCertToOperation(Integer network, Certificate cert, Long index, String type) throws CborSerializationException, CborException { @@ -517,12 +536,12 @@ public static List parsePoolRelays(PoolRegistration poolRegistration) { MultiHostName multiHostRelay = getMultiHostRelay(relay); SingleHostName singleHostName = getSingleHostName(relay); SingleHostAddr singleHostAddr = getSingleHostAddr(relay); - if (multiHostRelay!=null || singleHostName!=null) { + if (multiHostRelay != null || singleHostName != null) { addRelayToPoolReLayOfTypeMultiHostOrSingleHostName(poolRelays, multiHostRelay, singleHostName); continue; } - if (singleHostAddr!=null) { + if (singleHostAddr != null) { addRelayToPoolReLayOfTypeSingleHostAddr(poolRelays, singleHostAddr); } } @@ -598,7 +617,8 @@ public static Operation parseCertToOperation(Certificate cert, Long index, Strin String address) { Operation operation = new Operation(new OperationIdentifier(index, null), null, type, "", new AccountIdentifier(address, null, null), null, null, - OperationMetadata.builder().stakingCredential(new PublicKey(hash, CurveType.EDWARDS25519)).build()); + OperationMetadata.builder().stakingCredential(new PublicKey(hash, CurveType.EDWARDS25519)) + .build()); StakeDelegation delegationCert = null; try { delegationCert = (StakeDelegation) cert; diff --git a/api/src/main/java/org/cardanofoundation/rosetta/common/util/ProcessConstructionUtil.java b/api/src/main/java/org/cardanofoundation/rosetta/common/util/ProcessConstructionUtil.java index 57f392eec..d1ac2ae95 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/common/util/ProcessConstructionUtil.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/common/util/ProcessConstructionUtil.java @@ -187,8 +187,12 @@ public static ProcessPoolRegistrationReturn getPoolRegistrationFromOperation(Ope public static PoolRegistrationCertReturn getPoolRegistrationCertFromOperation(Operation operation, NetworkIdentifierType networkIdentifierType) { - OperationMetadata operationMetadata = operation.getMetadata(); - AccountIdentifier account = operation == null ? null : operation.getAccount(); + OperationMetadata operationMetadata = null; + AccountIdentifier account = null; + if (operation != null) { + operationMetadata = operation.getMetadata(); + account = operation.getAccount(); + } return ValidateParseUtil.validateAndParsePoolRegistrationCert( networkIdentifierType, operationMetadata == null ? null : operationMetadata.getPoolRegistrationCert(), diff --git a/api/src/test/java/org/cardanofoundation/rosetta/api/block/service/LedgerBlockServiceImplIntTest.java b/api/src/test/java/org/cardanofoundation/rosetta/api/block/service/LedgerBlockServiceImplIntTest.java index a8dd71f0d..aa754577f 100644 --- a/api/src/test/java/org/cardanofoundation/rosetta/api/block/service/LedgerBlockServiceImplIntTest.java +++ b/api/src/test/java/org/cardanofoundation/rosetta/api/block/service/LedgerBlockServiceImplIntTest.java @@ -97,14 +97,13 @@ void findTransactionsByBlock_Test_delegation_tx() { List txs = ledgerBlockService.findTransactionsByBlock(tx.blockNumber(), tx.blockHash()); //then - assertThat(txs).isNotNull(); - assertThat(txs.size()).isEqualTo(1); + assertThat(txs).isNotNull().hasSize(1); BlockTx blockTx = txs.getFirst(); assertThat(blockTx.getHash()).isEqualTo(tx.txHash()); assertThat(blockTx.getBlockNo()).isEqualTo(tx.blockNumber()); assertThat(blockTx.getBlockHash()).isEqualTo(tx.blockHash()); - assertThat(blockTx.getDelegations().size()).isEqualTo(1); + assertThat(blockTx.getDelegations()).hasSize(1); assertThat(blockTx.getDelegations().getFirst().getAddress()) .isEqualTo(STAKE_ADDRESS_WITH_EARNED_REWARDS); @@ -112,9 +111,7 @@ void findTransactionsByBlock_Test_delegation_tx() { .createQuery("FROM DelegationEntity b where b.txHash=:hash", DelegationEntity.class) .setParameter("hash", tx.txHash()) .getResultList(); - assertThat(delegations).isNotNull(); - - assertThat(delegations.size()).isEqualTo(1); + assertThat(delegations).isNotNull().hasSize(1); DelegationEntity expected = delegations.getFirst(); assertThat(expected.getAddress()).isEqualTo(STAKE_ADDRESS_WITH_EARNED_REWARDS); @@ -133,23 +130,20 @@ void findTransactionsByBlock_Test_pool_reg_tx() { List txs = ledgerBlockService.findTransactionsByBlock(tx.blockNumber(), tx.blockHash()); //then - assertThat(txs).isNotNull(); - assertThat(txs.size()).isEqualTo(1); + assertThat(txs).isNotNull().hasSize(1); BlockTx blockTx = txs.getFirst(); assertThat(blockTx.getHash()).isEqualTo(tx.txHash()); assertThat(blockTx.getBlockNo()).isEqualTo(tx.blockNumber()); assertThat(blockTx.getBlockHash()).isEqualTo(tx.blockHash()); - assertThat(blockTx.getPoolRegistrations().size()).isEqualTo(1); + assertThat(blockTx.getPoolRegistrations()).hasSize(1); List entity = entityManager .createQuery( "FROM PoolRegistrationEntity b where b.txHash=:hash", PoolRegistrationEntity.class) .setParameter("hash", tx.txHash()) .getResultList(); - assertThat(entity).isNotNull(); - - assertThat(entity.size()).isEqualTo(1); + assertThat(entity).isNotNull().hasSize(1); PoolRegistrationEntity expected = entity.getFirst(); PoolRegistration actual = blockTx.getPoolRegistrations().getFirst(); @@ -163,7 +157,7 @@ void findTransactionsByBlock_Test_pool_reg_tx() { assertThat(actual.getRewardAccount()).isEqualTo(expected.getRewardAccount()); assertThat(actual.getOwners()).isNotEmpty(); assertThat(actual.getOwners()).containsExactlyInAnyOrderElementsOf(expected.getPoolOwners()); - assertThat(actual.getRelays().size()).isEqualTo(1); + assertThat(actual.getRelays()).hasSize(1); assertThat(actual.getRelays().getFirst()) .usingRecursiveComparison() .ignoringFields("type") @@ -180,22 +174,19 @@ void findTransactionsByBlock_Test_pool_ret_tx() { List txs = ledgerBlockService.findTransactionsByBlock(tx.blockNumber(), tx.blockHash()); //then - assertThat(txs).isNotNull(); - assertThat(txs.size()).isEqualTo(1); + assertThat(txs).isNotNull().hasSize(1); BlockTx blockTx = txs.getFirst(); assertThat(blockTx.getHash()).isEqualTo(tx.txHash()); assertThat(blockTx.getBlockNo()).isEqualTo(tx.blockNumber()); assertThat(blockTx.getBlockHash()).isEqualTo(tx.blockHash()); - assertThat(blockTx.getPoolRetirements().size()).isEqualTo(1); + assertThat(blockTx.getPoolRetirements()).hasSize(1); List entity = entityManager .createQuery("FROM PoolRetirementEntity b where b.txHash=:hash", PoolRetirementEntity.class) .setParameter("hash", tx.txHash()) .getResultList(); - assertThat(entity).isNotNull(); - - assertThat(entity.size()).isEqualTo(1); + assertThat(entity).isNotNull().hasSize(1); PoolRetirementEntity expected = entity.getFirst(); PoolRetirement actual = blockTx.getPoolRetirements().getFirst(); @@ -213,22 +204,19 @@ void findTransactionsByBlock_Test_stake_pool_tx() { List txs = ledgerBlockService.findTransactionsByBlock(tx.blockNumber(), tx.blockHash()); //then - assertThat(txs).isNotNull(); - assertThat(txs.size()).isEqualTo(1); + assertThat(txs).isNotNull().hasSize(1); BlockTx blockTx = txs.getFirst(); assertThat(blockTx.getHash()).isEqualTo(tx.txHash()); assertThat(blockTx.getBlockNo()).isEqualTo(tx.blockNumber()); assertThat(blockTx.getBlockHash()).isEqualTo(tx.blockHash()); - assertThat(blockTx.getStakeRegistrations().size()).isEqualTo(1); + assertThat(blockTx.getStakeRegistrations()).hasSize(1); List entity = entityManager .createQuery("FROM StakeRegistrationEntity b where b.txHash=:hash", StakeRegistrationEntity.class) .setParameter("hash", tx.txHash()) .getResultList(); - assertThat(entity).isNotNull(); - - assertThat(entity.size()).isEqualTo(1); + assertThat(entity).isNotNull().hasSize(1); StakeRegistrationEntity expected = entity.getFirst(); StakeRegistration actual = blockTx.getStakeRegistrations().getFirst(); @@ -274,7 +262,7 @@ private static void assertBlocks(Block latestBlock, BlockEntity fromBlockB) { assertThat(latestBlock).isNotNull(); assertThat(latestBlock.getHash()).isEqualTo(fromBlockB.getHash()); assertThat(latestBlock.getSlotNo()).isEqualTo(fromBlockB.getNumber()); - assertThat(latestBlock.getTransactions().size()).isEqualTo(fromBlockB.getTransactions().size()); + assertThat(latestBlock.getTransactions()).hasSize(fromBlockB.getTransactions().size()); assertThat(latestBlock.getEpochNo()).isEqualTo(fromBlockB.getEpochNumber()); } @@ -282,7 +270,7 @@ private static void assertBlockAndTx(Block block, TransactionBlockDetails tx) { assertThat(block).isNotNull(); assertThat(block.getHash()).isEqualTo(tx.blockHash()); assertThat(block.getSlotNo()).isEqualTo(tx.blockNumber()); - assertThat(block.getTransactions().size()).isEqualTo(1); + assertThat(block.getTransactions()).hasSize(1); assertThat(block.getTransactions().getFirst().getHash()).isEqualTo(tx.txHash()); } -} \ No newline at end of file +} diff --git a/postmanTests/Rosetta-java-env.postman_environment.json b/postmanTests/Rosetta-java-env.postman_environment.json index a5d2fe8ed..37cf7ffe3 100644 --- a/postmanTests/Rosetta-java-env.postman_environment.json +++ b/postmanTests/Rosetta-java-env.postman_environment.json @@ -70,7 +70,7 @@ }, { "key": "TestAccountAddressWithUTXO", - "value": "addr_test1vzs0r2nae22szlq3ul3h8t4u7rz9dr850mqjh98caddm4zcypzjjt", + "value": "addr_test1vpf8vv32c7yzgdqh8hxxgsvstannw6ym6vymdzkckds5lkq4jtrmx", "type": "default", "enabled": true }, diff --git a/postmanTests/Rosetta-javaDevEnv.postman_environment.json b/postmanTests/Rosetta-javaDevEnv.postman_environment.json index 7e465304b..e477e0080 100644 --- a/postmanTests/Rosetta-javaDevEnv.postman_environment.json +++ b/postmanTests/Rosetta-javaDevEnv.postman_environment.json @@ -64,7 +64,7 @@ }, { "key": "TestAccountAddressWithUTXO", - "value": "addr_test1vzs0r2nae22szlq3ul3h8t4u7rz9dr850mqjh98caddm4zcypzjjt", + "value": "addr_test1vpf8vv32c7yzgdqh8hxxgsvstannw6ym6vymdzkckds5lkq4jtrmx", "type": "default", "enabled": true }, diff --git a/postmanTests/rosetta-java.postman_collection.json b/postmanTests/rosetta-java.postman_collection.json index 65821ffdc..dc2c09bef 100644 --- a/postmanTests/rosetta-java.postman_collection.json +++ b/postmanTests/rosetta-java.postman_collection.json @@ -886,7 +886,7 @@ "pm.test(\"Status code is 200\", function () {", " pm.response.to.have.status(200);", "});", - "console.log(pm.response.json())", + "console.log(pm.response.json());", "pm.test(\"Body has not empty address\", function () {", " const current_block_index = Number.parseInt(pm.environment.get('blockIndex'));", " const current_block_hash = pm.environment.get('blockHash');", @@ -904,19 +904,31 @@ "});", "", "const coin_with_metadata_index = pm.response.json().coins.findIndex(el => el.metadata != null);", - "const coin_identifier = pm.response.json().coins[coin_with_metadata_index].coin_identifier.identifier", + "var coin_identifier;", + "", + "if (coin_with_metadata_index !== -1) {", + " coin_identifier = pm.response.json().coins[coin_with_metadata_index].coin_identifier.identifier;", + "} else {", + " console.warn(\"No UTxO with metadata was found\")", + "};", "", "pm.test(\"UTxO has token policyId(s)\", function () {", - " pm.expect(pm.response.json().coins[coin_with_metadata_index].metadata[coin_identifier]).length.to.be.greaterThan(0)", + " if (coin_identifier) {", + " pm.expect(pm.response.json().coins[coin_with_metadata_index].metadata[coin_identifier]).length.to.be.greaterThan(0)", + " }", "});", "", "pm.test(\"Policy has 1 token\", function () {", - " pm.expect(pm.response.json().coins[coin_with_metadata_index].metadata[coin_identifier][0].tokens).to.have.lengthOf(1)", + " if (coin_identifier) {", + " pm.expect(pm.response.json().coins[coin_with_metadata_index].metadata[coin_identifier][0].tokens).to.have.lengthOf(1)", + " }", "});", "", "pm.test(\"UTxO has Testcoin token(s)\", function () {", - " const value = Number(pm.response.json().coins[coin_with_metadata_index].metadata[coin_identifier][0].tokens[0].value)", - " pm.expect(value).to.be.greaterThan(0)", + " if (coin_identifier) {", + " const value = Number(pm.response.json().coins[coin_with_metadata_index].metadata[coin_identifier][0].tokens[0].value)", + " pm.expect(value).to.be.greaterThan(0)", + " }", "});", "" ],