From 08e01b93e90b20558cd65fdf71eb3f8f65c1504a Mon Sep 17 00:00:00 2001 From: Fernando Boucquez Date: Tue, 29 Oct 2019 12:36:11 +0100 Subject: [PATCH] TS-82 Fixed transaction size methods, improved testing. Renamed modificationType for modificationAction according to the open api spec --- e2e/infrastructure/TransactionHttp.spec.ts | 10 +-- .../CreateTransactionFromDTO.spec.ts | 4 +- .../transaction/ValidateTransaction.ts | 2 +- src/infrastructure/Listener.ts | 2 +- .../transaction/CreateTransactionFromDTO.ts | 2 +- .../AccountAddressRestrictionTransaction.ts | 6 +- .../transaction/AccountMetadataTransaction.ts | 3 +- .../AccountMosaicRestrictionTransaction.ts | 6 +- .../AccountOperationRestrictionTransaction.ts | 6 +- .../AccountRestrictionModification.ts | 24 +++--- src/model/transaction/AggregateTransaction.ts | 65 +++++++++-------- .../MosaicAddressRestrictionTransaction.ts | 3 +- .../MosaicDefinitionTransaction.ts | 4 +- .../MosaicGlobalRestrictionTransaction.ts | 3 +- .../transaction/MosaicMetadataTransaction.ts | 3 +- .../MultisigAccountModificationTransaction.ts | 6 +- .../MultisigCosignatoryModification.ts | 6 +- .../NamespaceMetadataTransaction.ts | 3 +- src/model/transaction/TransferTransaction.ts | 73 ++++++++++--------- src/service/AggregateTransactionService.ts | 2 +- test/core/utils/TransactionMapping.spec.ts | 10 +-- .../restriction/AccountRestrictions.spec.ts | 6 +- .../AccountRestrictionsInfo.spec.ts | 2 +- .../AccountLinkTransaction.spec.ts | 2 + .../AccountMetadataTransaction.spec.ts | 6 +- .../AccountRestrictionTransaction.spec.ts | 8 +- .../AddressAliasTransaction.spec.ts | 2 + .../transaction/AggregateTransaction.spec.ts | 13 +++- .../transaction/HashLockTransaction.spec.ts | 2 + .../transaction/LockFundsTransaction.spec.ts | 2 + ...osaicAddressRestrictionTransaction.spec.ts | 4 + .../MosaicAliasTransaction.spec.ts | 2 + .../MosaicDefinitionTransaction.spec.ts | 7 +- ...MosaicGlobalRestrictionTransaction.spec.ts | 3 + .../MosaicMetadataTransaction.spec.ts | 6 +- .../MosaicSupplyChangeTransaction.spec.ts | 2 + ...isigAccountModificationTransaction.spec.ts | 6 +- .../MultisigCosignatoryModification.spec.ts | 8 +- .../NamespaceMetadataTransaction.spec.ts | 5 +- .../NamespaceRegistrationTransaction.spec.ts | 2 + .../transaction/SecretLockTransaction.spec.ts | 3 +- .../SecretProofTransaction.spec.ts | 3 +- .../transaction/TransferTransaction.spec.ts | 6 +- 43 files changed, 194 insertions(+), 149 deletions(-) diff --git a/e2e/infrastructure/TransactionHttp.spec.ts b/e2e/infrastructure/TransactionHttp.spec.ts index 17331bb97c..0ee6359693 100644 --- a/e2e/infrastructure/TransactionHttp.spec.ts +++ b/e2e/infrastructure/TransactionHttp.spec.ts @@ -606,7 +606,7 @@ describe('TransactionHttp', () => { listener.confirmed(account.address).subscribe((transaction: AccountAddressRestrictionTransaction) => { expect(transaction.modifications, 'Modifications').not.to.be.undefined; - expect(transaction.modifications[0].modificationType, 'Modifications.ModificationType').not.to.be.undefined; + expect(transaction.modifications[0].modificationAction, 'Modifications.ModificationAction').not.to.be.undefined; expect(transaction.modifications[0].value, 'Modifications.Value').not.to.be.undefined; expect(transaction.restrictionType, 'RestrictionType').not.to.be.undefined; done(); @@ -682,7 +682,7 @@ describe('TransactionHttp', () => { listener.confirmed(account.address).subscribe((transaction: AccountAddressRestrictionTransaction) => { expect(transaction.modifications, 'Modifications').not.to.be.undefined; - expect(transaction.modifications[0].modificationType, 'Modifications.ModificationType').not.to.be.undefined; + expect(transaction.modifications[0].modificationAction, 'Modifications.ModificationAction').not.to.be.undefined; expect(transaction.modifications[0].value, 'Modifications.Value').not.to.be.undefined; expect(transaction.restrictionType, 'RestrictionType').not.to.be.undefined; done(); @@ -757,7 +757,7 @@ describe('TransactionHttp', () => { listener.confirmed(account.address).subscribe((transaction: AccountMosaicRestrictionTransaction) => { expect(transaction.modifications, 'Modifications').not.to.be.undefined; - expect(transaction.modifications[0].modificationType, 'Modifications.ModificationType').not.to.be.undefined; + expect(transaction.modifications[0].modificationAction, 'Modifications.ModificationAction').not.to.be.undefined; expect(transaction.modifications[0].value, 'Modifications.Value').not.to.be.undefined; expect(transaction.restrictionType, 'RestrictionType').not.to.be.undefined; done(); @@ -832,7 +832,7 @@ describe('TransactionHttp', () => { listener.confirmed(account3.address).subscribe((transaction: AccountOperationRestrictionTransaction) => { expect(transaction.modifications, 'Modifications').not.to.be.undefined; - expect(transaction.modifications[0].modificationType, 'Modifications.ModificationType').not.to.be.undefined; + expect(transaction.modifications[0].modificationAction, 'Modifications.ModificationAction').not.to.be.undefined; expect(transaction.modifications[0].value, 'Modifications.Value').not.to.be.undefined; expect(transaction.restrictionType, 'RestrictionType').not.to.be.undefined; done(); @@ -908,7 +908,7 @@ describe('TransactionHttp', () => { listener.confirmed(account3.address).subscribe((transaction: AccountOperationRestrictionTransaction) => { expect(transaction.modifications, 'Modifications').not.to.be.undefined; - expect(transaction.modifications[0].modificationType, 'Modifications.ModificationType').not.to.be.undefined; + expect(transaction.modifications[0].modificationAction, 'Modifications.ModificationAction').not.to.be.undefined; expect(transaction.modifications[0].value, 'Modifications.Value').not.to.be.undefined; expect(transaction.restrictionType, 'RestrictionType').not.to.be.undefined; done(); diff --git a/e2e/infrastructure/transaction/CreateTransactionFromDTO.spec.ts b/e2e/infrastructure/transaction/CreateTransactionFromDTO.spec.ts index 61a9352b24..76e5d21dbd 100644 --- a/e2e/infrastructure/transaction/CreateTransactionFromDTO.spec.ts +++ b/e2e/infrastructure/transaction/CreateTransactionFromDTO.spec.ts @@ -511,7 +511,7 @@ describe('CreateTransactionFromDTO', () => { modifications: [ { cosignatoryPublicKey: '76C1622C7FB58986E500228E8FFB30C606CAAFC1CD78E770E82C73DAB7BD7C9F', - modificiationType: 0, + modificationAction: 0, }, ], signature: '553E696EB4A54E43A11D180EBA57E4B89D0048C9DD2604A9E0608120018B9E0' + @@ -566,7 +566,7 @@ describe('CreateTransactionFromDTO', () => { { cosignatoryPublicKey: '589B73FBC22063E9AE6FBAC67CB9C6EA865EF556E5' + 'FB8B7310D45F77C1250B97', - modificiationType: 0, + modificationAction: 0, }, ], signerPublicKey: 'B4F12E7C9F6946091E2CB8B6D3A12B50D17CCBBF646386EA27CE2946A7423DCF', diff --git a/e2e/infrastructure/transaction/ValidateTransaction.ts b/e2e/infrastructure/transaction/ValidateTransaction.ts index 4bf6223db2..8f488cac23 100644 --- a/e2e/infrastructure/transaction/ValidateTransaction.ts +++ b/e2e/infrastructure/transaction/ValidateTransaction.ts @@ -124,7 +124,7 @@ const ValidateTransaction = { .to.be.equal(modifyMultisigAccountTransactionDTO.transaction.minRemovalDelta); deepEqual(modifyMultisigAccountTransaction.modifications[0], new MultisigCosignatoryModification( - modifyMultisigAccountTransactionDTO.transaction.modifications[0].modificiationType, + modifyMultisigAccountTransactionDTO.transaction.modifications[0].modificationAction, PublicAccount.createFromPublicKey(modifyMultisigAccountTransactionDTO.transaction.modifications[0].cosignatoryPublicKey, NetworkType.MIJIN_TEST), ), diff --git a/src/infrastructure/Listener.ts b/src/infrastructure/Listener.ts index b8ece01277..aedd0d2d32 100644 --- a/src/infrastructure/Listener.ts +++ b/src/infrastructure/Listener.ts @@ -409,7 +409,7 @@ export class Listener { private accountAddedToMultiSig(transaction: Transaction, address: Address): boolean { if (transaction instanceof MultisigAccountModificationTransaction) { return transaction.modifications.find((_: MultisigCosignatoryModification) => - _.modificiationType === CosignatoryModificationAction.Add && + _.modificationAction === CosignatoryModificationAction.Add && _.cosignatoryPublicAccount.address.equals(address)) !== undefined; } return false; diff --git a/src/infrastructure/transaction/CreateTransactionFromDTO.ts b/src/infrastructure/transaction/CreateTransactionFromDTO.ts index 899cb3b344..33511e4437 100644 --- a/src/infrastructure/transaction/CreateTransactionFromDTO.ts +++ b/src/infrastructure/transaction/CreateTransactionFromDTO.ts @@ -194,7 +194,7 @@ const CreateStandaloneTransactionFromDTO = (transactionDTO, transactionInfo): Tr transactionDTO.minApprovalDelta, transactionDTO.minRemovalDelta, transactionDTO.modifications ? transactionDTO.modifications.map((modificationDTO) => new MultisigCosignatoryModification( - modificationDTO.modificiationType, + modificationDTO.modificationAction, PublicAccount.createFromPublicKey(modificationDTO.cosignatoryPublicKey, extractNetworkType(transactionDTO.version)), )) : [], transactionDTO.signature, diff --git a/src/model/transaction/AccountAddressRestrictionTransaction.ts b/src/model/transaction/AccountAddressRestrictionTransaction.ts index fd6098c100..9cc8d95fd0 100644 --- a/src/model/transaction/AccountAddressRestrictionTransaction.ts +++ b/src/model/transaction/AccountAddressRestrictionTransaction.ts @@ -129,7 +129,7 @@ export class AccountAddressRestrictionTransaction extends Transaction { const byteModificationCount = 1; // each modification contains : - // - 1 byte for modificationType + // - 1 byte for modificationAction // - 25 bytes for the modification value (address) const byteModifications = 26 * this.modifications.length; @@ -154,7 +154,7 @@ export class AccountAddressRestrictionTransaction extends Transaction { this.restrictionType.valueOf(), this.modifications.map((modification) => { return new AccountAddressRestrictionModificationBuilder( - modification.modificationType.valueOf(), + modification.modificationAction.valueOf(), new UnresolvedAddressDto(RawAddress.stringToAddress(modification.value)), ); }), @@ -174,7 +174,7 @@ export class AccountAddressRestrictionTransaction extends Transaction { this.restrictionType.valueOf(), this.modifications.map((modification) => { return new AccountAddressRestrictionModificationBuilder( - modification.modificationType.valueOf(), + modification.modificationAction.valueOf(), new UnresolvedAddressDto(RawAddress.stringToAddress(modification.value)), ); }), diff --git a/src/model/transaction/AccountMetadataTransaction.ts b/src/model/transaction/AccountMetadataTransaction.ts index c084363599..47b6a2f886 100644 --- a/src/model/transaction/AccountMetadataTransaction.ts +++ b/src/model/transaction/AccountMetadataTransaction.ts @@ -146,9 +146,10 @@ export class AccountMetadataTransaction extends Transaction { const targetPublicKey = 32; const byteScopedMetadataKey = 8; const byteValueSizeDelta = 2; + const valueSize = 2; return byteSize + targetPublicKey + byteScopedMetadataKey + - byteValueSizeDelta + this.value.length; + byteValueSizeDelta + valueSize + this.value.length; } /** diff --git a/src/model/transaction/AccountMosaicRestrictionTransaction.ts b/src/model/transaction/AccountMosaicRestrictionTransaction.ts index 86497ed9d7..6afe7a73bd 100644 --- a/src/model/transaction/AccountMosaicRestrictionTransaction.ts +++ b/src/model/transaction/AccountMosaicRestrictionTransaction.ts @@ -129,7 +129,7 @@ export class AccountMosaicRestrictionTransaction extends Transaction { const byteModificationCount = 1; // each modification contains : - // - 1 byte for modificationType + // - 1 byte for modificationAction // - 8 bytes for the modification value (mosaicId) const byteModifications = 9 * this.modifications.length; @@ -154,7 +154,7 @@ export class AccountMosaicRestrictionTransaction extends Transaction { this.restrictionType.valueOf(), this.modifications.map((modification) => { return new AccountMosaicRestrictionModificationBuilder( - modification.modificationType.valueOf(), + modification.modificationAction.valueOf(), new UnresolvedMosaicIdDto(modification.value), ); }), @@ -174,7 +174,7 @@ export class AccountMosaicRestrictionTransaction extends Transaction { this.restrictionType.valueOf(), this.modifications.map((modification) => { return new AccountMosaicRestrictionModificationBuilder( - modification.modificationType.valueOf(), + modification.modificationAction.valueOf(), new UnresolvedMosaicIdDto(modification.value), ); }), diff --git a/src/model/transaction/AccountOperationRestrictionTransaction.ts b/src/model/transaction/AccountOperationRestrictionTransaction.ts index 662c4a8564..492d7936a0 100644 --- a/src/model/transaction/AccountOperationRestrictionTransaction.ts +++ b/src/model/transaction/AccountOperationRestrictionTransaction.ts @@ -130,7 +130,7 @@ export class AccountOperationRestrictionTransaction extends Transaction { const byteModificationCount = 1; // each modification contains : - // - 1 byte for modificationType + // - 1 byte for modificationAction // - 2 bytes for the modification value (transaction type) const byteModifications = 3 * this.modifications.length; @@ -155,7 +155,7 @@ export class AccountOperationRestrictionTransaction extends Transaction { this.restrictionType.valueOf(), this.modifications.map((modification) => { return new AccountOperationRestrictionModificationBuilder( - modification.modificationType.valueOf(), + modification.modificationAction.valueOf(), modification.value.valueOf(), ); }), @@ -175,7 +175,7 @@ export class AccountOperationRestrictionTransaction extends Transaction { this.restrictionType.valueOf(), this.modifications.map((modification) => { return new AccountOperationRestrictionModificationBuilder( - modification.modificationType.valueOf(), + modification.modificationAction.valueOf(), modification.value.valueOf(), ); }), diff --git a/src/model/transaction/AccountRestrictionModification.ts b/src/model/transaction/AccountRestrictionModification.ts index 4d15fc11c9..3e4fb20787 100644 --- a/src/model/transaction/AccountRestrictionModification.ts +++ b/src/model/transaction/AccountRestrictionModification.ts @@ -23,14 +23,14 @@ export class AccountRestrictionModification { /** * Constructor - * @param modificationType + * @param modificationAction * @param value */ constructor( /** * Modification type. */ - public readonly modificationType: AccountRestrictionModificationAction, + public readonly modificationAction: AccountRestrictionModificationAction, /** * Modification value (Address, Mosaic or Transaction Type). */ @@ -40,34 +40,34 @@ export class AccountRestrictionModification { /** * Create an address filter for account restriction modification - * @param modificationType - modification type. 0: Add, 1: Remove + * @param modificationAction - modification type. 0: Add, 1: Remove * @param value - modification value (Address) * @returns {AccountRestrictionModification} */ - public static createForAddress(modificationType: AccountRestrictionModificationAction, + public static createForAddress(modificationAction: AccountRestrictionModificationAction, value: Address): AccountRestrictionModification { - return new AccountRestrictionModification(modificationType, value.plain()); + return new AccountRestrictionModification(modificationAction, value.plain()); } /** * Create an mosaic filter for account restriction modification - * @param modificationType - modification type. 0: Add, 1: Remove + * @param modificationAction - modification type. 0: Add, 1: Remove * @param value - modification value (Mosaic) * @returns {AccountRestrictionModification} */ - public static createForMosaic(modificationType: AccountRestrictionModificationAction, + public static createForMosaic(modificationAction: AccountRestrictionModificationAction, value: MosaicId): AccountRestrictionModification { - return new AccountRestrictionModification(modificationType, value.id.toDTO()); + return new AccountRestrictionModification(modificationAction, value.id.toDTO()); } /** * Create an operation filter for account restriction modification - * @param modificationType - modification type. 0: Add, 1: Remove + * @param modificationAction - modification type. 0: Add, 1: Remove * @param operation - modification value (Transaction Type) * @returns {AccountRestrictionModification} */ - public static createForOperation(modificationType: AccountRestrictionModificationAction, + public static createForOperation(modificationAction: AccountRestrictionModificationAction, value: number): AccountRestrictionModification { - return new AccountRestrictionModification(modificationType, value); + return new AccountRestrictionModification(modificationAction, value); } /** @@ -76,7 +76,7 @@ export class AccountRestrictionModification { toDTO() { return { value: this.value, - modificationAction: this.modificationType, + modificationAction: this.modificationAction, }; } } diff --git a/src/model/transaction/AggregateTransaction.ts b/src/model/transaction/AggregateTransaction.ts index bb7862d8c4..7ae2966b6e 100644 --- a/src/model/transaction/AggregateTransaction.ts +++ b/src/model/transaction/AggregateTransaction.ts @@ -14,30 +14,30 @@ * limitations under the License. */ -import { KeyPair, SHA3Hasher } from '../../core/crypto'; -import { Convert } from '../../core/format'; -import { AggregateBondedTransactionBuilder } from '../../infrastructure/catbuffer/AggregateBondedTransactionBuilder'; -import { AggregateCompleteTransactionBuilder } from '../../infrastructure/catbuffer/AggregateCompleteTransactionBuilder'; -import { AmountDto } from '../../infrastructure/catbuffer/AmountDto'; -import { CosignatureBuilder } from '../../infrastructure/catbuffer/CosignatureBuilder'; -import { GeneratorUtils } from '../../infrastructure/catbuffer/GeneratorUtils'; -import { KeyDto } from '../../infrastructure/catbuffer/KeyDto'; -import { SignatureDto } from '../../infrastructure/catbuffer/SignatureDto'; -import { TimestampDto } from '../../infrastructure/catbuffer/TimestampDto'; -import { CreateTransactionFromPayload } from '../../infrastructure/transaction/CreateTransactionFromPayload'; -import { Account } from '../account/Account'; -import { PublicAccount } from '../account/PublicAccount'; -import { NetworkType } from '../blockchain/NetworkType'; -import { UInt64 } from '../UInt64'; -import { AggregateTransactionCosignature } from './AggregateTransactionCosignature'; -import { CosignatureSignedTransaction } from './CosignatureSignedTransaction'; -import { Deadline } from './Deadline'; -import { InnerTransaction } from './InnerTransaction'; -import { SignedTransaction } from './SignedTransaction'; -import { Transaction } from './Transaction'; -import { TransactionInfo } from './TransactionInfo'; -import { TransactionType } from './TransactionType'; -import { TransactionVersion } from './TransactionVersion'; +import {KeyPair, SHA3Hasher} from '../../core/crypto'; +import {Convert} from '../../core/format'; +import {AggregateBondedTransactionBuilder} from '../../infrastructure/catbuffer/AggregateBondedTransactionBuilder'; +import {AggregateCompleteTransactionBuilder} from '../../infrastructure/catbuffer/AggregateCompleteTransactionBuilder'; +import {AmountDto} from '../../infrastructure/catbuffer/AmountDto'; +import {CosignatureBuilder} from '../../infrastructure/catbuffer/CosignatureBuilder'; +import {GeneratorUtils} from '../../infrastructure/catbuffer/GeneratorUtils'; +import {KeyDto} from '../../infrastructure/catbuffer/KeyDto'; +import {SignatureDto} from '../../infrastructure/catbuffer/SignatureDto'; +import {TimestampDto} from '../../infrastructure/catbuffer/TimestampDto'; +import {CreateTransactionFromPayload} from '../../infrastructure/transaction/CreateTransactionFromPayload'; +import {Account} from '../account/Account'; +import {PublicAccount} from '../account/PublicAccount'; +import {NetworkType} from '../blockchain/NetworkType'; +import {UInt64} from '../UInt64'; +import {AggregateTransactionCosignature} from './AggregateTransactionCosignature'; +import {CosignatureSignedTransaction} from './CosignatureSignedTransaction'; +import {Deadline} from './Deadline'; +import {InnerTransaction} from './InnerTransaction'; +import {SignedTransaction} from './SignedTransaction'; +import {Transaction} from './Transaction'; +import {TransactionInfo} from './TransactionInfo'; +import {TransactionType} from './TransactionType'; +import {TransactionVersion} from './TransactionVersion'; /** * Aggregate innerTransactions contain multiple innerTransactions that can be initiated by different accounts. @@ -158,10 +158,10 @@ export class AggregateTransaction extends Transaction { */ const consignatureArray = consignaturesHex.match(/.{1,192}/g); const consignatures = consignatureArray ? consignatureArray.map((cosignature) => - new AggregateTransactionCosignature( - cosignature.substring(64, 192), - PublicAccount.createFromPublicKey(cosignature.substring(0, 64), networkType), - )) : []; + new AggregateTransactionCosignature( + cosignature.substring(64, 192), + PublicAccount.createFromPublicKey(cosignature.substring(0, 64), networkType), + )) : []; return type === TransactionType.AGGREGATE_COMPLETE ? AggregateTransaction.createComplete( @@ -222,7 +222,7 @@ export class AggregateTransaction extends Transaction { signedPayload = littleEndianSize + signedPayload.substr(8, signedPayload.length - 8); return new SignedTransaction(signedPayload, signedTransaction.hash, initiatorAccount.publicKey, - this.type, this.networkType); + this.type, this.networkType); } /** @@ -251,7 +251,7 @@ export class AggregateTransaction extends Transaction { signedPayload = littleEndianSize + signedPayload.substr(8, signedPayload.length - 8); return new SignedTransaction(signedPayload, signedTransaction.hash, initiatorAccount.publicKey, - this.type, this.networkType); + this.type, this.networkType); } /** @@ -279,10 +279,11 @@ export class AggregateTransaction extends Transaction { // calculate each inner transaction's size let byteTransactions = 0; this.innerTransactions.map((transaction) => { - byteTransactions += transaction.size; + byteTransactions += (transaction.size - 80); }); - return byteSize + byteTransactionsSize + byteTransactions; + const byteCosignatures = this.cosignatures.length * 96; + return byteSize + byteTransactionsSize + byteTransactions + byteCosignatures; } /** diff --git a/src/model/transaction/MosaicAddressRestrictionTransaction.ts b/src/model/transaction/MosaicAddressRestrictionTransaction.ts index 644508c7a6..4ff0e24223 100644 --- a/src/model/transaction/MosaicAddressRestrictionTransaction.ts +++ b/src/model/transaction/MosaicAddressRestrictionTransaction.ts @@ -164,14 +164,13 @@ export class MosaicAddressRestrictionTransaction extends Transaction { const byteSize = super.size; // set static byte size fields - const byteNonce = 4; const byteMosaicId = 8; const byteRestrictionKey = 8; const byteTargetAddress = 25; const bytePreviousRestrictionValue = 8; const byteNewRestrictionValue = 8; - return byteSize + byteNonce + byteMosaicId + byteRestrictionKey + + return byteSize + byteMosaicId + byteRestrictionKey + byteTargetAddress + bytePreviousRestrictionValue + byteNewRestrictionValue; } diff --git a/src/model/transaction/MosaicDefinitionTransaction.ts b/src/model/transaction/MosaicDefinitionTransaction.ts index 547b1b0ded..a3c72daf94 100644 --- a/src/model/transaction/MosaicDefinitionTransaction.ts +++ b/src/model/transaction/MosaicDefinitionTransaction.ts @@ -162,13 +162,11 @@ export class MosaicDefinitionTransaction extends Transaction { // set static byte size fields const byteNonce = 4; const byteMosaicId = 8; - const byteNumProps = 1; const byteFlags = 1; const byteDivisibility = 1; - const byteDurationSize = 1; const byteDuration = 8; - return byteSize + byteNonce + byteMosaicId + byteNumProps + byteFlags + byteDivisibility + byteDurationSize + byteDuration; + return byteSize + byteNonce + byteMosaicId + byteFlags + byteDivisibility + byteDuration; } /** diff --git a/src/model/transaction/MosaicGlobalRestrictionTransaction.ts b/src/model/transaction/MosaicGlobalRestrictionTransaction.ts index b6079fe85b..2a39f2ad67 100644 --- a/src/model/transaction/MosaicGlobalRestrictionTransaction.ts +++ b/src/model/transaction/MosaicGlobalRestrictionTransaction.ts @@ -183,7 +183,6 @@ export class MosaicGlobalRestrictionTransaction extends Transaction { const byteSize = super.size; // set static byte size fields - const byteNonce = 4; const byteMosaicId = 8; const byteReferenceMosaicId = 8; const byteRestrictionKey = 8; @@ -192,7 +191,7 @@ export class MosaicGlobalRestrictionTransaction extends Transaction { const bytePreviousRestrictionType = 1; const byteNewRestrictionType = 1; - return byteSize + byteNonce + byteMosaicId + byteRestrictionKey + byteReferenceMosaicId + + return byteSize + byteMosaicId + byteRestrictionKey + byteReferenceMosaicId + bytePreviousRestrictionValue + byteNewRestrictionValue + byteNewRestrictionType + bytePreviousRestrictionType; } diff --git a/src/model/transaction/MosaicMetadataTransaction.ts b/src/model/transaction/MosaicMetadataTransaction.ts index 967df9c332..4ae7dfcc4f 100644 --- a/src/model/transaction/MosaicMetadataTransaction.ts +++ b/src/model/transaction/MosaicMetadataTransaction.ts @@ -160,9 +160,10 @@ export class MosaicMetadataTransaction extends Transaction { const byteScopedMetadataKey = 8; const byteTargetMosaicId = 8; const byteValueSizeDelta = 2; + const valueSize = 2; return byteSize + targetPublicKey + byteScopedMetadataKey + - byteTargetMosaicId + byteValueSizeDelta + this.value.length; + byteTargetMosaicId + byteValueSizeDelta + valueSize + this.value.length; } /** diff --git a/src/model/transaction/MultisigAccountModificationTransaction.ts b/src/model/transaction/MultisigAccountModificationTransaction.ts index df7575d868..3e819935f9 100644 --- a/src/model/transaction/MultisigAccountModificationTransaction.ts +++ b/src/model/transaction/MultisigAccountModificationTransaction.ts @@ -153,7 +153,7 @@ export class MultisigAccountModificationTransaction extends Transaction { const byteNumModifications = 1; // each modification contains : - // - 1 byte for modificationType + // - 1 byte for modificationAction // - 32 bytes for cosignatoryPublicKey const byteModifications = 33 * this.modifications.length; @@ -179,7 +179,7 @@ export class MultisigAccountModificationTransaction extends Transaction { this.minApprovalDelta, this.modifications.map((modification) => { return new CosignatoryModificationBuilder( - modification.modificiationType.valueOf(), + modification.modificationAction.valueOf(), new KeyDto(Convert.hexToUint8(modification.cosignatoryPublicAccount.publicKey)), ); }), @@ -200,7 +200,7 @@ export class MultisigAccountModificationTransaction extends Transaction { this.minApprovalDelta, this.modifications.map((modification) => { return new CosignatoryModificationBuilder( - modification.modificiationType.valueOf(), + modification.modificationAction.valueOf(), new KeyDto(Convert.hexToUint8(modification.cosignatoryPublicAccount.publicKey)), ); }), diff --git a/src/model/transaction/MultisigCosignatoryModification.ts b/src/model/transaction/MultisigCosignatoryModification.ts index 649a8146c0..8369b0fca6 100644 --- a/src/model/transaction/MultisigCosignatoryModification.ts +++ b/src/model/transaction/MultisigCosignatoryModification.ts @@ -27,14 +27,14 @@ export class MultisigCosignatoryModification { /** * Constructor - * @param modificiationType + * @param modificationAction * @param cosignatoryPublicAccount */ constructor( /** * Multi-signature modification type. */ - public readonly modificiationType: CosignatoryModificationAction, + public readonly modificationAction: CosignatoryModificationAction, /** * Cosignatory public account. */ @@ -48,7 +48,7 @@ export class MultisigCosignatoryModification { toDTO() { return { cosignatoryPublicKey: this.cosignatoryPublicAccount.publicKey, - modificiationType: this.modificiationType, + modificationAction: this.modificationAction, }; } } diff --git a/src/model/transaction/NamespaceMetadataTransaction.ts b/src/model/transaction/NamespaceMetadataTransaction.ts index 585ecf2ce3..28886176b8 100644 --- a/src/model/transaction/NamespaceMetadataTransaction.ts +++ b/src/model/transaction/NamespaceMetadataTransaction.ts @@ -159,9 +159,10 @@ export class NamespaceMetadataTransaction extends Transaction { const byteScopedMetadataKey = 8; const byteTargetNamespaceId = 8; const byteValueSizeDelta = 2; + const byteValueSize = 2; return byteSize + targetPublicKey + byteScopedMetadataKey + - byteTargetNamespaceId + byteValueSizeDelta + this.value.length; + byteTargetNamespaceId + byteValueSizeDelta + byteValueSize + this.value.length; } /** diff --git a/src/model/transaction/TransferTransaction.ts b/src/model/transaction/TransferTransaction.ts index 3f902bb29a..38c4abcd68 100644 --- a/src/model/transaction/TransferTransaction.ts +++ b/src/model/transaction/TransferTransaction.ts @@ -15,34 +15,34 @@ */ import * as Long from 'long'; -import { Convert, Convert as convert } from '../../core/format'; -import { UnresolvedMapping } from '../../core/utils/UnresolvedMapping'; -import { AmountDto } from '../../infrastructure/catbuffer/AmountDto'; -import { EmbeddedTransferTransactionBuilder } from '../../infrastructure/catbuffer/EmbeddedTransferTransactionBuilder'; -import { GeneratorUtils } from '../../infrastructure/catbuffer/GeneratorUtils'; -import { KeyDto } from '../../infrastructure/catbuffer/KeyDto'; -import { SignatureDto } from '../../infrastructure/catbuffer/SignatureDto'; -import { TimestampDto } from '../../infrastructure/catbuffer/TimestampDto'; -import { TransferTransactionBuilder } from '../../infrastructure/catbuffer/TransferTransactionBuilder'; -import { UnresolvedAddressDto } from '../../infrastructure/catbuffer/UnresolvedAddressDto'; -import { UnresolvedMosaicBuilder } from '../../infrastructure/catbuffer/UnresolvedMosaicBuilder'; -import { UnresolvedMosaicIdDto } from '../../infrastructure/catbuffer/UnresolvedMosaicIdDto'; -import { Address } from '../account/Address'; -import { PublicAccount } from '../account/PublicAccount'; -import { NetworkType } from '../blockchain/NetworkType'; -import { EncryptedMessage } from '../message/EncryptedMessage'; -import { Message } from '../message/Message'; -import { MessageType } from '../message/MessageType'; -import { PlainMessage } from '../message/PlainMessage'; -import { Mosaic } from '../mosaic/Mosaic'; -import { NamespaceId } from '../namespace/NamespaceId'; -import { UInt64 } from '../UInt64'; -import { Deadline } from './Deadline'; -import { InnerTransaction } from './InnerTransaction'; -import { Transaction } from './Transaction'; -import { TransactionInfo } from './TransactionInfo'; -import { TransactionType } from './TransactionType'; -import { TransactionVersion } from './TransactionVersion'; +import {Convert, Convert as convert} from '../../core/format'; +import {UnresolvedMapping} from '../../core/utils/UnresolvedMapping'; +import {AmountDto} from '../../infrastructure/catbuffer/AmountDto'; +import {EmbeddedTransferTransactionBuilder} from '../../infrastructure/catbuffer/EmbeddedTransferTransactionBuilder'; +import {GeneratorUtils} from '../../infrastructure/catbuffer/GeneratorUtils'; +import {KeyDto} from '../../infrastructure/catbuffer/KeyDto'; +import {SignatureDto} from '../../infrastructure/catbuffer/SignatureDto'; +import {TimestampDto} from '../../infrastructure/catbuffer/TimestampDto'; +import {TransferTransactionBuilder} from '../../infrastructure/catbuffer/TransferTransactionBuilder'; +import {UnresolvedAddressDto} from '../../infrastructure/catbuffer/UnresolvedAddressDto'; +import {UnresolvedMosaicBuilder} from '../../infrastructure/catbuffer/UnresolvedMosaicBuilder'; +import {UnresolvedMosaicIdDto} from '../../infrastructure/catbuffer/UnresolvedMosaicIdDto'; +import {Address} from '../account/Address'; +import {PublicAccount} from '../account/PublicAccount'; +import {NetworkType} from '../blockchain/NetworkType'; +import {EncryptedMessage} from '../message/EncryptedMessage'; +import {Message} from '../message/Message'; +import {MessageType} from '../message/MessageType'; +import {PlainMessage} from '../message/PlainMessage'; +import {Mosaic} from '../mosaic/Mosaic'; +import {NamespaceId} from '../namespace/NamespaceId'; +import {UInt64} from '../UInt64'; +import {Deadline} from './Deadline'; +import {InnerTransaction} from './InnerTransaction'; +import {Transaction} from './Transaction'; +import {TransactionInfo} from './TransactionInfo'; +import {TransactionType} from './TransactionType'; +import {TransactionVersion} from './TransactionVersion'; /** * Transfer transactions contain data about transfers of mosaics and message to another account. @@ -95,7 +95,7 @@ export class TransferTransaction extends Transaction { /** * The address of the recipient address. */ - public readonly recipientAddress: Address | NamespaceId, + public readonly recipientAddress: Address | NamespaceId, /** * The array of Mosaic objects. */ @@ -153,7 +153,7 @@ export class TransferTransaction extends Transaction { if (this.message.type === MessageType.PersistentHarvestingDelegationMessage) { if (this.mosaics.length > 0) { throw new Error('PersistentDelegationRequestTransaction should be created without Mosaic'); - } else if (! /^[0-9a-fA-F]{208}$/.test(this.message.payload)) { + } else if (!/^[0-9a-fA-F]{208}$/.test(this.message.payload)) { throw new Error('PersistentDelegationRequestTransaction message is invalid'); } } @@ -214,14 +214,15 @@ export class TransferTransaction extends Transaction { // recipient and number of mosaics are static byte size const byteRecipientAddress = 25; const byteNumMosaics = 2; + const byteMosaicsCount = 1; // read message payload size - const bytePayload = convert.hexToUint8(convert.utf8ToHex(this.message.payload)).length; + const bytePayload = this.getMessageBuffer().length; - // mosaicId / namespaceId are written on 8 bytes - const byteMosaics = 8 * this.mosaics.length; + // mosaicId / namespaceId are written on 8 bytes + 8 bytes for the amount. + const byteMosaics = (8 + 8) * this.mosaics.length; - return byteSize + byteRecipientAddress + byteNumMosaics + bytePayload + byteMosaics; + return byteSize + byteMosaicsCount + byteRecipientAddress + byteNumMosaics + bytePayload + byteMosaics; } /** @@ -243,7 +244,7 @@ export class TransferTransaction extends Transaction { this.getMessageBuffer(), this.sortMosaics().map((mosaic) => { return new UnresolvedMosaicBuilder(new UnresolvedMosaicIdDto(mosaic.id.id.toDTO()), - new AmountDto(mosaic.amount.toDTO())); + new AmountDto(mosaic.amount.toDTO())); }), ); return transactionBuilder.serialize(); @@ -262,7 +263,7 @@ export class TransferTransaction extends Transaction { this.getMessageBuffer(), this.sortMosaics().map((mosaic) => { return new UnresolvedMosaicBuilder(new UnresolvedMosaicIdDto(mosaic.id.id.toDTO()), - new AmountDto(mosaic.amount.toDTO())); + new AmountDto(mosaic.amount.toDTO())); }), ); return transactionBuilder.serialize(); diff --git a/src/service/AggregateTransactionService.ts b/src/service/AggregateTransactionService.ts index 86f9f36d4e..5e61fe9655 100644 --- a/src/service/AggregateTransactionService.ts +++ b/src/service/AggregateTransactionService.ts @@ -99,7 +99,7 @@ export class AggregateTransactionService { */ if (innerTransaction.type === TransactionType.MODIFY_MULTISIG_ACCOUNT) { if ((innerTransaction as MultisigAccountModificationTransaction).modifications - .find((modification) => modification.modificiationType === CosignatoryModificationAction.Remove) !== undefined) { + .find((modification) => modification.modificationAction === CosignatoryModificationAction.Remove) !== undefined) { isMultisigRemoval = true; } } diff --git a/test/core/utils/TransactionMapping.spec.ts b/test/core/utils/TransactionMapping.spec.ts index b800c0ca40..d47d1de640 100644 --- a/test/core/utils/TransactionMapping.spec.ts +++ b/test/core/utils/TransactionMapping.spec.ts @@ -93,7 +93,7 @@ describe('TransactionMapping - createFromPayload', () => { .createFromPayload(signedTransaction.payload) as AccountAddressRestrictionTransaction; expect(transaction.restrictionType).to.be.equal(AccountRestrictionType.AllowIncomingAddress); - expect(transaction.modifications[0].modificationType).to.be.equal(AccountRestrictionModificationAction.Add); + expect(transaction.modifications[0].modificationAction).to.be.equal(AccountRestrictionModificationAction.Add); expect(transaction.modifications[0].value).to.be.equal('SBILTA367K2LX2FEXG5TFWAS7GEFYAGY7QLFBYKC'); }); @@ -117,7 +117,7 @@ describe('TransactionMapping - createFromPayload', () => { expect(transaction.restrictionType).to.be.equal(AccountRestrictionType.AllowMosaic); expect(transaction.modifications[0].value[0]).to.be.equal(2262289484); expect(transaction.modifications[0].value[1]).to.be.equal(3405110546); - expect(transaction.modifications[0].modificationType).to.be.equal(AccountRestrictionModificationAction.Add); + expect(transaction.modifications[0].modificationAction).to.be.equal(AccountRestrictionModificationAction.Add); }); it('should create AccountRestrictionOperationTransaction', () => { @@ -139,7 +139,7 @@ describe('TransactionMapping - createFromPayload', () => { .createFromPayload(signedTransaction.payload) as AccountAddressRestrictionTransaction; expect(transaction.restrictionType).to.be.equal(AccountRestrictionType.AllowIncomingTransactionType); expect(transaction.modifications[0].value).to.be.equal(operation); - expect(transaction.modifications[0].modificationType).to.be.equal(AccountRestrictionModificationAction.Add); + expect(transaction.modifications[0].modificationAction).to.be.equal(AccountRestrictionModificationAction.Add); }); it('should create AddressAliasTransaction', () => { @@ -407,7 +407,7 @@ describe('TransactionMapping - createFromPayload', () => { .to.be.equal(2); expect(transaction.minRemovalDelta) .to.be.equal(1); - expect(transaction.modifications[0].modificiationType) + expect(transaction.modifications[0].modificationAction) .to.be.equal(CosignatoryModificationAction.Add); expect(transaction.modifications[0].cosignatoryPublicAccount.publicKey) .to.be.equal('B0F93CBEE49EEB9953C6F3985B15A4F238E205584D8F924C621CBE4D7AC6EC24'); @@ -760,7 +760,7 @@ describe('TransactionMapping - createFromDTO (Transaction.toJSON() feed)', () => expect(transaction.modifications[0].value).to.be.equal('SBILTA367K2LX2FEXG5TFWAS7GEFYAGY7QLFBYKC'); expect(transaction.restrictionType).to.be.equal(AccountRestrictionType.AllowIncomingAddress); - expect(transaction.modifications[0].modificationType).to.be.equal(AccountRestrictionModificationAction.Add); + expect(transaction.modifications[0].modificationAction).to.be.equal(AccountRestrictionModificationAction.Add); }); it('should create AccountRestrictionMosaicTransaction', () => { diff --git a/test/model/restriction/AccountRestrictions.spec.ts b/test/model/restriction/AccountRestrictions.spec.ts index 2765d99228..b7a9a3d80f 100644 --- a/test/model/restriction/AccountRestrictions.spec.ts +++ b/test/model/restriction/AccountRestrictions.spec.ts @@ -29,7 +29,7 @@ describe('AccountRestrictions', () => { address: Address.createFromEncoded('9050B9837EFAB4BBE8A4B9BB32D812F9885C00D8FC1650E142'), restrictions: [{ restrictionType: AccountRestrictionType.AllowIncomingAddress, - values: [{modificationType: AccountRestrictionModificationAction.Add, + values: [{modificationAction: AccountRestrictionModificationAction.Add, value: 'SDUP5PLHDXKBX3UU5Q52LAY4WYEKGEWC6IB3VBFM', }], }], @@ -49,8 +49,8 @@ describe('AccountRestrictions', () => { deepEqual(accountRestrictions.restrictions.length, accountRestrictionsDTO.restrictions.length); deepEqual(accountRestrictions.restrictions[0].restrictionType, accountRestrictionsDTO.restrictions[0].restrictionType); deepEqual(accountRestrictions.restrictions[0].values.length, accountRestrictionsDTO.restrictions[0].values.length); - deepEqual((accountRestrictions.restrictions[0].values[0] as any).modificationType, - accountRestrictionsDTO.restrictions[0].values[0].modificationType); + deepEqual((accountRestrictions.restrictions[0].values[0] as any).modificationAction, + accountRestrictionsDTO.restrictions[0].values[0].modificationAction); deepEqual((accountRestrictions.restrictions[0].values[0] as any).value, accountRestrictionsDTO.restrictions[0].values[0].value); }); }); diff --git a/test/model/restriction/AccountRestrictionsInfo.spec.ts b/test/model/restriction/AccountRestrictionsInfo.spec.ts index 3b4a8fdbec..adcd70b4cb 100644 --- a/test/model/restriction/AccountRestrictionsInfo.spec.ts +++ b/test/model/restriction/AccountRestrictionsInfo.spec.ts @@ -32,7 +32,7 @@ describe('AccountRestrictionsInfo', () => { address: '9050B9837EFAB4BBE8A4B9BB32D812F9885C00D8FC1650E142', restrictions: [{ restrictionType: AccountRestrictionType.AllowIncomingAddress, - values: [{modificationType: AccountRestrictionModificationAction.Add, + values: [{modificationAction: AccountRestrictionModificationAction.Add, value: 'SDUP5PLHDXKBX3UU5Q52LAY4WYEKGEWC6IB3VBFM', }], }], diff --git a/test/model/transaction/AccountLinkTransaction.spec.ts b/test/model/transaction/AccountLinkTransaction.spec.ts index 36a9033600..48ac5bee9b 100644 --- a/test/model/transaction/AccountLinkTransaction.spec.ts +++ b/test/model/transaction/AccountLinkTransaction.spec.ts @@ -22,6 +22,7 @@ import { Deadline } from '../../../src/model/transaction/Deadline'; import { LinkAction } from '../../../src/model/transaction/LinkAction'; import { UInt64 } from '../../../src/model/UInt64'; import { TestingAccount } from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('AccountLinkTransaction', () => { let account: Account; @@ -101,6 +102,7 @@ describe('AccountLinkTransaction', () => { LinkAction.Unlink, NetworkType.MIJIN_TEST, ); + expect(Convert.hexToUint8(accountLinkTransaction.serialize()).length).to.be.equal(accountLinkTransaction.size); expect(accountLinkTransaction.size).to.be.equal(153); }); }); diff --git a/test/model/transaction/AccountMetadataTransaction.spec.ts b/test/model/transaction/AccountMetadataTransaction.spec.ts index 9c74af9fb3..c039b9c277 100644 --- a/test/model/transaction/AccountMetadataTransaction.spec.ts +++ b/test/model/transaction/AccountMetadataTransaction.spec.ts @@ -91,7 +91,7 @@ describe('AccountMetadataTransaction', () => { }); describe('size', () => { - it('should return 153 for AccountMetadataTransaction byte size', () => { + it('should return 174 for AccountMetadataTransaction byte size', () => { const accountMetadataTransaction = AccountMetadataTransaction.create( Deadline.create(), account.publicKey, @@ -100,7 +100,9 @@ describe('AccountMetadataTransaction', () => { Convert.uint8ToUtf8(new Uint8Array(10)), NetworkType.MIJIN_TEST, ); - expect(accountMetadataTransaction.size).to.be.equal(172); + + expect(Convert.hexToUint8(accountMetadataTransaction.serialize()).length).to.be.equal(accountMetadataTransaction.size); + expect(accountMetadataTransaction.size).to.be.equal(174); }); }); }); diff --git a/test/model/transaction/AccountRestrictionTransaction.spec.ts b/test/model/transaction/AccountRestrictionTransaction.spec.ts index a896008204..e48b1db9fd 100644 --- a/test/model/transaction/AccountRestrictionTransaction.spec.ts +++ b/test/model/transaction/AccountRestrictionTransaction.spec.ts @@ -27,6 +27,7 @@ import {Deadline} from '../../../src/model/transaction/Deadline'; import { TransactionType } from '../../../src/model/transaction/TransactionType'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('AccountRestrictionTransaction', () => { let account: Account; @@ -40,7 +41,7 @@ describe('AccountRestrictionTransaction', () => { AccountRestrictionModificationAction.Add, address, ); - expect(addressRestrictionFilter.modificationType).to.be.equal(AccountRestrictionModificationAction.Add); + expect(addressRestrictionFilter.modificationAction).to.be.equal(AccountRestrictionModificationAction.Add); expect(addressRestrictionFilter.value).to.be.equal(address.plain()); }); @@ -50,7 +51,7 @@ describe('AccountRestrictionTransaction', () => { AccountRestrictionModificationAction.Add, mosaicId, ); - expect(mosaicRestrictionFilter.modificationType).to.be.equal(AccountRestrictionModificationAction.Add); + expect(mosaicRestrictionFilter.modificationAction).to.be.equal(AccountRestrictionModificationAction.Add); expect(mosaicRestrictionFilter.value[0]).to.be.equal(mosaicId.id.lower); expect(mosaicRestrictionFilter.value[1]).to.be.equal(mosaicId.id.higher); }); @@ -61,7 +62,7 @@ describe('AccountRestrictionTransaction', () => { AccountRestrictionModificationAction.Add, operation, ); - expect(operationRestrictionFilter.modificationType).to.be.equal(AccountRestrictionModificationAction.Add); + expect(operationRestrictionFilter.modificationAction).to.be.equal(AccountRestrictionModificationAction.Add); expect(operationRestrictionFilter.value).to.be.equal(operation); }); @@ -79,6 +80,7 @@ describe('AccountRestrictionTransaction', () => { NetworkType.MIJIN_TEST, ); + expect(Convert.hexToUint8(addressRestrictionTransaction.serialize()).length).to.be.equal(addressRestrictionTransaction.size); expect(addressRestrictionTransaction.size).to.be.equal(148); }); diff --git a/test/model/transaction/AddressAliasTransaction.spec.ts b/test/model/transaction/AddressAliasTransaction.spec.ts index 59b1ce1144..0a6892132c 100644 --- a/test/model/transaction/AddressAliasTransaction.spec.ts +++ b/test/model/transaction/AddressAliasTransaction.spec.ts @@ -25,6 +25,7 @@ import {AddressAliasTransaction} from '../../../src/model/transaction/AddressAli import {Deadline} from '../../../src/model/transaction/Deadline'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('AddressAliasTransaction', () => { let account: Account; @@ -100,6 +101,7 @@ describe('AddressAliasTransaction', () => { address, NetworkType.MIJIN_TEST, ); + expect(Convert.hexToUint8(addressAliasTransaction.serialize()).length).to.be.equal(addressAliasTransaction.size); expect(addressAliasTransaction.size).to.be.equal(154); }); }); diff --git a/test/model/transaction/AggregateTransaction.spec.ts b/test/model/transaction/AggregateTransaction.spec.ts index 46730b5b4b..4cff77c2e0 100644 --- a/test/model/transaction/AggregateTransaction.spec.ts +++ b/test/model/transaction/AggregateTransaction.spec.ts @@ -43,6 +43,7 @@ import { TransactionType } from '../../../src/model/transaction/TransactionType' import {TransferTransaction} from '../../../src/model/transaction/TransferTransaction'; import {UInt64} from '../../../src/model/UInt64'; import {Cosignatory2Account, CosignatoryAccount, MultisigAccount, TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('AggregateTransaction', () => { let account: Account; @@ -376,10 +377,10 @@ describe('AggregateTransaction', () => { { cosignatoryPublicKey: '589B73FBC22063E9AE6FBAC67CB9C6EA865EF556E5' + 'FB8B7310D45F77C1250B97', - type: 0, + modificationAction: 0, }, ], - signer: 'B4F12E7C9F6946091E2CB8B6D3A12B50D17CCBBF646386EA27CE2946A7423DCF', + signerPublicKey: 'B4F12E7C9F6946091E2CB8B6D3A12B50D17CCBBF646386EA27CE2946A7423DCF', type: 16725, version: 36865, }, @@ -401,6 +402,10 @@ describe('AggregateTransaction', () => { expect(aggregateTransaction.signedByAccount( PublicAccount.createFromPublicKey('B4F12E7C9F6946091E2CB8B6D3A12B50D17CCBBF646386EA27CE2946A7423DCF', NetworkType.MIJIN_TEST))).to.be.equal(false); + + expect(aggregateTransaction.innerTransactions[0].signer!.publicKey).to.be.equal('B4F12E7C9F6946091E2CB8B6D3A12B50D17CCBBF646386EA27CE2946A7423DCF'); + + expect(Convert.hexToUint8(aggregateTransaction.serialize()).length).to.be.equal(aggregateTransaction.size); }); it('should have type 0x4141 when it\'s complete', () => { @@ -559,7 +564,9 @@ describe('AggregateTransaction', () => { NetworkType.MIJIN_TEST, [], ); - expect(aggregateTransaction.size).to.be.equal(120 + 4 + 158); + + expect(Convert.hexToUint8(aggregateTransaction.serialize()).length).to.be.equal(aggregateTransaction.size); + expect(aggregateTransaction.size).to.be.equal(212); }); }); }); diff --git a/test/model/transaction/HashLockTransaction.spec.ts b/test/model/transaction/HashLockTransaction.spec.ts index 1c0c627742..03bcf563fe 100644 --- a/test/model/transaction/HashLockTransaction.spec.ts +++ b/test/model/transaction/HashLockTransaction.spec.ts @@ -21,6 +21,7 @@ import {Deadline} from '../../../src/model/transaction/Deadline'; import {HashLockTransaction} from '../../../src/model/transaction/HashLockTransaction'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('HashLockTransaction', () => { const account = TestingAccount; @@ -41,6 +42,7 @@ describe('HashLockTransaction', () => { expect(transaction.mosaic.id).to.be.equal(NetworkCurrencyMosaic.NAMESPACE_ID); expect(transaction.mosaic.amount.compact()).to.be.equal(10000000); expect(transaction.hash).to.be.equal(signedTransaction.hash); + expect(Convert.hexToUint8(transaction.serialize()).length).to.be.equal(transaction.size); }); it('should throw exception if it is not a aggregate bonded tx', () => { diff --git a/test/model/transaction/LockFundsTransaction.spec.ts b/test/model/transaction/LockFundsTransaction.spec.ts index 779e6166d7..5b80680c1f 100644 --- a/test/model/transaction/LockFundsTransaction.spec.ts +++ b/test/model/transaction/LockFundsTransaction.spec.ts @@ -23,6 +23,7 @@ import {Deadline} from '../../../src/model/transaction/Deadline'; import {LockFundsTransaction} from '../../../src/model/transaction/LockFundsTransaction'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('LockFundsTransaction', () => { let account: Account; @@ -47,6 +48,7 @@ describe('LockFundsTransaction', () => { expect(lockFundsTransaction.maxFee.higher).to.be.equal(0); expect(lockFundsTransaction.maxFee.lower).to.be.equal(0); + expect(Convert.hexToUint8(lockFundsTransaction.serialize()).length).to.be.equal(lockFundsTransaction.size); }); it('should filled maxFee override transaction maxFee', () => { diff --git a/test/model/transaction/MosaicAddressRestrictionTransaction.spec.ts b/test/model/transaction/MosaicAddressRestrictionTransaction.spec.ts index 6afcb4bdf1..559caaa158 100644 --- a/test/model/transaction/MosaicAddressRestrictionTransaction.spec.ts +++ b/test/model/transaction/MosaicAddressRestrictionTransaction.spec.ts @@ -23,6 +23,7 @@ import {Deadline} from '../../../src/model/transaction/Deadline'; import {MosaicAddressRestrictionTransaction} from '../../../src/model/transaction/MosaicAddressRestrictionTransaction'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('MosaicAddressRestrictionTransaction', () => { let account: Account; @@ -130,5 +131,8 @@ describe('MosaicAddressRestrictionTransaction', () => { 240, 288, )).to.be.equal('010000000000000001000000000000009151776168D24257'); + + + expect(Convert.hexToUint8(transaction.serialize()).length).to.be.equal(transaction.size); }); }); diff --git a/test/model/transaction/MosaicAliasTransaction.spec.ts b/test/model/transaction/MosaicAliasTransaction.spec.ts index 34184eff95..6a49b7b893 100644 --- a/test/model/transaction/MosaicAliasTransaction.spec.ts +++ b/test/model/transaction/MosaicAliasTransaction.spec.ts @@ -24,6 +24,7 @@ import {Deadline} from '../../../src/model/transaction/Deadline'; import {MosaicAliasTransaction} from '../../../src/model/transaction/MosaicAliasTransaction'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('MosaicAliasTransaction', () => { let account: Account; @@ -101,6 +102,7 @@ describe('MosaicAliasTransaction', () => { NetworkType.MIJIN_TEST, ); expect(mosaicAliasTransaction.size).to.be.equal(137); + expect(Convert.hexToUint8(mosaicAliasTransaction.serialize()).length).to.be.equal(mosaicAliasTransaction.size); }); }); }); diff --git a/test/model/transaction/MosaicDefinitionTransaction.spec.ts b/test/model/transaction/MosaicDefinitionTransaction.spec.ts index fb93b54f56..dccc15f581 100644 --- a/test/model/transaction/MosaicDefinitionTransaction.spec.ts +++ b/test/model/transaction/MosaicDefinitionTransaction.spec.ts @@ -24,6 +24,7 @@ import {Deadline} from '../../../src/model/transaction/Deadline'; import {MosaicDefinitionTransaction} from '../../../src/model/transaction/MosaicDefinitionTransaction'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('MosaicDefinitionTransaction', () => { let account: Account; @@ -119,7 +120,7 @@ describe('MosaicDefinitionTransaction', () => { }); describe('size', () => { - it('should return 144 for MosaicDefinition transaction byte size', () => { + it('should return 142 for MosaicDefinition transaction byte size', () => { const mosaicDefinitionTransaction = MosaicDefinitionTransaction.create( Deadline.create(), new MosaicNonce(new Uint8Array([0xE6, 0xDE, 0x84, 0xB8])), // nonce @@ -129,7 +130,8 @@ describe('MosaicDefinitionTransaction', () => { UInt64.fromUint(1000), NetworkType.MIJIN_TEST, ); - expect(mosaicDefinitionTransaction.size).to.be.equal(144); + expect(mosaicDefinitionTransaction.size).to.be.equal(142); + expect(Convert.hexToUint8(mosaicDefinitionTransaction.serialize()).length).to.be.equal(mosaicDefinitionTransaction.size); }); }); @@ -157,5 +159,6 @@ describe('MosaicDefinitionTransaction', () => { signedTransaction.payload.length, )).to.be.equal('E6DE84B8010000000000000000030000000000000000'); + }); }); diff --git a/test/model/transaction/MosaicGlobalRestrictionTransaction.spec.ts b/test/model/transaction/MosaicGlobalRestrictionTransaction.spec.ts index 991e7ef55b..1139d72d91 100644 --- a/test/model/transaction/MosaicGlobalRestrictionTransaction.spec.ts +++ b/test/model/transaction/MosaicGlobalRestrictionTransaction.spec.ts @@ -24,6 +24,7 @@ import {Deadline} from '../../../src/model/transaction/Deadline'; import {MosaicGlobalRestrictionTransaction} from '../../../src/model/transaction/MosaicGlobalRestrictionTransaction'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('MosaicGlobalRestrictionTransaction', () => { let account: Account; @@ -95,6 +96,8 @@ describe('MosaicGlobalRestrictionTransaction', () => { signedTransaction.payload.length, )).to.be.equal('C51FB4C93FCA509502000000000000000100000000000000090000000000000001080000000000000006'); + expect(Convert.hexToUint8(mosaicGlobalRestrictionTransaction.serialize()).length).to.be.equal(mosaicGlobalRestrictionTransaction.size); + }); it('should createComplete an MosaicGlobalRestrictionTransaction use mosaic alias reference', () => { diff --git a/test/model/transaction/MosaicMetadataTransaction.spec.ts b/test/model/transaction/MosaicMetadataTransaction.spec.ts index 70197feb9e..85e7ffd88d 100644 --- a/test/model/transaction/MosaicMetadataTransaction.spec.ts +++ b/test/model/transaction/MosaicMetadataTransaction.spec.ts @@ -119,7 +119,7 @@ describe('MosaicMetadataTransaction', () => { }); describe('size', () => { - it('should return 153 for MosaicMetadataTransaction byte size', () => { + it('should return 182 for MosaicMetadataTransaction byte size', () => { const mosaicMetadataTransaction = MosaicMetadataTransaction.create( Deadline.create(), account.publicKey, @@ -129,7 +129,9 @@ describe('MosaicMetadataTransaction', () => { Convert.uint8ToUtf8(new Uint8Array(10)), NetworkType.MIJIN_TEST, ); - expect(mosaicMetadataTransaction.size).to.be.equal(180); + expect(mosaicMetadataTransaction.size).to.be.equal(182); + expect(Convert.hexToUint8(mosaicMetadataTransaction.serialize()).length).to.be.equal(mosaicMetadataTransaction.size); + }); }); }); diff --git a/test/model/transaction/MosaicSupplyChangeTransaction.spec.ts b/test/model/transaction/MosaicSupplyChangeTransaction.spec.ts index 4e11849e4e..ec543156ae 100644 --- a/test/model/transaction/MosaicSupplyChangeTransaction.spec.ts +++ b/test/model/transaction/MosaicSupplyChangeTransaction.spec.ts @@ -23,6 +23,7 @@ import {Deadline} from '../../../src/model/transaction/Deadline'; import {MosaicSupplyChangeTransaction} from '../../../src/model/transaction/MosaicSupplyChangeTransaction'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('MosaicSupplyChangeTransaction', () => { let account: Account; @@ -96,6 +97,7 @@ describe('MosaicSupplyChangeTransaction', () => { NetworkType.MIJIN_TEST, ); expect(mosaicSupplyChangeTransaction.size).to.be.equal(137); + expect(Convert.hexToUint8(mosaicSupplyChangeTransaction.serialize()).length).to.be.equal(mosaicSupplyChangeTransaction.size); }); }); }); diff --git a/test/model/transaction/MultisigAccountModificationTransaction.spec.ts b/test/model/transaction/MultisigAccountModificationTransaction.spec.ts index 33cb731df5..bb32e2f1fd 100644 --- a/test/model/transaction/MultisigAccountModificationTransaction.spec.ts +++ b/test/model/transaction/MultisigAccountModificationTransaction.spec.ts @@ -24,6 +24,7 @@ import {MultisigAccountModificationTransaction} from '../../../src/model/transac import {MultisigCosignatoryModification} from '../../../src/model/transaction/MultisigCosignatoryModification'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('MultisigAccountModificationTransaction', () => { let account: Account; @@ -101,11 +102,11 @@ describe('MultisigAccountModificationTransaction', () => { .to.be.equal(1); expect(modifyMultisigAccountTransaction.modifications.length) .to.be.equal(2); - expect(modifyMultisigAccountTransaction.modifications[0].modificiationType) + expect(modifyMultisigAccountTransaction.modifications[0].modificationAction) .to.be.equal(CosignatoryModificationAction.Add); expect(modifyMultisigAccountTransaction.modifications[0].cosignatoryPublicAccount.publicKey) .to.be.equal('B0F93CBEE49EEB9953C6F3985B15A4F238E205584D8F924C621CBE4D7AC6EC24'); - expect(modifyMultisigAccountTransaction.modifications[1].modificiationType) + expect(modifyMultisigAccountTransaction.modifications[1].modificationAction) .to.be.equal(CosignatoryModificationAction.Add); expect(modifyMultisigAccountTransaction.modifications[1].cosignatoryPublicAccount.publicKey) .to.be.equal('B1B5581FC81A6970DEE418D2C2978F2724228B7B36C5C6DF71B0162BB04778B4'); @@ -134,6 +135,7 @@ describe('MultisigAccountModificationTransaction', () => { NetworkType.MIJIN_TEST, ); expect(modifyMultisigAccountTransaction.size).to.be.equal(156); + expect(Convert.hexToUint8(modifyMultisigAccountTransaction.serialize()).length).to.be.equal(modifyMultisigAccountTransaction.size); }); }); }); diff --git a/test/model/transaction/MultisigCosignatoryModification.spec.ts b/test/model/transaction/MultisigCosignatoryModification.spec.ts index 078f90fa83..125d732869 100644 --- a/test/model/transaction/MultisigCosignatoryModification.spec.ts +++ b/test/model/transaction/MultisigCosignatoryModification.spec.ts @@ -29,7 +29,7 @@ describe('MultisigCosignatoryModification', () => { ); expect(multisigCosignatoryModification.cosignatoryPublicAccount.publicKey) .to.be.equal('C52C211CF935C61D65F26B253AA260416F018C3D21E4D184A7671F403C849BBB'); - expect(multisigCosignatoryModification.modificiationType).to.be.equal(CosignatoryModificationAction.Add); + expect(multisigCosignatoryModification.modificationAction).to.be.equal(CosignatoryModificationAction.Add); }); it('should create Add MultisigCosignatoryModification and get toDTO correctly', () => { @@ -39,7 +39,7 @@ describe('MultisigCosignatoryModification', () => { ).toDTO(); expect(multisigCosignatoryModification.cosignatoryPublicKey) .to.be.equal('C52C211CF935C61D65F26B253AA260416F018C3D21E4D184A7671F403C849BBB'); - expect(multisigCosignatoryModification.modificiationType).to.be.equal(CosignatoryModificationAction.Add); + expect(multisigCosignatoryModification.modificationAction).to.be.equal(CosignatoryModificationAction.Add); }); it('should create Remove MultisigCosignatoryModification', () => { @@ -49,7 +49,7 @@ describe('MultisigCosignatoryModification', () => { ); expect(multisigCosignatoryModification.cosignatoryPublicAccount.publicKey) .to.be.equal('C52C211CF935C61D65F26B253AA260416F018C3D21E4D184A7671F403C849BBB'); - expect(multisigCosignatoryModification.modificiationType).to.be.equal(CosignatoryModificationAction.Remove); + expect(multisigCosignatoryModification.modificationAction).to.be.equal(CosignatoryModificationAction.Remove); }); it('should create Remove MultisigCosignatoryModification and get toDTO correctly', () => { @@ -59,6 +59,6 @@ describe('MultisigCosignatoryModification', () => { ).toDTO(); expect(multisigCosignatoryModification.cosignatoryPublicKey) .to.be.equal('C52C211CF935C61D65F26B253AA260416F018C3D21E4D184A7671F403C849BBB'); - expect(multisigCosignatoryModification.modificiationType).to.be.equal(CosignatoryModificationAction.Remove); + expect(multisigCosignatoryModification.modificationAction).to.be.equal(CosignatoryModificationAction.Remove); }); }); diff --git a/test/model/transaction/NamespaceMetadataTransaction.spec.ts b/test/model/transaction/NamespaceMetadataTransaction.spec.ts index 2becda9cb4..78e18271ea 100644 --- a/test/model/transaction/NamespaceMetadataTransaction.spec.ts +++ b/test/model/transaction/NamespaceMetadataTransaction.spec.ts @@ -97,7 +97,7 @@ describe('NamespaceMetadataTransaction', () => { }); describe('size', () => { - it('should return 153 for NamespaceMetadataTransaction byte size', () => { + it('should return 182 for NamespaceMetadataTransaction byte size', () => { const namespaceMetadataTransaction = NamespaceMetadataTransaction.create( Deadline.create(), account.publicKey, @@ -107,7 +107,8 @@ describe('NamespaceMetadataTransaction', () => { Convert.uint8ToUtf8(new Uint8Array(10)), NetworkType.MIJIN_TEST, ); - expect(namespaceMetadataTransaction.size).to.be.equal(180); + expect(namespaceMetadataTransaction.size).to.be.equal(182); + expect(Convert.hexToUint8(namespaceMetadataTransaction.serialize()).length).to.be.equal(namespaceMetadataTransaction.size); }); }); }); diff --git a/test/model/transaction/NamespaceRegistrationTransaction.spec.ts b/test/model/transaction/NamespaceRegistrationTransaction.spec.ts index ddb27b4172..6a7bab3168 100644 --- a/test/model/transaction/NamespaceRegistrationTransaction.spec.ts +++ b/test/model/transaction/NamespaceRegistrationTransaction.spec.ts @@ -22,6 +22,7 @@ import {Deadline} from '../../../src/model/transaction/Deadline'; import {NamespaceRegistrationTransaction} from '../../../src/model/transaction/NamespaceRegistrationTransaction'; import {UInt64} from '../../../src/model/UInt64'; import {TestingAccount} from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('NamespaceRegistrationTransaction', () => { let account: Account; @@ -117,6 +118,7 @@ describe('NamespaceRegistrationTransaction', () => { NetworkType.MIJIN_TEST, ); expect(registerNamespaceTransaction.size).to.be.equal(157); + expect(Convert.hexToUint8(registerNamespaceTransaction.serialize()).length).to.be.equal(registerNamespaceTransaction.size); }); }); }); diff --git a/test/model/transaction/SecretLockTransaction.spec.ts b/test/model/transaction/SecretLockTransaction.spec.ts index 29f497d441..e6ce810ca8 100644 --- a/test/model/transaction/SecretLockTransaction.spec.ts +++ b/test/model/transaction/SecretLockTransaction.spec.ts @@ -17,7 +17,7 @@ import {deepEqual} from 'assert'; import {expect} from 'chai'; import * as CryptoJS from 'crypto-js'; import {keccak_256, sha3_256} from 'js-sha3'; -import {Convert as convert} from '../../../src/core/format'; +import {Convert, Convert as convert} from '../../../src/core/format'; import { Account } from '../../../src/model/account/Account'; import {Address} from '../../../src/model/account/Address'; import {NetworkType} from '../../../src/model/blockchain/NetworkType'; @@ -242,6 +242,7 @@ describe('SecretLockTransaction', () => { NetworkType.MIJIN_TEST, ); expect(secretLockTransaction.size).to.be.equal(202); + expect(Convert.hexToUint8(secretLockTransaction.serialize()).length).to.be.equal(secretLockTransaction.size); }); }); }); diff --git a/test/model/transaction/SecretProofTransaction.spec.ts b/test/model/transaction/SecretProofTransaction.spec.ts index 951b1ab8f0..b2170b4b50 100644 --- a/test/model/transaction/SecretProofTransaction.spec.ts +++ b/test/model/transaction/SecretProofTransaction.spec.ts @@ -16,7 +16,7 @@ import {expect} from 'chai'; import * as CryptoJS from 'crypto-js'; import {keccak_256, sha3_256} from 'js-sha3'; -import {Convert as convert} from '../../../src/core/format'; +import {Convert, Convert as convert} from '../../../src/core/format'; import { Account } from '../../../src/model/account/Account'; import {NetworkType} from '../../../src/model/blockchain/NetworkType'; import {Deadline} from '../../../src/model/transaction/Deadline'; @@ -189,6 +189,7 @@ describe('SecretProofTransaction', () => { NetworkType.MIJIN_TEST, ); expect(secretProofTransaction.size).to.be.equal(212); + expect(Convert.hexToUint8(secretProofTransaction.serialize()).length).to.be.equal(secretProofTransaction.size); }); }); diff --git a/test/model/transaction/TransferTransaction.spec.ts b/test/model/transaction/TransferTransaction.spec.ts index c4f81a4e46..466824a8dd 100644 --- a/test/model/transaction/TransferTransaction.spec.ts +++ b/test/model/transaction/TransferTransaction.spec.ts @@ -30,6 +30,7 @@ import { Deadline } from '../../../src/model/transaction/Deadline'; import { TransferTransaction } from '../../../src/model/transaction/TransferTransaction'; import {UInt64} from '../../../src/model/UInt64'; import { TestingAccount } from '../../conf/conf.spec'; +import {Convert} from "../../../src/core/format"; describe('TransferTransaction', () => { let account: Account; @@ -188,7 +189,7 @@ describe('TransferTransaction', () => { }); describe('size', () => { - it('should return 158 for TransferTransaction with 1 mosaic and message NEM', () => { + it('should return 168 for TransferTransaction with 1 mosaic and message NEM', () => { const transaction = TransferTransaction.create( Deadline.create(), Address.createFromRawAddress('SBILTA367K2LX2FEXG5TFWAS7GEFYAGY7QLFBYKC'), @@ -198,7 +199,8 @@ describe('TransferTransaction', () => { PlainMessage.create('NEM'), NetworkType.MIJIN_TEST, ); - expect(transaction.size).to.be.equal(158); + expect(Convert.hexToUint8(transaction.serialize()).length).to.be.equal(transaction.size); + expect(transaction.size).to.be.equal(168); }); });