Skip to content

Commit dc6135d

Browse files
authored
Merge pull request #346 from evias/master
#345: add method addCosignatures to fill cosignatures offline
2 parents c7c8b28 + c69cd12 commit dc6135d

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

src/model/transaction/AggregateTransaction.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,17 @@ export class AggregateTransaction extends Transaction {
194194
return Object.assign({__proto__: Object.getPrototypeOf(this)}, this, {innerTransactions});
195195
}
196196

197+
/**
198+
* @description add cosignatures to current list
199+
* @param {AggregateTransactionCosignature[]} transaction
200+
* @returns {AggregateTransaction}
201+
* @memberof AggregateTransaction
202+
*/
203+
public addCosignatures(cosigs: AggregateTransactionCosignature[]): AggregateTransaction {
204+
const cosignatures = this.cosignatures.concat(cosigs);
205+
return Object.assign({__proto__: Object.getPrototypeOf(this)}, this, {cosignatures});
206+
}
207+
197208
/**
198209
* @internal
199210
* Sign transaction with cosignatories creating a new SignedTransaction

test/model/transaction/AggregateTransaction.spec.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import {MosaicNonce} from '../../../src/model/mosaic/MosaicNonce';
3030
import {MosaicSupplyChangeAction} from '../../../src/model/mosaic/MosaicSupplyChangeAction';
3131
import { NetworkCurrencyMosaic } from '../../../src/model/mosaic/NetworkCurrencyMosaic';
3232
import {AggregateTransaction} from '../../../src/model/transaction/AggregateTransaction';
33+
import {AggregateTransactionCosignature} from '../../../src/model/transaction/AggregateTransactionCosignature';
3334
import {CosignatoryModificationAction} from '../../../src/model/transaction/CosignatoryModificationAction';
3435
import { CosignatureSignedTransaction } from '../../../src/model/transaction/CosignatureSignedTransaction';
3536
import { CosignatureTransaction } from '../../../src/model/transaction/CosignatureTransaction';
@@ -547,6 +548,35 @@ describe('AggregateTransaction', () => {
547548
expect(aggregateTransaction.innerTransactions.length).to.be.equal(2);
548549
});
549550

551+
it('Should be able to add cosignatures to current aggregate tx', () => {
552+
const transferTx1 = TransferTransaction.create(Deadline.create(),
553+
account.address,
554+
[],
555+
PlainMessage.create('a to b'),
556+
NetworkType.MIJIN_TEST);
557+
let aggregateTransaction = AggregateTransaction.createComplete(
558+
Deadline.create(),
559+
[transferTx1.toAggregate(account.publicAccount)],
560+
NetworkType.MIJIN_TEST,
561+
[],
562+
);
563+
564+
expect(aggregateTransaction.type).to.be.equal(TransactionType.AGGREGATE_COMPLETE);
565+
expect(aggregateTransaction.cosignatures.length).to.be.equal(0);
566+
567+
// add cosignature after creation
568+
const signedTransaction = aggregateTransaction.signWith(account, generationHash);
569+
const cosignature = new AggregateTransactionCosignature(
570+
signedTransaction.payload,
571+
PublicAccount.createFromPublicKey(signedTransaction.signerPublicKey, NetworkType.MIJIN_TEST),
572+
);
573+
574+
aggregateTransaction = aggregateTransaction.addCosignatures([cosignature]);
575+
576+
expect(aggregateTransaction.type).to.be.equal(TransactionType.AGGREGATE_COMPLETE);
577+
expect(aggregateTransaction.cosignatures.length).to.be.equal(1);
578+
});
579+
550580
describe('size', () => {
551581
it('should return 282 for AggregateTransaction byte size with TransferTransaction with 1 mosaic and message NEM', () => {
552582
const transaction = TransferTransaction.create(

0 commit comments

Comments
 (0)