From 98d856196398504ea0772ebca42fd9dedf4bd28e Mon Sep 17 00:00:00 2001 From: boufni95 Date: Wed, 16 Apr 2025 17:07:35 +0000 Subject: [PATCH] up --- src/tests/externalPayment.spec.ts | 4 +++- src/tests/internalPayment.spec.ts | 2 +- src/tests/networkSetup.ts | 8 +++++++- src/tests/spamExternalPayments.spec.ts | 2 +- src/tests/spamMixedPayments.spec.ts | 2 +- src/tests/testBase.ts | 7 +++++-- src/tests/testRunner.ts | 18 +++++++++++------- src/tests/userToUserPayment.spec.ts | 2 +- 8 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/tests/externalPayment.spec.ts b/src/tests/externalPayment.spec.ts index 32e309d9..0bb2f181 100644 --- a/src/tests/externalPayment.spec.ts +++ b/src/tests/externalPayment.spec.ts @@ -1,5 +1,5 @@ import { defaultInvoiceExpiry } from '../services/storage/paymentStorage.js' -import { Describe, expect, expectThrowsAsync, runSanityCheck, safelySetUserBalance, SetupTest, TestBase } from './testBase.js' +import { Describe, expect, expectThrowsAsync, runSanityCheck, safelySetUserBalance, TestBase } from './testBase.js' import * as Types from '../../proto/autogenerated/ts/types.js' export const ignore = false export const dev = false @@ -58,6 +58,8 @@ const testSuccesfulReceivedExternalChainPayment = async (T: TestBase) => { const payment = await T.externalAccessToOtherLnd.PayAddress(user2Address.address, 1000, 3, "test", { from: 'system', useProvider: false }) expect(payment.txid).to.not.be.undefined T.d("paid 1000 sats to user2's external chain address") + await T.chainTools.mine(2) + T.d("mined 2 blocks to confirm the payment") const u2 = await T.main.storage.userStorage.GetUser(T.user2.userId) expect(u2.balance_sats).to.be.equal(1000) T.d("user2 balance is now 1000") diff --git a/src/tests/internalPayment.spec.ts b/src/tests/internalPayment.spec.ts index 7a4b3055..f94bb994 100644 --- a/src/tests/internalPayment.spec.ts +++ b/src/tests/internalPayment.spec.ts @@ -1,5 +1,5 @@ import { defaultInvoiceExpiry } from '../services/storage/paymentStorage.js' -import { Describe, expect, expectThrowsAsync, runSanityCheck, safelySetUserBalance, SetupTest, TestBase } from './testBase.js' +import { Describe, expect, expectThrowsAsync, runSanityCheck, safelySetUserBalance, TestBase } from './testBase.js' export const ignore = false export default async (T: TestBase) => { diff --git a/src/tests/networkSetup.ts b/src/tests/networkSetup.ts index b15e810f..b169c7c7 100644 --- a/src/tests/networkSetup.ts +++ b/src/tests/networkSetup.ts @@ -3,7 +3,12 @@ import { BitcoinCoreWrapper } from "./bitcoinCore.js" import LND from '../services/lnd/lnd.js' import { LiquidityProvider } from "../services/main/liquidityProvider.js" import { Utils } from "../services/helpers/utilsWrapper.js" -export const setupNetwork = async () => { + +export type ChainTools = { + mine: (amount: number) => Promise +} + +export const setupNetwork = async (): Promise => { const settings = LoadTestSettingsFromEnv() const core = new BitcoinCoreWrapper(settings) await core.InitAddress() @@ -51,6 +56,7 @@ export const setupNetwork = async () => { alice.Stop() bob.Stop() + return { mine: (amount: number) => core.Mine(amount) } } const tryUntil = async (fn: (attempt: number) => Promise, maxTries: number, interval: number) => { diff --git a/src/tests/spamExternalPayments.spec.ts b/src/tests/spamExternalPayments.spec.ts index e5fc9467..e7956632 100644 --- a/src/tests/spamExternalPayments.spec.ts +++ b/src/tests/spamExternalPayments.spec.ts @@ -1,6 +1,6 @@ import { disableLoggers } from '../services/helpers/logger.js' import { defaultInvoiceExpiry } from '../services/storage/paymentStorage.js' -import { Describe, expect, expectThrowsAsync, runSanityCheck, safelySetUserBalance, SetupTest, TestBase } from './testBase.js' +import { Describe, expect, expectThrowsAsync, runSanityCheck, safelySetUserBalance, TestBase } from './testBase.js' export const ignore = false export default async (T: TestBase) => { diff --git a/src/tests/spamMixedPayments.spec.ts b/src/tests/spamMixedPayments.spec.ts index 4851ab2c..9f85db64 100644 --- a/src/tests/spamMixedPayments.spec.ts +++ b/src/tests/spamMixedPayments.spec.ts @@ -1,6 +1,6 @@ import { disableLoggers } from '../services/helpers/logger.js' import { defaultInvoiceExpiry } from '../services/storage/paymentStorage.js' -import { Describe, expect, expectThrowsAsync, runSanityCheck, safelySetUserBalance, SetupTest, TestBase } from './testBase.js' +import { Describe, expect, expectThrowsAsync, runSanityCheck, safelySetUserBalance, TestBase } from './testBase.js' import * as Types from '../../proto/autogenerated/ts/types.js' export const ignore = false diff --git a/src/tests/testBase.ts b/src/tests/testBase.ts index 62650472..aa4d3714 100644 --- a/src/tests/testBase.ts +++ b/src/tests/testBase.ts @@ -14,6 +14,7 @@ import { LiquidityProvider } from '../services/main/liquidityProvider.js' import { Utils } from '../services/helpers/utilsWrapper.js' import { AdminManager } from '../services/main/adminManager.js' import { TlvStorageFactory } from '../services/storage/tlv/tlvFilesStorageFactory.js' +import { ChainTools } from './networkSetup.js' chai.use(chaiString) export const expect = chai.expect export type Describe = (message: string, failure?: boolean) => void @@ -34,6 +35,7 @@ export type TestBase = { externalAccessToThirdLnd: LND adminManager: AdminManager d: Describe + chainTools: ChainTools } export type StorageTestBase = { @@ -58,7 +60,7 @@ export const teardownStorageTest = async (T: StorageTestBase) => { T.storage.Stop() } -export const SetupTest = async (d: Describe): Promise => { +export const SetupTest = async (d: Describe, chainTools: ChainTools): Promise => { const settings = LoadTestSettingsFromEnv() const initialized = await initMainHandler(getLogger({ component: "mainForTest" }), settings) if (!initialized) { @@ -89,7 +91,8 @@ export const SetupTest = async (d: Describe): Promise => { user1, user2, externalAccessToMainLnd, externalAccessToOtherLnd, externalAccessToThirdLnd, d, - adminManager: initialized.adminManager + adminManager: initialized.adminManager, + chainTools } } diff --git a/src/tests/testRunner.ts b/src/tests/testRunner.ts index d283cc43..242fed46 100644 --- a/src/tests/testRunner.ts +++ b/src/tests/testRunner.ts @@ -1,6 +1,6 @@ //import whyIsNodeRunning from 'why-is-node-running' import { globby } from 'globby' -import { setupNetwork } from './networkSetup.js' +import { ChainTools, setupNetwork } from './networkSetup.js' import { Describe, SetupTest, teardown, TestBase, StorageTestBase, setupStorageTest, teardownStorageTest } from './testBase.js' type TestModule = { ignore?: boolean @@ -38,17 +38,18 @@ const start = async () => { if (devModule !== -1) { console.log("running dev module") const { file, module } = modules[devModule] + let chainTools: ChainTools | undefined if (module.requires === 'storage') { console.log("dev module requires only storage, skipping network setup") } else { - await setupNetwork() + chainTools = await setupNetwork() } - await runTestFile(file, module) + await runTestFile(file, module, chainTools) } else { console.log("running all tests") - await setupNetwork() + const chainTools = await setupNetwork() for (const { file, module } of modules) { - await runTestFile(file, module) + await runTestFile(file, module, chainTools) } } console.log(failures) @@ -62,7 +63,7 @@ const start = async () => { } -const runTestFile = async (fileName: string, mod: TestModule) => { +const runTestFile = async (fileName: string, mod: TestModule, chainTools?: ChainTools) => { console.log(fileName) const d = getDescribe(fileName) if (mod.ignore) { @@ -78,7 +79,10 @@ const runTestFile = async (fileName: string, mod: TestModule) => { T = await setupStorageTest(d) } else { d("-----requires all-----") - T = await SetupTest(d) + if (!chainTools) { + throw new Error("chainTools are required for this test") + } + T = await SetupTest(d, chainTools) } try { d("test starting") diff --git a/src/tests/userToUserPayment.spec.ts b/src/tests/userToUserPayment.spec.ts index 808cc62c..e93f0604 100644 --- a/src/tests/userToUserPayment.spec.ts +++ b/src/tests/userToUserPayment.spec.ts @@ -1,5 +1,5 @@ import { defaultInvoiceExpiry } from '../services/storage/paymentStorage.js' -import { Describe, expect, expectThrowsAsync, runSanityCheck, safelySetUserBalance, SetupTest, TestBase } from './testBase.js' +import { Describe, expect, expectThrowsAsync, runSanityCheck, safelySetUserBalance, TestBase } from './testBase.js' export const ignore = false export const dev = false export default async (T: TestBase) => {