use of io.nem.symbol.sdk.api.RepositoryFactory in project nem2-sdk-java by nemtech.
the class AccountMetadataServiceIntegrationTest method setAndUpdateAccountMetadata.
@ParameterizedTest
@EnumSource(RepositoryType.class)
void setAndUpdateAccountMetadata(RepositoryType type) {
BigInteger key = BigInteger.valueOf(RandomUtils.generateRandomInt(100000));
String originalMessage = "The original message";
String newMessage = "The new Message";
RepositoryFactory repositoryFactory = getRepositoryFactory(type);
MetadataRepository metadataRepository = repositoryFactory.createMetadataRepository();
MetadataTransactionService service = new MetadataTransactionServiceImpl(repositoryFactory);
AccountMetadataTransaction originalTransaction = get(service.createAccountMetadataTransactionFactory(targetAccount.getAddress(), key, originalMessage, signerAccount.getAddress())).maxFee(maxFee).build();
announceAggregateAndValidate(type, originalTransaction, signerAccount);
sleep(1000);
assertMetadata(key, originalMessage, metadataRepository);
AccountMetadataTransaction updateTransaction = get(service.createAccountMetadataTransactionFactory(targetAccount.getAddress(), key, newMessage, signerAccount.getAddress())).maxFee(maxFee).build();
announceAggregateAndValidate(type, updateTransaction, signerAccount);
sleep(1000);
assertMetadata(key, newMessage, metadataRepository);
}
use of io.nem.symbol.sdk.api.RepositoryFactory in project nem2-sdk-java by nemtech.
the class RepositoryFactoryVertxImplTest method shouldCreateRepositories.
@Test
public void shouldCreateRepositories() {
String baseUrl = "https://nem.com:3000/path";
RepositoryFactory factory = new RepositoryFactoryVertxImpl(baseUrl);
Assertions.assertNotNull(factory.createAccountRepository());
Assertions.assertNotNull(factory.createBlockRepository());
Assertions.assertNotNull(factory.createReceiptRepository());
Assertions.assertNotNull(factory.createChainRepository());
Assertions.assertNotNull(factory.createListener());
Assertions.assertNotNull(factory.createMosaicRepository());
Assertions.assertNotNull(factory.createNamespaceRepository());
Assertions.assertNotNull(factory.createNetworkRepository());
Assertions.assertNotNull(factory.createNodeRepository());
Assertions.assertNotNull(factory.createTransactionRepository());
Assertions.assertNotNull(factory.createTransactionStatusRepository());
Assertions.assertNotNull(factory.createMetadataRepository());
Assertions.assertNotNull(factory.createRestrictionAccountRepository());
Assertions.assertNotNull(factory.createRestrictionMosaicRepository());
Assertions.assertNotNull(factory.createHashLockRepository());
Assertions.assertNotNull(factory.createSecretLockRepository());
Assertions.assertNotNull(factory.createMultisigRepository());
Assertions.assertNotNull(factory.createFinalizationRepository());
Assertions.assertNotNull(factory.createJsonSerialization());
factory.close();
factory.close();
factory.close();
}
use of io.nem.symbol.sdk.api.RepositoryFactory in project nem2-sdk-java by nemtech.
the class RepositoryFactoryVertxImplTest method getRestProvidedNetworkCurrencies.
@Test
public void getRestProvidedNetworkCurrencies() throws Exception {
String baseUrl = "https://localhost:1934/path";
RepositoryFactoryConfiguration configuration = new RepositoryFactoryConfiguration(baseUrl);
configuration.withGenerationHash("abc");
configuration.withNetworkType(NetworkType.MAIN_NET);
RepositoryFactory factory = new RepositoryFactoryVertxImpl(configuration) {
@Override
protected Observable<NetworkCurrencies> loadNetworkCurrencies() {
return Observable.just(new NetworkCurrencies(Currency.CAT_CURRENCY, Currency.CAT_HARVEST));
}
};
Assertions.assertEquals(configuration.getNetworkType(), factory.getNetworkType().toFuture().get());
Assertions.assertEquals(configuration.getGenerationHash(), factory.getGenerationHash().toFuture().get());
Assertions.assertEquals(Currency.CAT_HARVEST, factory.getHarvestCurrency().toFuture().get());
Assertions.assertEquals(Currency.CAT_CURRENCY, factory.getNetworkCurrency().toFuture().get());
}
use of io.nem.symbol.sdk.api.RepositoryFactory in project nem2-sdk-java by nemtech.
the class MosaicMetadataServiceIntegrationTest method setAndUpdateMosaicMetadata.
@ParameterizedTest
@EnumSource(RepositoryType.class)
void setAndUpdateMosaicMetadata(RepositoryType type) {
// TODO FIX THIS ONE when target != signerAccount
Account signerAccount = config().getDefaultAccount();
Account targetAccount = config().getDefaultAccount();
Assertions.assertFalse(helper().isMultisig(type, signerAccount));
Assertions.assertFalse(helper().isMultisig(type, targetAccount));
MosaicId targetMosaicId = super.createMosaic(signerAccount, type, BigInteger.ZERO, null);
BigInteger key = BigInteger.valueOf(RandomUtils.generateRandomInt(100000));
String originalMessage = "The original message";
String newMessage = "The new Message";
RepositoryFactory repositoryFactory = getRepositoryFactory(type);
MetadataRepository metadataRepository = repositoryFactory.createMetadataRepository();
MetadataTransactionService service = new MetadataTransactionServiceImpl(repositoryFactory);
MosaicMetadataTransaction originalTransaction = get(service.createMosaicMetadataTransactionFactory(targetAccount.getAddress(), key, originalMessage, signerAccount.getAddress(), targetMosaicId)).maxFee(maxFee).build();
Assertions.assertEquals(targetAccount.getAddress(), originalTransaction.getTargetAddress());
Assertions.assertEquals(targetMosaicId, originalTransaction.getTargetMosaicId());
Assertions.assertEquals(key, originalTransaction.getScopedMetadataKey());
Assertions.assertEquals(originalMessage, originalTransaction.getValue());
helper().announceAggregateAndValidate(type, originalTransaction, signerAccount);
assertMetadata(targetMosaicId, key, originalMessage, metadataRepository, signerAccount, targetAccount);
MosaicMetadataTransaction updateTransaction = get(service.createMosaicMetadataTransactionFactory(targetAccount.getAddress(), key, newMessage, signerAccount.getAddress(), targetMosaicId)).maxFee(maxFee).build();
Assertions.assertEquals(targetAccount.getAddress(), updateTransaction.getTargetAddress());
Assertions.assertEquals(targetMosaicId, updateTransaction.getTargetMosaicId());
Assertions.assertEquals(key, updateTransaction.getScopedMetadataKey());
Pair<String, Integer> xorAndDelta = ConvertUtils.xorValues(originalMessage, newMessage);
Assertions.assertEquals(xorAndDelta.getLeft(), updateTransaction.getValue());
Assertions.assertEquals(xorAndDelta.getRight(), updateTransaction.getValueSizeDelta());
helper().announceAggregateAndValidate(type, updateTransaction, signerAccount);
assertMetadata(targetMosaicId, key, newMessage, metadataRepository, signerAccount, targetAccount);
}
use of io.nem.symbol.sdk.api.RepositoryFactory in project nem2-sdk-java by nemtech.
the class SecretLockIntegrationTest method secretLockAndProofTransaction.
@ParameterizedTest
@MethodSource("provider")
void secretLockAndProofTransaction(RepositoryType type, LockHashAlgorithm lockHashAlgorithm) {
RepositoryFactory repositoryFactory = getRepositoryFactory(type);
byte[] secretSeed = RandomUtils.generateRandomBytes(20);
String secret = ConvertUtils.toHex(lockHashAlgorithm.hash(secretSeed));
String storedSecret = ConvertUtils.padHex(secret, LockHashAlgorithm.DEFAULT_SECRET_HEX_SIZE);
if (lockHashAlgorithm == LockHashAlgorithm.HASH_160) {
Assertions.assertEquals(LockHashAlgorithm.DEFAULT_SECRET_HEX_SIZE, storedSecret.length());
Assertions.assertEquals(40, secret.length());
} else {
Assertions.assertEquals(LockHashAlgorithm.DEFAULT_SECRET_HEX_SIZE, storedSecret.length());
Assertions.assertEquals(LockHashAlgorithm.DEFAULT_SECRET_HEX_SIZE, secret.length());
}
String proof = ConvertUtils.toHex(secretSeed);
Account account = config().getNemesisAccount1();
Account account2 = config().getNemesisAccount2();
Currency currency = get(repositoryFactory.getNetworkCurrency());
Mosaic mosaic = currency.createAbsolute(BigInteger.valueOf(1));
BigInteger amount = mosaic.getAmount();
BigInteger duration = BigInteger.valueOf(10000);
SecretLockTransaction secretLockTransaction = SecretLockTransactionFactory.create(getNetworkType(), getDeadline(), mosaic, duration, lockHashAlgorithm, secret, account2.getAddress()).maxFee(maxFee).build();
announceAndValidate(type, account, secretLockTransaction);
SecretProofTransaction secretProofTransaction = SecretProofTransactionFactory.create(getNetworkType(), getDeadline(), lockHashAlgorithm, account2.getAddress(), secret, proof).maxFee(maxFee).build();
SecretProofTransaction secretProofTransactionAnnounced = announceAndValidate(type, account, secretProofTransaction);
sleep(500);
Assertions.assertEquals(lockHashAlgorithm, secretProofTransactionAnnounced.getHashType());
Assertions.assertEquals(account2.getAddress(), secretProofTransactionAnnounced.getRecipient());
Assertions.assertEquals(storedSecret, secretProofTransactionAnnounced.getSecret());
Assertions.assertEquals(proof, secretProofTransactionAnnounced.getProof());
SecretLockRepository hashLockRepository = getRepositoryFactory(type).createSecretLockRepository();
SecretLockInfo info = get(hashLockRepository.search(new SecretLockSearchCriteria().address(account.getAddress()).secret(storedSecret))).getData().get(0);
Assertions.assertNotNull(info);
Assertions.assertEquals(account.getAddress(), info.getOwnerAddress());
Assertions.assertEquals(account2.getAddress(), info.getRecipientAddress());
Assertions.assertEquals(amount, info.getAmount());
Assertions.assertEquals(storedSecret, info.getSecret());
Assertions.assertEquals(lockHashAlgorithm, info.getHashAlgorithm());
Assertions.assertEquals(LockStatus.USED, info.getStatus());
Page<SecretLockInfo> page = get(hashLockRepository.search(new SecretLockSearchCriteria().address(account.getAddress()).order(OrderBy.DESC)));
Assertions.assertTrue(page.getData().stream().anyMatch(m -> m.getSecret().equals(storedSecret)));
Assertions.assertEquals(20, page.getPageSize());
SecretLockInfo infoSearch = page.getData().stream().filter(m -> m.getSecret().equals(storedSecret)).findFirst().get();
Assertions.assertNotNull(infoSearch);
Assertions.assertEquals(account.getAddress(), infoSearch.getOwnerAddress());
Assertions.assertEquals(account2.getAddress(), infoSearch.getRecipientAddress());
Assertions.assertEquals(amount, infoSearch.getAmount());
Assertions.assertEquals(lockHashAlgorithm, infoSearch.getHashAlgorithm());
Assertions.assertEquals(LockStatus.USED, infoSearch.getStatus());
Assertions.assertEquals(storedSecret, infoSearch.getSecret());
}
Aggregations