Browse Source

Added naming tests for blank new names

block-minter-updates
CalDescent 3 years ago
parent
commit
756d5e685a
  1. 2
      src/main/java/org/qortal/controller/repository/NamesDatabaseIntegrityCheck.java
  2. 59
      src/test/java/org/qortal/test/naming/IntegrityTests.java

2
src/main/java/org/qortal/controller/repository/NamesDatabaseIntegrityCheck.java

@ -319,7 +319,7 @@ public class NamesDatabaseIntegrityCheck {
this.nameTransactions = nameTransactions;
}
private List<TransactionData> fetchAllTransactionsInvolvingName(String name, Repository repository) throws DataException {
public List<TransactionData> fetchAllTransactionsInvolvingName(String name, Repository repository) throws DataException {
List<TransactionData> transactions = new ArrayList<>();
String reducedName = Unicode.sanitize(name);

59
src/test/java/org/qortal/test/naming/IntegrityTests.java

@ -13,6 +13,8 @@ import org.qortal.test.common.TransactionUtils;
import org.qortal.test.common.transaction.TestTransaction;
import org.qortal.transaction.Transaction;
import java.util.List;
import static org.junit.Assert.*;
public class IntegrityTests extends Common {
@ -45,6 +47,63 @@ public class IntegrityTests extends Common {
}
}
@Test
public void testBlankReducedName() throws DataException {
try (final Repository repository = RepositoryManager.getRepository()) {
// Register-name
PrivateKeyAccount alice = Common.getTestAccount(repository, "alice");
String name = "\uD83E\uDD73"; // Translates to a reducedName of ""
String data = "\uD83E\uDD73";
RegisterNameTransactionData transactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), name, data);
TransactionUtils.signAndMint(repository, transactionData, alice);
// Ensure the name exists and the data is correct
assertEquals(data, repository.getNameRepository().fromName(name).getData());
// Ensure the reducedName is blank
assertEquals("", repository.getNameRepository().fromName(name).getReducedName());
// Run the database integrity check for this name
NamesDatabaseIntegrityCheck integrityCheck = new NamesDatabaseIntegrityCheck();
assertEquals(1, integrityCheck.rebuildName(name, repository));
// Ensure the name still exists and the data is still correct
assertEquals(data, repository.getNameRepository().fromName(name).getData());
assertEquals("", repository.getNameRepository().fromName(name).getReducedName());
}
}
@Test
public void testUpdateWithBlankNewName() throws DataException {
try (final Repository repository = RepositoryManager.getRepository()) {
// Register-name to Alice
PrivateKeyAccount alice = Common.getTestAccount(repository, "alice");
String name = "initial_name";
String data = "initial_data";
RegisterNameTransactionData transactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), name, data);
TransactionUtils.signAndMint(repository, transactionData, alice);
// Update the name, but keep the new name blank
String newName = "";
String newData = "updated_data";
UpdateNameTransactionData updateTransactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), name, newName, newData);
TransactionUtils.signAndMint(repository, updateTransactionData, alice);
// Ensure the original name exists and the data is correct
assertEquals(name, repository.getNameRepository().fromName(name).getName());
assertEquals(newData, repository.getNameRepository().fromName(name).getData());
// Run the database integrity check for this name
NamesDatabaseIntegrityCheck integrityCheck = new NamesDatabaseIntegrityCheck();
assertEquals(2, integrityCheck.rebuildName(name, repository));
// Ensure the name still exists and the data is still correct
assertEquals(name, repository.getNameRepository().fromName(name).getName());
assertEquals(newData, repository.getNameRepository().fromName(name).getData());
}
}
@Test
public void testMissingName() throws DataException {
try (final Repository repository = RepositoryManager.getRepository()) {

Loading…
Cancel
Save