Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions e2e/infrastructure/AccountHttp.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ describe('AccountHttp', () => {
Deadline.create(),
2,
1,
[cosignAccount1.publicAccount, cosignAccount2.publicAccount, cosignAccount3.publicAccount],
[cosignAccount1.address, cosignAccount2.address, cosignAccount3.address],
[],
networkType,
helper.maxFee,
Expand Down Expand Up @@ -177,21 +177,6 @@ describe('AccountHttp', () => {
});
});

describe('getMultisigAccountGraphInfo', () => {
it('should call getMultisigAccountGraphInfo successfully', async () => {
const multisigAccountGraphInfo = await multisigRepository
.getMultisigAccountGraphInfo(multisigAccount.publicAccount.address)
.toPromise();
expect(multisigAccountGraphInfo.multisigAccounts.get(0)![0].account.publicKey).to.be.equal(multisigAccount.publicKey);
});
});
describe('getMultisigAccountInfo', () => {
it('should call getMultisigAccountInfo successfully', async () => {
const multisigAccountInfo = await multisigRepository.getMultisigAccountInfo(multisigAccount.publicAccount.address).toPromise();
expect(multisigAccountInfo.account.publicKey).to.be.equal(multisigAccount.publicKey);
});
});

describe('transactions', () => {
it('should not return accounts when account does not exist', () => {
return accountRepository
Expand All @@ -218,6 +203,21 @@ describe('AccountHttp', () => {
});
});

describe('getMultisigAccountGraphInfo', () => {
it('should call getMultisigAccountGraphInfo successfully', async () => {
await new Promise((resolve) => setTimeout(resolve, 3000));
const multisigAccountGraphInfo = await multisigRepository
.getMultisigAccountGraphInfo(multisigAccount.publicAccount.address)
.toPromise();
expect(multisigAccountGraphInfo.multisigEntries.get(0)![0].accountAddress.plain()).to.be.equal(multisigAccount.address.plain());
});
});
describe('getMultisigAccountInfo', () => {
it('should call getMultisigAccountInfo successfully', async () => {
const multisigAccountInfo = await multisigRepository.getMultisigAccountInfo(multisigAccount.publicAccount.address).toPromise();
expect(multisigAccountInfo.accountAddress.plain()).to.be.equal(multisigAccount.address.plain());
});
});
/**
* =========================
* House Keeping
Expand Down Expand Up @@ -245,7 +245,7 @@ describe('AccountHttp', () => {
-1,
0,
[],
[cosignAccount1.publicAccount],
[cosignAccount1.address],
networkType,
helper.maxFee,
);
Expand All @@ -254,7 +254,7 @@ describe('AccountHttp', () => {
0,
0,
[],
[cosignAccount2.publicAccount],
[cosignAccount2.address],
networkType,
helper.maxFee,
);
Expand All @@ -264,7 +264,7 @@ describe('AccountHttp', () => {
-1,
-1,
[],
[cosignAccount3.publicAccount],
[cosignAccount3.address],
networkType,
helper.maxFee,
);
Expand Down
2 changes: 1 addition & 1 deletion e2e/infrastructure/BlockHttp.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ describe('BlockHttp', () => {
expect(blockInfo.height.higher).to.be.equal(0);
expect(blockInfo.timestamp.lower).to.be.equal(0);
expect(blockInfo.timestamp.higher).to.be.equal(0);
expect(blockInfo.beneficiaryPublicKey).not.to.be.undefined;
expect(blockInfo.beneficiaryAddress).not.to.be.undefined;
expect(blockInfo.numStatements).not.to.be.undefined;
});
});
Expand Down
4 changes: 3 additions & 1 deletion e2e/infrastructure/IntegrationTestHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,9 @@ export class IntegrationTestHelper {
this.account3 = this.createAccount(parsedYaml.nemesis_addresses[2]);
this.multisigAccount = this.createAccount(parsedYaml.nemesis_addresses[3]);
this.cosignAccount1 = this.createAccount(parsedYaml.nemesis_addresses[4]);
this.cosignAccount4 = this.createAccount(parsedYaml.nemesis_addresses[5]);
this.cosignAccount2 = this.createAccount(parsedYaml.nemesis_addresses[5]);
this.cosignAccount3 = this.createAccount(parsedYaml.nemesis_addresses[6]);
this.cosignAccount4 = this.createAccount(parsedYaml.nemesis_addresses[7]);
this.harvestingAccount = this.createAccount(parsedYaml.nemesis_addresses_harvesting[0]);
return resolve(this);
}
Expand Down
70 changes: 41 additions & 29 deletions e2e/infrastructure/Listener.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,25 @@
*/
import { assert, expect } from 'chai';
import { ChronoUnit } from 'js-joda';
import { filter } from 'rxjs/operators';
import { filter, mergeMap } from 'rxjs/operators';
import { TransactionRepository } from '../../src/infrastructure/TransactionRepository';
import { Account } from '../../src/model/account/Account';
import { PlainMessage } from '../../src/model/message/PlainMessage';
import { Address, CosignatureTransaction, LockFundsTransaction, Mosaic, SignedTransaction, UInt64 } from '../../src/model/model';
import { MosaicId } from '../../src/model/mosaic/MosaicId';
import { NamespaceId } from '../../src/model/namespace/NamespaceId';
import { NetworkType } from '../../src/model/network/NetworkType';
import { AggregateTransaction } from '../../src/model/transaction/AggregateTransaction';
import { Deadline } from '../../src/model/transaction/Deadline';
import { MultisigAccountModificationTransaction } from '../../src/model/transaction/MultisigAccountModificationTransaction';
import { TransferTransaction } from '../../src/model/transaction/TransferTransaction';
import { IntegrationTestHelper } from './IntegrationTestHelper';
import { TransactionSearchCriteria } from '../../src/infrastructure/searchCriteria/TransactionSearchCriteria';
import { TransactionGroupSubsetEnum } from 'symbol-openapi-typescript-node-client';
import { Address } from '../../src/model/account/Address';
import { SignedTransaction } from '../../src/model/transaction/SignedTransaction';
import { LockFundsTransaction } from '../../src/model/transaction/LockFundsTransaction';
import { UInt64 } from '../../src/model/UInt64';
import { Mosaic } from '../../src/model/mosaic/Mosaic';
import { CosignatureTransaction } from '../../src/model/transaction/CosignatureTransaction';
import { UnresolvedMosaicId } from '../../src/model/mosaic/UnresolvedMosaicId';
import { TransactionGroup } from '../../src/infrastructure/TransactionGroup';

describe('Listener', () => {
const helper = new IntegrationTestHelper();
Expand All @@ -41,7 +45,6 @@ describe('Listener', () => {
let cosignAccount3: Account;
let generationHash: string;
let networkType: NetworkType;
const NetworkCurrencyLocalId: NamespaceId = helper.networkCurrencyNamespaceId;
let transactionRepository: TransactionRepository;

before(() => {
Expand Down Expand Up @@ -92,7 +95,7 @@ describe('Listener', () => {
const createHashLockTransactionAndAnnounce = (
signedAggregatedTransaction: SignedTransaction,
signer: Account,
mosaicId: MosaicId | NamespaceId,
mosaicId: UnresolvedMosaicId,
): void => {
const lockFundsTransaction = LockFundsTransaction.create(
Deadline.create(),
Expand Down Expand Up @@ -182,7 +185,7 @@ describe('Listener', () => {
const transferTransaction = TransferTransaction.create(
Deadline.create(),
cosignAccount1.address,
[new Mosaic(NetworkCurrencyLocalId, UInt64.fromUint(10 * Math.pow(10, helper.networkCurrencyDivisibility)))],
[helper.createNetworkCurrency(10, true)],
PlainMessage.create('test-message'),
networkType,
helper.maxFee,
Expand All @@ -199,7 +202,7 @@ describe('Listener', () => {
Deadline.create(),
2,
1,
[cosignAccount1.publicAccount, cosignAccount2.publicAccount, cosignAccount3.publicAccount],
[cosignAccount1.address, cosignAccount2.address, cosignAccount3.address],
[],
networkType,
helper.maxFee,
Expand All @@ -225,7 +228,7 @@ describe('Listener', () => {
describe('Aggregate Bonded Transactions', () => {
it('aggregateBondedTransactionsAdded', (done) => {
const signedAggregatedTx = createSignedAggregatedBondTransaction(multisigAccount, account, account2.address);
createHashLockTransactionAndAnnounce(signedAggregatedTx, account, NetworkCurrencyLocalId);
createHashLockTransactionAndAnnounce(signedAggregatedTx, account, helper.networkCurrencyNamespaceId);
helper.listener.aggregateBondedAdded(account.address).subscribe(() => {
done();
});
Expand All @@ -239,26 +242,34 @@ describe('Listener', () => {
});
});
});

describe('Aggregate Bonded Transactions', () => {
it('aggregateBondedTransactionsRemoved', (done) => {
const signedAggregatedTx = createSignedAggregatedBondTransaction(multisigAccount, cosignAccount1, account2.address);

createHashLockTransactionAndAnnounce(signedAggregatedTx, cosignAccount1, NetworkCurrencyLocalId);
createHashLockTransactionAndAnnounce(signedAggregatedTx, cosignAccount1, helper.networkCurrencyNamespaceId);
helper.listener.aggregateBondedRemoved(cosignAccount1.address, signedAggregatedTx.hash).subscribe(() => {
done();
});
helper.listener.confirmed(cosignAccount1.address).subscribe(() => {
helper.listener.aggregateBondedRemoved(cosignAccount1.address).subscribe(() => {
done();
});
helper.listener.aggregateBondedAdded(cosignAccount1.address).subscribe(() => {
const criteria: TransactionSearchCriteria = {
address: cosignAccount1.publicAccount.address,
group: TransactionGroupSubsetEnum.Partial,
address: cosignAccount1.address,
group: TransactionGroup.Partial,
embedded: true,
};
transactionRepository.search(criteria).subscribe((transactions) => {
const transactionToCosign = transactions[0];
const cosignatureTransaction = CosignatureTransaction.create(transactionToCosign);
const cosignatureSignedTransaction = cosignAccount2.signCosignatureTransaction(cosignatureTransaction);
transactionRepository.announceAggregateBondedCosignature(cosignatureSignedTransaction);
});
transactionRepository
.search(criteria)
.pipe(
mergeMap((page) => {
return transactionRepository.getTransaction(page.data[0].transactionInfo?.hash!, TransactionGroup.Partial);
}),
)
.subscribe((transactions) => {
const transactionToCosign = transactions as AggregateTransaction;
const cosignatureTransaction = CosignatureTransaction.create(transactionToCosign);
const cosignatureSignedTransaction = cosignAccount2.signCosignatureTransaction(cosignatureTransaction);
transactionRepository.announceAggregateBondedCosignature(cosignatureSignedTransaction);
});
});
helper.listener.status(cosignAccount1.address).subscribe((error) => {
console.log('Error:', error);
Expand All @@ -279,17 +290,17 @@ describe('Listener', () => {
it('cosignatureAdded', (done) => {
const signedAggregatedTx = createSignedAggregatedBondTransaction(multisigAccount, cosignAccount1, account2.address);

createHashLockTransactionAndAnnounce(signedAggregatedTx, cosignAccount1, NetworkCurrencyLocalId);
createHashLockTransactionAndAnnounce(signedAggregatedTx, cosignAccount1, helper.networkCurrencyNamespaceId);
helper.listener.cosignatureAdded(cosignAccount1.address).subscribe(() => {
done();
});
helper.listener.aggregateBondedAdded(cosignAccount1.address).subscribe(() => {
const criteria: TransactionSearchCriteria = {
address: cosignAccount1.publicAccount.address,
group: TransactionGroupSubsetEnum.Partial,
group: TransactionGroup.Partial,
};
transactionRepository.search(criteria).subscribe((transactions) => {
const transactionToCosign = transactions[0];
const transactionToCosign = transactions.data[0] as AggregateTransaction;
const cosignatureTransaction = CosignatureTransaction.create(transactionToCosign);
const cosignatureSignedTransaction = cosignAccount2.signCosignatureTransaction(cosignatureTransaction);
transactionRepository.announceAggregateBondedCosignature(cosignatureSignedTransaction);
Expand All @@ -313,15 +324,15 @@ describe('Listener', () => {
-1,
0,
[],
[cosignAccount1.publicAccount],
[cosignAccount1.address],
networkType,
);
const removeCosigner2 = MultisigAccountModificationTransaction.create(
Deadline.create(),
0,
0,
[],
[cosignAccount2.publicAccount],
[cosignAccount2.address],
networkType,
);

Expand All @@ -330,7 +341,7 @@ describe('Listener', () => {
-1,
-1,
[],
[cosignAccount3.publicAccount],
[cosignAccount3.address],
networkType,
);

Expand All @@ -343,6 +354,7 @@ describe('Listener', () => {
],
networkType,
[],
helper.maxFee,
);
const signedTransaction = aggregateTransaction.signTransactionWithCosignatories(
cosignAccount1,
Expand Down
Loading