use of io.nem.symbol.sdk.model.transaction.SignedTransaction in project nem2-sdk-java by nemtech.
the class AggregateTransactionServiceTest method shouldReturnIsCompleteTrueForAggregatedCompleteTransaction2LevelsMultisig.
/*
* MLMA Alice (account1): normal account Bob (multisig2) - Multisig 2-1 (account1 && multisig1)
* Charles (multisig1) - Multisig 1-1 (account2 || account3) Given signatories: Account1 &&
* Account4 Expecting complete as Bob needs 2 signatures (account1 && (account2 || account3))
*/
@Test
void shouldReturnIsCompleteTrueForAggregatedCompleteTransaction2LevelsMultisig() throws ExecutionException, InterruptedException {
TransferTransaction transferTransaction = TransferTransactionFactory.create(networkType, new Deadline(BigInteger.ONE), Address.generateRandom(networkType), Collections.emptyList()).message(new PlainMessage("test-message")).build();
AggregateTransaction aggregateTransaction = AggregateTransactionFactory.createComplete(networkType, new Deadline(BigInteger.ONE), Collections.singletonList(transferTransaction.toAggregate(multisig2.getPublicAccount()))).build();
SignedTransaction signedTransaction = account1.signTransactionWithCosignatories(aggregateTransaction, Collections.singletonList(account2), generationHash);
Assertions.assertTrue(service.isComplete(signedTransaction).toFuture().get());
}
use of io.nem.symbol.sdk.model.transaction.SignedTransaction in project nem2-sdk-java by nemtech.
the class AggregateTransactionServiceTest method shouldUseMinRemovalForMultisigAccountValidationIfInnerTransactionIsModifyMultisigRemove.
/*
* If the inner transaction is issued to a multisig account and the inner transaction itself is
* a ModifyMultiSigAccountTransaction - Removal The validator should use minRemoval value rather
* than minApproval value to determine if the act is complete or not
*/
@Test
void shouldUseMinRemovalForMultisigAccountValidationIfInnerTransactionIsModifyMultisigRemove() throws ExecutionException, InterruptedException {
MultisigAccountModificationTransaction modifyMultisigTransaction = MultisigAccountModificationTransactionFactory.create(networkType, new Deadline(BigInteger.ONE), (byte) 1, (byte) 1, Collections.emptyList(), Collections.singletonList(account1.getAddress())).build();
AggregateTransaction aggregateTransaction = AggregateTransactionFactory.createComplete(networkType, new Deadline(BigInteger.ONE), Collections.singletonList(modifyMultisigTransaction.toAggregate(multisig2.getPublicAccount()))).build();
SignedTransaction signedTransaction = aggregateTransaction.signWith(account2, generationHash);
Assertions.assertTrue(service.isComplete(signedTransaction).toFuture().get());
}
use of io.nem.symbol.sdk.model.transaction.SignedTransaction in project nem2-sdk-java by nemtech.
the class BinarySerializationTest method testSignature.
@Test
void testSignature() {
BinarySerializationImpl binarySerialization = new BinarySerializationImpl();
TransferTransaction transaction = TransferTransactionFactory.create(NetworkType.MIJIN_TEST, new Deadline(BigInteger.ONE), Address.generateRandom(NetworkType.MIJIN_TEST), Arrays.asList(new Mosaic(new MosaicId(new BigInteger("95442763262823")), BigInteger.valueOf(100)))).message(new PlainMessage("Some Message")).build();
SignedTransaction signedTransaction = transaction.signWith(account, generationHash);
String signature = signedTransaction.getPayload().substring(16, 128 + 16);
// If we deserialize the signed transaction, we get everything back, include the
// signer and
// signature
byte[] payloadWithSignatureAndSigner = ConvertUtils.getBytes(signedTransaction.getPayload());
TransferTransaction deserialized = (TransferTransaction) binarySerialization.deserialize(payloadWithSignatureAndSigner);
Assertions.assertTrue(deserialized.getSignature().isPresent());
Assertions.assertTrue(deserialized.getSigner().isPresent());
Assertions.assertEquals(signature.toUpperCase(), deserialized.getSignature().get());
Assertions.assertEquals(account.getPublicAccount(), deserialized.getSigner().get());
// Test that the payload is the same, just without the signature and signer.
byte[] payloadWithoutSignatureAndSigner = binarySerialization.serialize(transaction);
Assertions.assertEquals(ConvertUtils.toHex(payloadWithoutSignatureAndSigner).substring(208), ConvertUtils.toHex(payloadWithSignatureAndSigner).substring(208));
Transaction deserializeWithoutSignature = binarySerialization.deserialize(payloadWithoutSignatureAndSigner);
Assertions.assertFalse(deserializeWithoutSignature.getSignature().isPresent());
Assertions.assertFalse(deserializeWithoutSignature.getSigner().isPresent());
}
use of io.nem.symbol.sdk.model.transaction.SignedTransaction in project nem2-sdk-java by nemtech.
the class AggregateTransactionServiceTest method shouldReturnCorrectIsCompleteStatusFalseForAggregatedCompleteTransactionNoneMultisig.
/*
* If the inner transaction is issued to a multisig account and the inner transaction itself is
* a ModifyMultiSigAccountTransaction - Removal The validator should use minRemoval value rather
* than minApproval value to determine if the act is complete or not
*/
@Test
void shouldReturnCorrectIsCompleteStatusFalseForAggregatedCompleteTransactionNoneMultisig() throws ExecutionException, InterruptedException {
TransferTransaction transferTransaction = TransferTransactionFactory.create(networkType, new Deadline(BigInteger.ONE), account2.getAddress(), Collections.emptyList()).message(new PlainMessage("test-message")).build();
AggregateTransaction aggregateTransaction = AggregateTransactionFactory.createComplete(networkType, new Deadline(BigInteger.ONE), Collections.singletonList(transferTransaction.toAggregate(account4.getPublicAccount()))).build();
SignedTransaction signedTransaction = aggregateTransaction.signWith(account1, generationHash);
Assertions.assertFalse(service.isComplete(signedTransaction).toFuture().get());
}
use of io.nem.symbol.sdk.model.transaction.SignedTransaction in project nem2-sdk-java by nemtech.
the class AggregateTransactionServiceTest method shouldReturnCorrectIsCompleteStatusFalseMultipleNormalAccount.
/*
* ACT Alice: account1 Bob: account4 An escrow contract is signed by all the participants
* (normal accounts) Given Alice defined the following escrow contract: | sender | recipient |
* type | data | | Alice | Bob | send-an-asset | 1 concert.ticket | | Bob | Alice |
* send-an-asset | 20 euros | And Alice signs the contract Then the contract should appear as
* incomplete
*/
@Test
void shouldReturnCorrectIsCompleteStatusFalseMultipleNormalAccount() throws ExecutionException, InterruptedException {
TransferTransaction transferTransaction = TransferTransactionFactory.create(networkType, new Deadline(BigInteger.ONE), account1.getAddress(), Collections.emptyList()).message(new PlainMessage("test-message")).build();
TransferTransaction transferTransaction2 = TransferTransactionFactory.create(networkType, new Deadline(BigInteger.ONE), account4.getAddress(), Collections.emptyList()).message(new PlainMessage("test-message")).build();
AggregateTransaction aggregateTransaction = AggregateTransactionFactory.createComplete(networkType, new Deadline(BigInteger.ONE), Arrays.asList(transferTransaction.toAggregate(account4.getPublicAccount()), transferTransaction2.toAggregate(account1.getPublicAccount()))).build();
SignedTransaction signedTransaction = account1.signTransactionWithCosignatories(aggregateTransaction, Collections.emptyList(), generationHash);
Assertions.assertFalse(service.isComplete(signedTransaction).toFuture().get());
}
Aggregations