forked from Qortal/qortal
CalDescent
3 years ago
6 changed files with 122 additions and 0 deletions
@ -0,0 +1,89 @@
|
||||
package org.qortal.test.arbitrary; |
||||
|
||||
import org.junit.Before; |
||||
import org.junit.Test; |
||||
import org.qortal.account.PrivateKeyAccount; |
||||
import org.qortal.arbitrary.ArbitraryDataDigest; |
||||
import org.qortal.arbitrary.ArbitraryDataFile.*; |
||||
import org.qortal.arbitrary.ArbitraryDataReader; |
||||
import org.qortal.arbitrary.ArbitraryDataTransactionBuilder; |
||||
import org.qortal.arbitrary.metadata.ArbitraryDataMetadataPatch; |
||||
import org.qortal.data.transaction.ArbitraryTransactionData; |
||||
import org.qortal.data.transaction.ArbitraryTransactionData.*; |
||||
import org.qortal.repository.DataException; |
||||
import org.qortal.repository.Repository; |
||||
import org.qortal.repository.RepositoryManager; |
||||
import org.qortal.test.common.BlockUtils; |
||||
import org.qortal.test.common.Common; |
||||
import org.qortal.test.common.TransactionUtils; |
||||
import org.qortal.transaction.Transaction; |
||||
import org.qortal.utils.Base58; |
||||
|
||||
import java.io.IOException; |
||||
import java.nio.file.Files; |
||||
import java.nio.file.Path; |
||||
import java.nio.file.Paths; |
||||
|
||||
import static org.junit.Assert.*; |
||||
|
||||
public class ArbitraryDataTests extends Common { |
||||
|
||||
@Before |
||||
public void beforeTest() throws DataException { |
||||
Common.useDefaultSettings(); |
||||
} |
||||
|
||||
@Test |
||||
public void testCombineMultipleLayers() throws DataException, IOException { |
||||
try (final Repository repository = RepositoryManager.getRepository()) { |
||||
PrivateKeyAccount alice = Common.getTestAccount(repository, "alice"); |
||||
String publicKey58 = Base58.encode(alice.getPublicKey()); |
||||
String name = "TEST"; |
||||
Service service = Service.WEBSITE; |
||||
|
||||
// Create PUT transaction
|
||||
Path path1 = Paths.get("src/test/resources/arbitrary/demo1"); |
||||
this.createAndMintTxn(repository, publicKey58, path1, name, Method.PUT, service, alice); |
||||
|
||||
// Create PATCH transaction
|
||||
Path path2 = Paths.get("src/test/resources/arbitrary/demo2"); |
||||
this.createAndMintTxn(repository, publicKey58, path2, name, Method.PATCH, service, alice); |
||||
|
||||
// Create another PATCH transaction
|
||||
Path path3 = Paths.get("src/test/resources/arbitrary/demo3"); |
||||
this.createAndMintTxn(repository, publicKey58, path3, name, Method.PATCH, service, alice); |
||||
|
||||
// Now build the latest data state for this name
|
||||
ArbitraryDataReader arbitraryDataReader = new ArbitraryDataReader(name, ResourceIdType.NAME, service); |
||||
arbitraryDataReader.loadSynchronously(true); |
||||
Path finalPath = arbitraryDataReader.getFilePath(); |
||||
|
||||
// Ensure it exists
|
||||
assertTrue(Files.exists(finalPath)); |
||||
|
||||
// Its directory hash should match the hash of demo3
|
||||
ArbitraryDataDigest path3Digest = new ArbitraryDataDigest(path3); |
||||
path3Digest.compute(); |
||||
ArbitraryDataDigest finalPathDigest = new ArbitraryDataDigest(finalPath); |
||||
finalPathDigest.compute(); |
||||
assertEquals(path3Digest.getHash58(), finalPathDigest.getHash58()); |
||||
|
||||
// .. and its directory hash should also match the one included in the metadata
|
||||
ArbitraryDataMetadataPatch patchMetadata = new ArbitraryDataMetadataPatch(finalPath); |
||||
patchMetadata.read(); |
||||
assertArrayEquals(patchMetadata.getCurrentHash(), path3Digest.getHash()); |
||||
|
||||
} |
||||
} |
||||
|
||||
private void createAndMintTxn(Repository repository, String publicKey58, Path path, String name, |
||||
Method method, Service service, PrivateKeyAccount account) throws DataException { |
||||
|
||||
ArbitraryDataTransactionBuilder txnBuilder = new ArbitraryDataTransactionBuilder(publicKey58, path, name, method, service); |
||||
ArbitraryTransactionData transactionData = txnBuilder.build(); |
||||
Transaction.ValidationResult result = TransactionUtils.signAndImport(repository, transactionData, account); |
||||
assertEquals(Transaction.ValidationResult.OK, result); |
||||
BlockUtils.mintBlock(repository); |
||||
} |
||||
|
||||
} |
@ -0,0 +1 @@
|
||||
Pellentesque laoreet laoreet dui ut volutpat. Sentence modified. |
@ -0,0 +1,11 @@
|
||||
Pellentesque mollis risus laoreet neque lobortis, ut euismod nisl gravida. |
||||
Nullam sit amet scelerisque sapien, id aliquet elit. Suspendisse eu |
||||
accumsan eros. Nullam non nunc ut risus facilisis posuere sed sed ipsum. |
||||
Pellentesque habitant morbi tristique senectus et netus et malesuada fames |
||||
ac turpis egestas. Nullam magna felis; vehicula a accumsan luctus, vulputate |
||||
vitae justo. Integer mollis lacus eu nisi iaculis, ac ultrices sem aliquam. |
||||
Sed ac lacus eget nibh posuere sodales. Phasellus sodales, augue ac |
||||
tincidunt scelerisque, mi erat Varius mauris, sed blandit ex nisl ut |
||||
justo. Etiam ac nisl venenatis, malesuada odio vitae, blandit velit. |
||||
Phasellus congue leo a porttitor hendrerit. |
||||
Line modified. |
@ -0,0 +1,10 @@
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. |
||||
Ut ligula felis, imperdiet nec placerat at, placerat |
||||
quis diam. Praesent a ultricies lacus. |
||||
Aenean luctus blandit dui. Quisque vel augue |
||||
diam. Nulla libero libero; condimentum sed |
||||
accumsan eu, elementum sit amet turpis. |
||||
In semper risus ac libero lobortis, |
||||
ut consectetur urna euismod! |
||||
Donec ut erat quis mi eleifend tincidunt |
||||
aliquet vitae lacus. |
@ -0,0 +1,10 @@
|
||||
Quisque viverra neque |
||||
quis eros dapibus |
||||
Quisque viverra neque |
||||
quis eros dapibus |
||||
Quisque viverra neque |
||||
quis eros dapibus |
||||
Quisque viverra neque |
||||
quis eros dapibus |
||||
Quisque viverra neque |
||||
quis eros dapibus |
Loading…
Reference in new issue