From d600a54034a9dd20e92fe5472168efce581cd658 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Tue, 14 Sep 2021 20:34:42 +0100 Subject: [PATCH] Modified name update tests to check the reduced name. --- .../org/qortal/test/naming/UpdateTests.java | 122 +++++++++++++++++- 1 file changed, 120 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/qortal/test/naming/UpdateTests.java b/src/test/java/org/qortal/test/naming/UpdateTests.java index 134d3358..a13b3138 100644 --- a/src/test/java/org/qortal/test/naming/UpdateTests.java +++ b/src/test/java/org/qortal/test/naming/UpdateTests.java @@ -5,6 +5,7 @@ import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import org.qortal.account.PrivateKeyAccount; +import org.qortal.data.naming.NameData; import org.qortal.data.transaction.RegisterNameTransactionData; import org.qortal.data.transaction.TransactionData; import org.qortal.data.transaction.UpdateNameTransactionData; @@ -29,12 +30,21 @@ public class UpdateTests extends Common { // Register-name PrivateKeyAccount alice = Common.getTestAccount(repository, "alice"); String initialName = "initial-name"; + String initialReducedName = "initia1-name"; String initialData = "{\"age\":30}"; TransactionData initialTransactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), initialName, initialData); TransactionUtils.signAndMint(repository, initialTransactionData, alice); + // Check name, reduced name, and data exist + assertTrue(repository.getNameRepository().nameExists(initialName)); + NameData nameData = repository.getNameRepository().fromName(initialName); + assertEquals("initia1-name", nameData.getReducedName()); + assertEquals(initialData, nameData.getData()); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); + String newName = "new-name"; + String newReducedName = "new-name"; String newData = ""; TransactionData updateTransactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), initialName, newName, newData); TransactionUtils.signAndMint(repository, updateTransactionData, alice); @@ -42,20 +52,37 @@ public class UpdateTests extends Common { // Check old name no longer exists assertFalse(repository.getNameRepository().nameExists(initialName)); + // Check reduced name no longer exists + assertNull(repository.getNameRepository().fromReducedName(initialReducedName)); + // Check new name exists assertTrue(repository.getNameRepository().nameExists(newName)); + // Check reduced name and data are correct for new name + NameData newNameData = repository.getNameRepository().fromName(newReducedName); + assertEquals(newReducedName, newNameData.getReducedName()); + // Data should remain the same because it was empty in the UpdateNameTransactionData + assertEquals(initialData, newNameData.getData()); + // Check updated timestamp is correct assertEquals((Long) updateTransactionData.getTimestamp(), repository.getNameRepository().fromName(newName).getUpdated()); // orphan and recheck BlockUtils.orphanLastBlock(repository); - // Check new name no longer exists + // Check new name and reduced name no longer exist assertFalse(repository.getNameRepository().nameExists(newName)); + assertNull(repository.getNameRepository().fromReducedName(newReducedName)); - // Check old name exists again + // Check old name and reduced name exist again assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); + + // Check data and reduced name are still present for this name + assertTrue(repository.getNameRepository().nameExists(initialName)); + nameData = repository.getNameRepository().fromName(initialName); + assertEquals(initialReducedName, nameData.getReducedName()); + assertEquals(initialData, nameData.getData()); // Check updated timestamp is empty assertNull(repository.getNameRepository().fromName(initialName).getUpdated()); @@ -70,9 +97,15 @@ public class UpdateTests extends Common { String initialName = "initial-name"; String initialData = "{\"age\":30}"; + String constantReducedName = "initia1-name"; + TransactionData initialTransactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), initialName, initialData); TransactionUtils.signAndMint(repository, initialTransactionData, alice); + // Check initial name exists + assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(constantReducedName)); + String newName = "Initial-Name"; String newData = ""; TransactionData updateTransactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), initialName, newName, newData); @@ -83,6 +116,7 @@ public class UpdateTests extends Common { // Check new name exists assertTrue(repository.getNameRepository().nameExists(newName)); + assertNotNull(repository.getNameRepository().fromReducedName(constantReducedName)); // Check updated timestamp is correct assertEquals((Long) updateTransactionData.getTimestamp(), repository.getNameRepository().fromName(newName).getUpdated()); @@ -95,6 +129,7 @@ public class UpdateTests extends Common { // Check old name exists again assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(constantReducedName)); // Check updated timestamp is empty assertNull(repository.getNameRepository().fromName(initialName).getUpdated()); @@ -108,32 +143,43 @@ public class UpdateTests extends Common { // Register-name PrivateKeyAccount alice = Common.getTestAccount(repository, "alice"); String initialName = "initial-name"; + String initialReducedName = "initia1-name"; String initialData = "{\"age\":30}"; TransactionData initialTransactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), initialName, initialData); TransactionUtils.signAndMint(repository, initialTransactionData, alice); + // Check initial name exists + assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); + String middleName = "middle-name"; + String middleReducedName = "midd1e-name"; String middleData = ""; TransactionData middleTransactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), initialName, middleName, middleData); TransactionUtils.signAndMint(repository, middleTransactionData, alice); // Check old name no longer exists assertFalse(repository.getNameRepository().nameExists(initialName)); + assertNull(repository.getNameRepository().fromReducedName(initialReducedName)); // Check new name exists assertTrue(repository.getNameRepository().nameExists(middleName)); + assertNotNull(repository.getNameRepository().fromReducedName(middleReducedName)); String newestName = "newest-name"; + String newestReducedName = "newest-name"; String newestData = "newest-data"; TransactionData newestTransactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), middleName, newestName, newestData); TransactionUtils.signAndMint(repository, newestTransactionData, alice); // Check previous name no longer exists assertFalse(repository.getNameRepository().nameExists(middleName)); + assertNull(repository.getNameRepository().fromReducedName(middleReducedName)); // Check newest name exists assertTrue(repository.getNameRepository().nameExists(newestName)); + assertNotNull(repository.getNameRepository().fromReducedName(newestReducedName)); // Check updated timestamp is correct assertEquals((Long) newestTransactionData.getTimestamp(), repository.getNameRepository().fromName(newestName).getUpdated()); @@ -143,9 +189,11 @@ public class UpdateTests extends Common { // Check newest name no longer exists assertFalse(repository.getNameRepository().nameExists(newestName)); + assertNull(repository.getNameRepository().fromReducedName(newestReducedName)); // Check previous name exists again assertTrue(repository.getNameRepository().nameExists(middleName)); + assertNotNull(repository.getNameRepository().fromReducedName(middleReducedName)); // Check updated timestamp is correct assertEquals((Long) middleTransactionData.getTimestamp(), repository.getNameRepository().fromName(middleName).getUpdated()); @@ -155,9 +203,11 @@ public class UpdateTests extends Common { // Check new name no longer exists assertFalse(repository.getNameRepository().nameExists(middleName)); + assertNull(repository.getNameRepository().fromReducedName(middleReducedName)); // Check original name exists again assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); // Check updated timestamp is empty assertNull(repository.getNameRepository().fromName(initialName).getUpdated()); @@ -171,11 +221,16 @@ public class UpdateTests extends Common { // Register-name PrivateKeyAccount alice = Common.getTestAccount(repository, "alice"); String initialName = "initial-name"; + String initialReducedName = "initia1-name"; String initialData = "{\"age\":30}"; TransactionData transactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), initialName, initialData); TransactionUtils.signAndMint(repository, transactionData, alice); + // Check initial name exists + assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); + // Don't update name, but update data. // This tests whether reverting a future update/sale can find the correct previous name String middleName = ""; @@ -185,29 +240,35 @@ public class UpdateTests extends Common { // Check old name still exists assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); String newestName = "newest-name"; + String newestReducedName = "newest-name"; String newestData = "newest-data"; transactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), initialName, newestName, newestData); TransactionUtils.signAndMint(repository, transactionData, alice); // Check previous name no longer exists assertFalse(repository.getNameRepository().nameExists(initialName)); + assertNull(repository.getNameRepository().fromReducedName(initialReducedName)); // Check newest name exists assertTrue(repository.getNameRepository().nameExists(newestName)); + assertNotNull(repository.getNameRepository().fromReducedName(newestReducedName)); // orphan and recheck BlockUtils.orphanLastBlock(repository); // Check original name exists again assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); // orphan and recheck BlockUtils.orphanLastBlock(repository); // Check original name still exists assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); } } @@ -217,11 +278,16 @@ public class UpdateTests extends Common { // Register-name PrivateKeyAccount alice = Common.getTestAccount(repository, "alice"); String initialName = "initial-name"; + String initialReducedName = "initia1-name"; String initialData = "{\"age\":30}"; TransactionData transactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), initialName, initialData); TransactionUtils.signAndMint(repository, transactionData, alice); + // Check initial name exists + assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); + String newName = ""; String newData = "new-data"; transactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), initialName, newName, newData); @@ -229,6 +295,7 @@ public class UpdateTests extends Common { // Check name still exists assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); // Check data is correct assertEquals(newData, repository.getNameRepository().fromName(initialName).getData()); @@ -238,6 +305,7 @@ public class UpdateTests extends Common { // Check name still exists assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); // Check old data restored assertEquals(initialData, repository.getNameRepository().fromName(initialName).getData()); @@ -251,13 +319,19 @@ public class UpdateTests extends Common { // Register-name PrivateKeyAccount alice = Common.getTestAccount(repository, "alice"); String initialName = "initial-name"; + String initialReducedName = "initia1-name"; String initialData = "{\"age\":30}"; TransactionData transactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), initialName, initialData); TransactionUtils.signAndMint(repository, transactionData, alice); + // Check initial name exists + assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); + // Update data String middleName = "middle-name"; + String middleReducedName = "midd1e-name"; String middleData = "middle-data"; transactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), initialName, middleName, middleData); TransactionUtils.signAndMint(repository, transactionData, alice); @@ -266,6 +340,7 @@ public class UpdateTests extends Common { assertEquals(middleData, repository.getNameRepository().fromName(middleName).getData()); String newestName = "newest-name"; + String newestReducedName = "newest-name"; String newestData = "newest-data"; transactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), middleName, newestName, newestData); TransactionUtils.signAndMint(repository, transactionData, alice); @@ -273,6 +348,14 @@ public class UpdateTests extends Common { // Check data is correct assertEquals(newestData, repository.getNameRepository().fromName(newestName).getData()); + // Check initial name no longer exists + assertFalse(repository.getNameRepository().nameExists(initialName)); + assertNull(repository.getNameRepository().fromReducedName(initialReducedName)); + + // Check newest name exists + assertTrue(repository.getNameRepository().nameExists(newestName)); + assertNotNull(repository.getNameRepository().fromReducedName(newestReducedName)); + // orphan and recheck BlockUtils.orphanLastBlock(repository); @@ -284,6 +367,10 @@ public class UpdateTests extends Common { // Check data is correct assertEquals(initialData, repository.getNameRepository().fromName(initialName).getData()); + + // Check initial name exists again + assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); } } @@ -294,38 +381,69 @@ public class UpdateTests extends Common { // Register-name PrivateKeyAccount alice = Common.getTestAccount(repository, "alice"); String initialName = "initial-name"; + String initialReducedName = "initia1-name"; String initialData = "{\"age\":30}"; TransactionData transactionData = new RegisterNameTransactionData(TestTransaction.generateBase(alice), initialName, initialData); TransactionUtils.signAndMint(repository, transactionData, alice); + // Check initial name exists + assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); + // Don't update data, but update name. // This tests whether reverting a future update/sale can find the correct previous data String middleName = "middle-name"; + String middleReducedName = "midd1e-name"; String middleData = ""; transactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), initialName, middleName, middleData); TransactionUtils.signAndMint(repository, transactionData, alice); + // Check original name no longer exists + assertFalse(repository.getNameRepository().nameExists(initialName)); + assertNull(repository.getNameRepository().fromReducedName(initialReducedName)); + + // Check middle name exists + assertTrue(repository.getNameRepository().nameExists(middleName)); + assertNotNull(repository.getNameRepository().fromReducedName(middleReducedName)); + // Check data is correct assertEquals(initialData, repository.getNameRepository().fromName(middleName).getData()); String newestName = "newest-name"; + String newestReducedName = "newest-name"; String newestData = "newest-data"; transactionData = new UpdateNameTransactionData(TestTransaction.generateBase(alice), middleName, newestName, newestData); TransactionUtils.signAndMint(repository, transactionData, alice); + // Check middle name no longer exists + assertFalse(repository.getNameRepository().nameExists(middleName)); + assertNull(repository.getNameRepository().fromReducedName(middleReducedName)); + + // Check newest name exists + assertTrue(repository.getNameRepository().nameExists(newestName)); + assertNotNull(repository.getNameRepository().fromReducedName(newestReducedName)); + // Check data is correct assertEquals(newestData, repository.getNameRepository().fromName(newestName).getData()); // orphan and recheck BlockUtils.orphanLastBlock(repository); + // Check middle name exists + assertTrue(repository.getNameRepository().nameExists(middleName)); + assertNotNull(repository.getNameRepository().fromReducedName(middleReducedName)); + // Check data is correct assertEquals(initialData, repository.getNameRepository().fromName(middleName).getData()); // orphan and recheck BlockUtils.orphanLastBlock(repository); + // Check initial name exists + assertTrue(repository.getNameRepository().nameExists(initialName)); + assertNotNull(repository.getNameRepository().fromReducedName(initialReducedName)); + // Check data is correct assertEquals(initialData, repository.getNameRepository().fromName(initialName).getData()); }