@Test public void cannotDeserializeMultisigAggregateModificationWithEmptyCosignatoryModificationsAndWithNoMinCosignatoriesModification() { // Act: ExceptionAssert.assertThrows( v -> createJsonModifications(jsonObject -> jsonObject.replace("modifications", new JSONArray())), IllegalArgumentException.class); }
@Test public void ctorGivesPrecedenceToAddressMismatchOverKeyMismatch() { // Arrange: final KeyPairViewModel viewModel = new KeyPairViewModel(new KeyPair(), (byte)0x98); final JSONObject jsonObject = JsonSerializer.serializeToJson(viewModel); jsonObject.replace("privateKey", new KeyPair().getPrivateKey().toString()); jsonObject.replace("address", Utils.generateRandomAddress().getEncoded()); // Act: ExceptionAssert.assertThrows( v -> new KeyPairViewModel(new JsonDeserializer(jsonObject, null)), IllegalArgumentException.class); }
@Test public void ctorThrowsIfAddressIsNotDerivedFromPublicKey() { // Arrange: final KeyPairViewModel viewModel = new KeyPairViewModel(new KeyPair(), (byte)0x98); final JSONObject jsonObject = JsonSerializer.serializeToJson(viewModel); jsonObject.replace("address", Utils.generateRandomAddress().getEncoded()); // Act: ExceptionAssert.assertThrows( v -> new KeyPairViewModel(new JsonDeserializer(jsonObject, null)), IllegalArgumentException.class); }
@Test public void ctorThrowsIfPublicKeyIsNotDerivedFromPrivateKey() { // Arrange: final KeyPairViewModel viewModel = new KeyPairViewModel(new KeyPair(), (byte)0x98); final JSONObject jsonObject = JsonSerializer.serializeToJson(viewModel); jsonObject.replace("privateKey", new KeyPair().getPrivateKey().toString()); // Act: ExceptionAssert.assertThrows( v -> new KeyPairViewModel(new JsonDeserializer(jsonObject, null)), IllegalArgumentException.class); }
@Test public void cannotDeserializeMultisigTransactionWithMismatchedSignatures() { // Arrange: final Transaction innerTransaction = createDefaultTransferTransaction(); final SimpleMultisigContext context = new SimpleMultisigContext(innerTransaction); final MultisigTransaction originalTransaction = context.createMultisig(); final MultisigSignatureTransaction signature = context.createSignature(); signature.sign(); originalTransaction.addSignature(signature); originalTransaction.sign(); // Arrange: invalidate the signature other hash final JSONObject jsonObject = JsonSerializer.serializeToJson(originalTransaction); ((JSONObject)((JSONArray)jsonObject.get("signatures")).get(0)) .replace("otherHash", JsonSerializer.serializeToJson(Utils.generateRandomHash())); final Deserializer deserializer = Utils.createDeserializer(jsonObject); deserializer.readInt("type"); // Act: ExceptionAssert.assertThrows( v -> new MultisigTransaction(VerifiableEntity.DeserializationOptions.VERIFIABLE, deserializer), IllegalArgumentException.class); }