From 9f19a042e6f816b415fc383658f3e1ce9ebfc7da Mon Sep 17 00:00:00 2001 From: CalDescent Date: Mon, 30 May 2022 13:46:00 +0200 Subject: [PATCH] Added test to ensure short (1 byte) references can be imported. --- .../test/TransactionReferenceTests.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/test/java/org/qortal/test/TransactionReferenceTests.java b/src/test/java/org/qortal/test/TransactionReferenceTests.java index 41124649..32a8da82 100644 --- a/src/test/java/org/qortal/test/TransactionReferenceTests.java +++ b/src/test/java/org/qortal/test/TransactionReferenceTests.java @@ -106,4 +106,33 @@ public class TransactionReferenceTests extends Common { } } + @Test + public void testShortReferenceAfterFeatureTrigger() throws DataException { + Common.useSettings("test-settings-v2-disable-reference.json"); + Random random = new Random(); + + try (final Repository repository = RepositoryManager.getRepository()) { + PrivateKeyAccount alice = Common.getTestAccount(repository, "alice"); + + byte[] randomPrivateKey = new byte[32]; + random.nextBytes(randomPrivateKey); + PrivateKeyAccount recipient = new PrivateKeyAccount(repository, randomPrivateKey); + + // Create payment transaction data + TransactionData paymentTransactionData = new PaymentTransactionData(TestTransaction.generateBase(alice), recipient.getAddress(), 100000L); + + // Set a 1-byte reference + byte[] randomByte = new byte[1]; + random.nextBytes(randomByte); + paymentTransactionData.setReference(randomByte); + + Transaction paymentTransaction = Transaction.fromData(repository, paymentTransactionData); + + // Transaction should be valid, as any non-null value is allowed + Transaction.ValidationResult validationResult = paymentTransaction.isValidUnconfirmed(); + assertEquals(Transaction.ValidationResult.OK, validationResult); + TransactionUtils.signAndImportValid(repository, paymentTransactionData, alice); + } + } + }