From e37daf30367cabeff08b7133d24bea62d61a1bf5 Mon Sep 17 00:00:00 2001 From: Slava Startsev Date: Mon, 6 Jan 2025 13:28:02 +0300 Subject: [PATCH] chore: add tests for connectors (#138) * chore: add tests for connectors * chore: enable test workflow * Create perfect-teachers-agree.md --- .changeset/perfect-teachers-agree.md | 5 ++ .github/workflows/QA.yaml | 1 - packages/sats-wagmi/package.json | 1 + .../src/connectors/test/okx.test.ts | 64 ++++++++++++++++++ .../src/connectors/test/unisat.test.ts | 65 +++++++++++++++++++ 5 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 .changeset/perfect-teachers-agree.md create mode 100644 packages/sats-wagmi/src/connectors/test/okx.test.ts create mode 100644 packages/sats-wagmi/src/connectors/test/unisat.test.ts diff --git a/.changeset/perfect-teachers-agree.md b/.changeset/perfect-teachers-agree.md new file mode 100644 index 0000000..31ee13c --- /dev/null +++ b/.changeset/perfect-teachers-agree.md @@ -0,0 +1,5 @@ +--- +"@gobob/sats-wagmi": patch +--- + +chore: add tests for connectors diff --git a/.github/workflows/QA.yaml b/.github/workflows/QA.yaml index a033b31..f39a027 100644 --- a/.github/workflows/QA.yaml +++ b/.github/workflows/QA.yaml @@ -9,7 +9,6 @@ jobs: tests: name: Tests runs-on: ubuntu-latest - if: false steps: - name: Checkout branch uses: actions/checkout@v4 diff --git a/packages/sats-wagmi/package.json b/packages/sats-wagmi/package.json index abda6e8..6b2c624 100644 --- a/packages/sats-wagmi/package.json +++ b/packages/sats-wagmi/package.json @@ -32,6 +32,7 @@ "clean": "rimraf dist .turbo", "typecheck": "tsc --noEmit", "build": "tsup src/index.ts --dts", + "test": "jest", "prepack": "clean-package", "postpack": "clean-package restore" }, diff --git a/packages/sats-wagmi/src/connectors/test/okx.test.ts b/packages/sats-wagmi/src/connectors/test/okx.test.ts new file mode 100644 index 0000000..e92adff --- /dev/null +++ b/packages/sats-wagmi/src/connectors/test/okx.test.ts @@ -0,0 +1,64 @@ +import { Network } from 'bitcoin-address-validation'; + +import { OKXConnector } from '../okx'; + +// @ts-ignore +global.okxwallet = { + bitcoin: { + signPsbt: jest.fn() + } +}; + +describe('OKX connector', () => { + it('should specify correct parameters when signing psbt', async () => { + const okxConnector = new OKXConnector(Network.mainnet); + + okxConnector.publicKey = 'test_public_key'; + // p2tr + okxConnector.paymentAddress = 'bc1p9u077kplyqud8qyc404l2t5ud8jerwph6t77cd8xqvnan30lef5sqxfjhm'; + const psbtHex = '76a914602ba26f38a2f38a0d60b38d2ab5f7ab1562c8e588ac'; + + const signingIndexes = [1, 2, 3]; + + await okxConnector.signPsbt(psbtHex, [ + { + signingIndexes, + address: 'bc1qqfnxscmxnfhy2ek5uvp6u9wjd9xhs95ksydtnt_test' + } + ]); + + // @ts-ignore + expect(global.okxwallet.bitcoin.signPsbt).toHaveBeenCalledWith(psbtHex, { + autoFinalized: false, + toSignInputs: expect.arrayContaining( + signingIndexes.map((index) => ({ + index, + address: okxConnector.paymentAddress, + disableTweakSigner: false + })) + ) + }); + + // segwit + okxConnector.paymentAddress = 'bc1qqfnxscmxnfhy2ek5uvp6u9wjd9xhs95ksydtnt'; + + await okxConnector.signPsbt(psbtHex, [ + { + signingIndexes, + address: 'bc1qqfnxscmxnfhy2ek5uvp6u9wjd9xhs95ksydtnt_test' + } + ]); + + // @ts-ignore + expect(global.okxwallet.bitcoin.signPsbt).toHaveBeenCalledWith(psbtHex, { + autoFinalized: false, + toSignInputs: expect.arrayContaining( + signingIndexes.map((index) => ({ + index, + publicKey: okxConnector.publicKey, + disableTweakSigner: true + })) + ) + }); + }); +}); diff --git a/packages/sats-wagmi/src/connectors/test/unisat.test.ts b/packages/sats-wagmi/src/connectors/test/unisat.test.ts new file mode 100644 index 0000000..b516360 --- /dev/null +++ b/packages/sats-wagmi/src/connectors/test/unisat.test.ts @@ -0,0 +1,65 @@ +import { Network } from 'bitcoin-address-validation'; + +import { UnisatConnector } from '../unisat'; + +// @ts-ignore +global.unisat = { + signPsbt: jest.fn() +}; + +describe('Unisat connector', () => { + it('should specify correct parameters when signing psbt', async () => { + // @ts-ignore + global.unisat.signPsbt = jest.fn(); + + const unisatConnector = new UnisatConnector(Network.mainnet, 'unisat'); + + unisatConnector.publicKey = 'test_public_key'; + // p2tr + unisatConnector.paymentAddress = 'bc1p9u077kplyqud8qyc404l2t5ud8jerwph6t77cd8xqvnan30lef5sqxfjhm'; + const psbtHex = '76a914602ba26f38a2f38a0d60b38d2ab5f7ab1562c8e588ac'; + + const signingIndexes = [1, 2, 3]; + + await unisatConnector.signPsbt(psbtHex, [ + { + signingIndexes, + address: 'bc1qqfnxscmxnfhy2ek5uvp6u9wjd9xhs95ksydtnt_test' + } + ]); + + // @ts-ignore + expect(global.unisat.signPsbt).toHaveBeenCalledWith(psbtHex, { + autoFinalized: false, + toSignInputs: expect.arrayContaining( + signingIndexes.map((index) => ({ + index, + publicKey: unisatConnector.publicKey, + disableTweakSigner: false + })) + ) + }); + + // segwit + unisatConnector.paymentAddress = 'bc1qqfnxscmxnfhy2ek5uvp6u9wjd9xhs95ksydtnt'; + + await unisatConnector.signPsbt(psbtHex, [ + { + signingIndexes, + address: 'bc1qqfnxscmxnfhy2ek5uvp6u9wjd9xhs95ksydtnt_test' + } + ]); + + // @ts-ignore + expect(global.unisat.signPsbt).toHaveBeenCalledWith(psbtHex, { + autoFinalized: false, + toSignInputs: expect.arrayContaining( + signingIndexes.map((index) => ({ + index, + publicKey: unisatConnector.publicKey, + disableTweakSigner: true + })) + ) + }); + }); +});