mirror of
https://github.com/Qortal/qortal.git
synced 2025-07-23 04:36:50 +00:00
StringBuilder, and other, optimizations for repository-related classes.
Add optional "excludeZero" to API call GET /assets/balances Added tests to call most API calls to check no exceptions are thrown.
This commit is contained in:
36
src/test/java/org/qora/test/api/AddressesApiTests.java
Normal file
36
src/test/java/org/qora/test/api/AddressesApiTests.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package org.qora.test.api;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.qora.api.resource.AddressesResource;
|
||||
import org.qora.test.common.ApiCommon;
|
||||
|
||||
public class AddressesApiTests extends ApiCommon {
|
||||
|
||||
private AddressesResource addressesResource;
|
||||
|
||||
@Before
|
||||
public void buildResource() {
|
||||
this.addressesResource = (AddressesResource) ApiCommon.buildResource(AddressesResource.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAccountInfo() {
|
||||
assertNotNull(this.addressesResource.getAccountInfo(aliceAddress));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetProxying() {
|
||||
assertNotNull(this.addressesResource.getProxying(Collections.singletonList(aliceAddress), null, null, null, null, null));
|
||||
assertNotNull(this.addressesResource.getProxying(null, Collections.singletonList(aliceAddress), null, null, null, null));
|
||||
assertNotNull(this.addressesResource.getProxying(Collections.singletonList(aliceAddress), Collections.singletonList(aliceAddress), null, null, null, null));
|
||||
assertNotNull(this.addressesResource.getProxying(null, null, Collections.singletonList(aliceAddress), null, null, null));
|
||||
assertNotNull(this.addressesResource.getProxying(Collections.singletonList(aliceAddress), Collections.singletonList(aliceAddress), Collections.singletonList(aliceAddress), null, null, null));
|
||||
assertNotNull(this.addressesResource.getProxying(Collections.singletonList(aliceAddress), Collections.singletonList(aliceAddress), Collections.singletonList(aliceAddress), 1, 1, true));
|
||||
}
|
||||
|
||||
}
|
29
src/test/java/org/qora/test/api/AdminApiTests.java
Normal file
29
src/test/java/org/qora/test/api/AdminApiTests.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package org.qora.test.api;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.qora.api.resource.AdminResource;
|
||||
import org.qora.test.common.ApiCommon;
|
||||
|
||||
public class AdminApiTests extends ApiCommon {
|
||||
|
||||
private AdminResource adminResource;
|
||||
|
||||
@Before
|
||||
public void buildResource() {
|
||||
this.adminResource = (AdminResource) ApiCommon.buildResource(AdminResource.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInfo() {
|
||||
assertNotNull(this.adminResource.info());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSummary() {
|
||||
assertNotNull(this.adminResource.summary());
|
||||
}
|
||||
|
||||
}
|
154
src/test/java/org/qora/test/api/AssetsApiTests.java
Normal file
154
src/test/java/org/qora/test/api/AssetsApiTests.java
Normal file
@@ -0,0 +1,154 @@
|
||||
package org.qora.test.api;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.qora.api.ApiError;
|
||||
import org.qora.api.ApiException;
|
||||
import org.qora.api.resource.AssetsResource;
|
||||
import org.qora.api.resource.TransactionsResource.ConfirmationStatus;
|
||||
import org.qora.repository.AccountRepository.BalanceOrdering;
|
||||
import org.qora.test.common.ApiCommon;
|
||||
|
||||
public class AssetsApiTests extends ApiCommon {
|
||||
|
||||
private static final String FAKE_ORDER_ID_BASE58 = "C3CPq7c8PY";
|
||||
|
||||
private AssetsResource assetsResource;
|
||||
|
||||
@Before
|
||||
public void buildResource() {
|
||||
this.assetsResource = (AssetsResource) ApiCommon.buildResource(AssetsResource.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGet() {
|
||||
assertNotNull(this.assetsResource);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAccountAssetPairOrders() {
|
||||
String address = aliceAddress;
|
||||
final int assetId = 0;
|
||||
final int otherAssetId = 1;
|
||||
|
||||
for (Boolean includeClosed : ALL_BOOLEAN_VALUES) {
|
||||
for (Boolean includeFulfilled : ALL_BOOLEAN_VALUES) {
|
||||
assertNotNull(this.assetsResource.getAccountAssetPairOrders(address, assetId, otherAssetId, includeClosed, includeFulfilled, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAccountAssetPairOrders(address, assetId, otherAssetId, includeClosed, includeFulfilled, 1, 1, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAccountOrders() {
|
||||
for (Boolean includeClosed : TF_BOOLEAN_VALUES) {
|
||||
for (Boolean includeFulfilled : TF_BOOLEAN_VALUES) {
|
||||
assertNotNull(this.assetsResource.getAccountOrders(aliceAddress, includeClosed, includeFulfilled, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAccountOrders(aliceAddress, includeClosed, includeFulfilled, 1, 1, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAggregatedOpenOrders() {
|
||||
assertNotNull(this.assetsResource.getAggregatedOpenOrders(0, 1, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAggregatedOpenOrders(0, 1, 1, 1, true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAllAssets() {
|
||||
assertNotNull(this.assetsResource.getAllAssets(null, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAllAssets(false, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAllAssets(false, 1, 1, true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAssetBalances() {
|
||||
List<String> addresses = Arrays.asList(aliceAddress, aliceAddress);
|
||||
List<Long> assetIds = Arrays.asList(1L, 2L, 3L);
|
||||
|
||||
for (BalanceOrdering balanceOrdering : BalanceOrdering.values()) {
|
||||
for (Boolean excludeZero : ALL_BOOLEAN_VALUES) {
|
||||
assertNotNull(this.assetsResource.getAssetBalances(Collections.emptyList(), assetIds, balanceOrdering, excludeZero, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAssetBalances(addresses, Collections.emptyList(), balanceOrdering, excludeZero, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAssetBalances(addresses, assetIds, balanceOrdering, excludeZero, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAssetBalances(addresses, assetIds, balanceOrdering, excludeZero, 1, 1, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAssetInfo() {
|
||||
assertNotNull(this.assetsResource.getAssetInfo((int) 0L, null));
|
||||
assertNotNull(this.assetsResource.getAssetInfo(null, "QORA"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAssetOrder() {
|
||||
try {
|
||||
assertNotNull(this.assetsResource.getAssetOrder(FAKE_ORDER_ID_BASE58));
|
||||
} catch (ApiException e) {
|
||||
assertTrue(e.error == ApiError.ORDER_NO_EXISTS.getCode());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAssetOrderTrades() {
|
||||
try {
|
||||
assertNotNull(this.assetsResource.getAssetOrderTrades(FAKE_ORDER_ID_BASE58, null, null, null));
|
||||
} catch (ApiException e) {
|
||||
assertTrue(e.error == ApiError.ORDER_NO_EXISTS.getCode());
|
||||
}
|
||||
|
||||
try {
|
||||
assertNotNull(this.assetsResource.getAssetOrderTrades(FAKE_ORDER_ID_BASE58, 1, 1, true));
|
||||
} catch (ApiException e) {
|
||||
assertTrue(e.error == ApiError.ORDER_NO_EXISTS.getCode());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAssetTrades() {
|
||||
assertNotNull(this.assetsResource.getAssetTrades(0, 1, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAssetTrades(0, 1, 1, 1, true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAssetTransactions() {
|
||||
for (ConfirmationStatus confirmationStatus : ConfirmationStatus.values()) {
|
||||
assertNotNull(this.assetsResource.getAssetTransactions(0, confirmationStatus, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAssetTransactions(0, confirmationStatus, 1, 1, true));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAssetTransfers() {
|
||||
assertNotNull(this.assetsResource.getAssetTransfers(0, null, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAssetTransfers(0, null, 1, 1, true));
|
||||
assertNotNull(this.assetsResource.getAssetTransfers(0, aliceAddress, null, null, null));
|
||||
assertNotNull(this.assetsResource.getAssetTransfers(0, aliceAddress, 1, 1, true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOpenOrders() {
|
||||
assertNotNull(this.assetsResource.getOpenOrders(0, 1, null, null, null));
|
||||
assertNotNull(this.assetsResource.getOpenOrders(0, 1, 1, 1, true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetRecentTrades() {
|
||||
List<Long> assetIds = Arrays.asList(1L, 2L, 3L);
|
||||
|
||||
assertNotNull(this.assetsResource.getRecentTrades(assetIds, Collections.emptyList(), null, null, null));
|
||||
assertNotNull(this.assetsResource.getRecentTrades(assetIds, Collections.emptyList(), 1, 1, true));
|
||||
assertNotNull(this.assetsResource.getRecentTrades(assetIds, assetIds, null, null, null));
|
||||
assertNotNull(this.assetsResource.getRecentTrades(assetIds, assetIds, 1, 1, true));
|
||||
}
|
||||
|
||||
}
|
44
src/test/java/org/qora/test/api/BlockApiTests.java
Normal file
44
src/test/java/org/qora/test/api/BlockApiTests.java
Normal file
@@ -0,0 +1,44 @@
|
||||
package org.qora.test.api;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.qora.api.resource.BlocksResource;
|
||||
import org.qora.test.common.ApiCommon;
|
||||
|
||||
public class BlockApiTests extends ApiCommon {
|
||||
|
||||
private BlocksResource blocksResource;
|
||||
|
||||
@Before
|
||||
public void buildResource() {
|
||||
this.blocksResource = (BlocksResource) ApiCommon.buildResource(BlocksResource.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
assertNotNull(this.blocksResource);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetBlockForgers() {
|
||||
List<String> addresses = Arrays.asList(aliceAddress, aliceAddress);
|
||||
|
||||
assertNotNull(this.blocksResource.getBlockForgers(Collections.emptyList(), null, null, null));
|
||||
assertNotNull(this.blocksResource.getBlockForgers(addresses, null, null, null));
|
||||
assertNotNull(this.blocksResource.getBlockForgers(Collections.emptyList(), 1, 1, true));
|
||||
assertNotNull(this.blocksResource.getBlockForgers(addresses, 1, 1, true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetBlocksByForger() {
|
||||
assertNotNull(this.blocksResource.getBlocksByForger(aliceAddress, null, null, null));
|
||||
assertNotNull(this.blocksResource.getBlocksByForger(aliceAddress, 1, 1, true));
|
||||
}
|
||||
|
||||
}
|
73
src/test/java/org/qora/test/api/GroupApiTests.java
Normal file
73
src/test/java/org/qora/test/api/GroupApiTests.java
Normal file
@@ -0,0 +1,73 @@
|
||||
package org.qora.test.api;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.qora.api.resource.GroupsResource;
|
||||
import org.qora.test.common.ApiCommon;
|
||||
|
||||
public class GroupApiTests extends ApiCommon {
|
||||
|
||||
private GroupsResource groupsResource;
|
||||
|
||||
@Before
|
||||
public void buildResource() {
|
||||
this.groupsResource = (GroupsResource) ApiCommon.buildResource(GroupsResource.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
assertNotNull(this.groupsResource);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAllGroups() {
|
||||
assertNotNull(this.groupsResource.getAllGroups(null, null, null));
|
||||
assertNotNull(this.groupsResource.getAllGroups(1, 1, true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetBans() {
|
||||
assertNotNull(this.groupsResource.getBans(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetGroup() {
|
||||
for (Boolean onlyAdmins : ALL_BOOLEAN_VALUES) {
|
||||
assertNotNull(this.groupsResource.getGroup(1, onlyAdmins, null, null, null));
|
||||
assertNotNull(this.groupsResource.getGroup(1, onlyAdmins, 1, 1, true));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetGroupData() {
|
||||
assertNotNull(this.groupsResource.getGroupData(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetGroupsByOwner() {
|
||||
assertNotNull(this.groupsResource.getGroupsByOwner(aliceAddress));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetGroupsWithMember() {
|
||||
assertNotNull(this.groupsResource.getGroupsWithMember(aliceAddress));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetInvitesByGroupId() {
|
||||
assertNotNull(this.groupsResource.getInvitesByGroupId(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetInvitesByInvitee() {
|
||||
assertNotNull(this.groupsResource.getInvitesByInvitee(aliceAddress));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetJoinRequests() {
|
||||
assertNotNull(this.groupsResource.getJoinRequests(1));
|
||||
}
|
||||
|
||||
}
|
63
src/test/java/org/qora/test/api/TransactionsApiTests.java
Normal file
63
src/test/java/org/qora/test/api/TransactionsApiTests.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package org.qora.test.api;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.qora.api.resource.TransactionsResource;
|
||||
import org.qora.api.resource.TransactionsResource.ConfirmationStatus;
|
||||
import org.qora.test.common.ApiCommon;
|
||||
import org.qora.transaction.Transaction.TransactionType;
|
||||
|
||||
public class TransactionsApiTests extends ApiCommon {
|
||||
|
||||
private TransactionsResource transactionsResource;
|
||||
|
||||
@Before
|
||||
public void buildResource() {
|
||||
this.transactionsResource = (TransactionsResource) ApiCommon.buildResource(TransactionsResource.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
assertNotNull(this.transactionsResource);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPendingTransactions() {
|
||||
for (Integer txGroupId : Arrays.asList(null, 0, 1)) {
|
||||
assertNotNull(this.transactionsResource.getPendingTransactions(txGroupId, null, null, null));
|
||||
assertNotNull(this.transactionsResource.getPendingTransactions(txGroupId, 1, 1, true));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetUnconfirmedTransactions() {
|
||||
assertNotNull(this.transactionsResource.getUnconfirmedTransactions(null, null, null));
|
||||
assertNotNull(this.transactionsResource.getUnconfirmedTransactions(1, 1, true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSearchTransactions() {
|
||||
List<TransactionType> txTypes = Arrays.asList(TransactionType.PAYMENT, TransactionType.ISSUE_ASSET);
|
||||
|
||||
for (Integer startBlock : Arrays.asList(null, 1))
|
||||
for (Integer blockLimit : Arrays.asList(null, 1))
|
||||
for (Integer txGroupId : Arrays.asList(null, 1))
|
||||
for (String address : Arrays.asList(null, aliceAddress))
|
||||
for (ConfirmationStatus confirmationStatus : ConfirmationStatus.values()) {
|
||||
if (confirmationStatus != ConfirmationStatus.CONFIRMED) {
|
||||
startBlock = null;
|
||||
blockLimit = null;
|
||||
}
|
||||
|
||||
assertNotNull(this.transactionsResource.searchTransactions(startBlock, blockLimit, txGroupId, txTypes, address, confirmationStatus, null, null, null));
|
||||
assertNotNull(this.transactionsResource.searchTransactions(startBlock, blockLimit, txGroupId, txTypes, address, confirmationStatus, 1, 1, true));
|
||||
assertNotNull(this.transactionsResource.searchTransactions(startBlock, blockLimit, txGroupId, null, address, confirmationStatus, 1, 1, true));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
49
src/test/java/org/qora/test/common/ApiCommon.java
Normal file
49
src/test/java/org/qora/test/common/ApiCommon.java
Normal file
@@ -0,0 +1,49 @@
|
||||
package org.qora.test.common;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import org.eclipse.jetty.server.Request;
|
||||
import org.junit.Before;
|
||||
import org.qora.repository.DataException;
|
||||
|
||||
public class ApiCommon extends Common {
|
||||
|
||||
public static final Boolean[] ALL_BOOLEAN_VALUES = new Boolean[] { null, true, false };
|
||||
public static final Boolean[] TF_BOOLEAN_VALUES = new Boolean[] { true, false };
|
||||
|
||||
public static class FakeRequest extends Request {
|
||||
public FakeRequest() {
|
||||
super(null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRemoteAddr() {
|
||||
return "127.0.0.1";
|
||||
}
|
||||
}
|
||||
private static final FakeRequest FAKE_REQUEST = new FakeRequest();
|
||||
|
||||
public String aliceAddress;
|
||||
|
||||
@Before
|
||||
public void beforeTests() throws DataException {
|
||||
Common.useDefaultSettings();
|
||||
|
||||
this.aliceAddress = Common.getTestAccount(null, "alice").getAddress();
|
||||
}
|
||||
|
||||
public static Object buildResource(Class<?> resourceClass) {
|
||||
try {
|
||||
Object resource = resourceClass.newInstance();
|
||||
|
||||
Field requestField = resourceClass.getDeclaredField("request");
|
||||
requestField.setAccessible(true);
|
||||
requestField.set(resource, FAKE_REQUEST);
|
||||
|
||||
return resource;
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to build API resource " + resourceClass.getName() + ": " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -110,7 +110,7 @@ public class Common {
|
||||
// Build snapshot of initial state in case we want to compare with post-test orphaning
|
||||
initialAssets = repository.getAssetRepository().getAllAssets();
|
||||
initialGroups = repository.getGroupRepository().getAllGroups();
|
||||
initialBalances = repository.getAccountRepository().getAssetBalances(Collections.emptyList(), Collections.emptyList(), BalanceOrdering.ASSET_ACCOUNT, null, null, null);
|
||||
initialBalances = repository.getAccountRepository().getAssetBalances(Collections.emptyList(), Collections.emptyList(), BalanceOrdering.ASSET_ACCOUNT, false, null, null, null);
|
||||
|
||||
// Check that each test account can fetch their last reference
|
||||
for (TestAccount testAccount : getTestAccounts(repository))
|
||||
@@ -137,7 +137,7 @@ public class Common {
|
||||
List<GroupData> remainingGroups = repository.getGroupRepository().getAllGroups();
|
||||
checkOrphanedLists("group", initialGroups, remainingGroups, GroupData::getGroupId);
|
||||
|
||||
List<AccountBalanceData> remainingBalances = repository.getAccountRepository().getAssetBalances(Collections.emptyList(), Collections.emptyList(), BalanceOrdering.ASSET_ACCOUNT, null, null, null);
|
||||
List<AccountBalanceData> remainingBalances = repository.getAccountRepository().getAssetBalances(Collections.emptyList(), Collections.emptyList(), BalanceOrdering.ASSET_ACCOUNT, false, null, null, null);
|
||||
checkOrphanedLists("account balance", initialBalances, remainingBalances, entry -> entry.getAssetName() + "-" + entry.getAddress());
|
||||
|
||||
assertEquals("remainingBalances is different size", initialBalances.size(), remainingBalances.size());
|
||||
|
Reference in New Issue
Block a user