@reown/appkit-adapter-bitcoin 1.6.7-basic-test.8.0 → 1.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  2. package/package.json +4 -5
  3. package/dist/esm/tests/BitcoinAdapter.test.js +0 -411
  4. package/dist/esm/tests/BitcoinAdapter.test.js.map +0 -1
  5. package/dist/esm/tests/connectors/LeatherConnector.test.js +0 -138
  6. package/dist/esm/tests/connectors/LeatherConnector.test.js.map +0 -1
  7. package/dist/esm/tests/connectors/OKXConnector.test.js +0 -172
  8. package/dist/esm/tests/connectors/OKXConnector.test.js.map +0 -1
  9. package/dist/esm/tests/connectors/SatsConnectConnector.test.js +0 -249
  10. package/dist/esm/tests/connectors/SatsConnectConnector.test.js.map +0 -1
  11. package/dist/esm/tests/connectors/WalletStandardConnector.test.js +0 -297
  12. package/dist/esm/tests/connectors/WalletStandardConnector.test.js.map +0 -1
  13. package/dist/esm/tests/mocks/mockSatsConnect.js +0 -60
  14. package/dist/esm/tests/mocks/mockSatsConnect.js.map +0 -1
  15. package/dist/esm/tests/mocks/mockUTXO.js +0 -15
  16. package/dist/esm/tests/mocks/mockUTXO.js.map +0 -1
  17. package/dist/esm/tests/mocks/mockUniversalProvider.js +0 -64
  18. package/dist/esm/tests/mocks/mockUniversalProvider.js.map +0 -1
  19. package/dist/esm/tests/mocks/mockWalletStandard.js +0 -47
  20. package/dist/esm/tests/mocks/mockWalletStandard.js.map +0 -1
  21. package/dist/esm/tests/utils/BitcoinApi.test.js +0 -48
  22. package/dist/esm/tests/utils/BitcoinApi.test.js.map +0 -1
  23. package/dist/esm/tests/utils/UnitsUtils.test.js +0 -21
  24. package/dist/esm/tests/utils/UnitsUtils.test.js.map +0 -1
  25. package/dist/esm/tests/utils/WalletConnectProvider.test.js +0 -275
  26. package/dist/esm/tests/utils/WalletConnectProvider.test.js.map +0 -1
  27. package/dist/esm/tsconfig.tsbuildinfo +0 -1
  28. package/dist/types/tests/BitcoinAdapter.test.d.ts +0 -1
  29. package/dist/types/tests/connectors/LeatherConnector.test.d.ts +0 -1
  30. package/dist/types/tests/connectors/OKXConnector.test.d.ts +0 -1
  31. package/dist/types/tests/connectors/SatsConnectConnector.test.d.ts +0 -1
  32. package/dist/types/tests/connectors/WalletStandardConnector.test.d.ts +0 -1
  33. package/dist/types/tests/mocks/mockSatsConnect.d.ts +0 -27
  34. package/dist/types/tests/mocks/mockUTXO.d.ts +0 -2
  35. package/dist/types/tests/mocks/mockUniversalProvider.d.ts +0 -6
  36. package/dist/types/tests/mocks/mockWalletStandard.d.ts +0 -7
  37. package/dist/types/tests/utils/BitcoinApi.test.d.ts +0 -1
  38. package/dist/types/tests/utils/UnitsUtils.test.d.ts +0 -1
  39. package/dist/types/tests/utils/WalletConnectProvider.test.d.ts +0 -1
@@ -1,172 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { CoreHelperUtil } from '@reown/appkit-core';
3
- import { bitcoin, bitcoinTestnet } from '@reown/appkit/networks';
4
- import { OKXConnector } from '../../src/connectors/OKXConnector';
5
- import { MethodNotSupportedError } from '../../src/errors/MethodNotSupportedError';
6
- function mockOKXWallet() {
7
- return {
8
- connect: vi.fn(() => Promise.resolve({ address: 'mock_address', publicKey: 'publicKey' })),
9
- disconnect: vi.fn(),
10
- getAccounts: vi.fn(() => Promise.resolve(['mock_address'])),
11
- signMessage: vi.fn(() => Promise.resolve('mock_signature')),
12
- signPsbt: vi.fn(() => Promise.resolve(Buffer.from('mock_psbt').toString('hex'))),
13
- pushPsbt: vi.fn(() => Promise.resolve('mock_txhash')),
14
- send: vi.fn(() => Promise.resolve({ txhash: 'mock_txhash' })),
15
- on: vi.fn(),
16
- removeAllListeners: vi.fn(),
17
- getPublicKey: vi.fn(() => Promise.resolve('publicKey'))
18
- };
19
- }
20
- describe('OKXConnector', () => {
21
- let wallet;
22
- let requestedChains;
23
- let connector;
24
- let getActiveNetwork;
25
- let imageUrl;
26
- beforeEach(() => {
27
- imageUrl = 'mock_image_url';
28
- requestedChains = [bitcoin, bitcoinTestnet];
29
- getActiveNetwork = vi.fn(() => bitcoin);
30
- wallet = mockOKXWallet();
31
- connector = new OKXConnector({ wallet, requestedChains, getActiveNetwork, imageUrl });
32
- });
33
- it('should validate metadata', () => {
34
- expect(connector.id).toBe('OKX');
35
- expect(connector.name).toBe('OKX Wallet');
36
- expect(connector.chain).toBe('bip122');
37
- expect(connector.type).toBe('ANNOUNCED');
38
- expect(connector.imageUrl).toBe('mock_image_url');
39
- });
40
- it('should return only mainnet chain', () => {
41
- expect(connector.chains).toEqual([bitcoin]);
42
- });
43
- describe('connect', () => {
44
- it('should connect the wallet', async () => {
45
- const address = await connector.connect();
46
- expect(address).toBe('mock_address');
47
- expect(wallet.connect).toHaveBeenCalled();
48
- });
49
- it('should bind events', async () => {
50
- await connector.connect();
51
- expect(wallet.removeAllListeners).toHaveBeenCalled();
52
- expect(wallet.on).toHaveBeenNthCalledWith(1, 'accountChanged', expect.any(Function));
53
- expect(wallet.on).toHaveBeenNthCalledWith(2, 'disconnect', expect.any(Function));
54
- });
55
- });
56
- describe('disconnect', () => {
57
- it('should disconnect the wallet', async () => {
58
- await connector.disconnect();
59
- expect(wallet.disconnect).toHaveBeenCalled();
60
- });
61
- it('should unbind events', async () => {
62
- await connector.disconnect();
63
- expect(wallet.removeAllListeners).toHaveBeenCalled();
64
- });
65
- });
66
- describe('getAccountAddresses', () => {
67
- it('should get account addresses', async () => {
68
- const accounts = await connector.getAccountAddresses();
69
- expect(accounts).toEqual([
70
- { address: 'mock_address', purpose: 'payment', publicKey: 'publicKey' }
71
- ]);
72
- expect(wallet.getAccounts).toHaveBeenCalled();
73
- });
74
- });
75
- describe('signMessage', () => {
76
- it('should sign a message', async () => {
77
- const signature = await connector.signMessage({ address: 'mock_address', message: 'message' });
78
- expect(signature).toBe('mock_signature');
79
- expect(wallet.signMessage).toHaveBeenCalledWith('message');
80
- });
81
- });
82
- describe('sendTransfer', () => {
83
- it('should send a transfer', async () => {
84
- const txid = await connector.sendTransfer({ amount: '1500', recipient: 'mock_to_address' });
85
- expect(txid).toBe('mock_txhash');
86
- expect(wallet.send).toHaveBeenCalledWith({
87
- from: 'mock_address',
88
- to: 'mock_to_address',
89
- value: '0.000015'
90
- });
91
- });
92
- it('should throw an error if the network is unavailable', async () => {
93
- getActiveNetwork.mockReturnValueOnce(undefined);
94
- await expect(connector.sendTransfer({ amount: '1500', recipient: 'mock_to_address' })).rejects.toThrow('No active network available');
95
- });
96
- it('should throw an error if no account is available', async () => {
97
- wallet.getAccounts.mockResolvedValueOnce([]);
98
- await expect(connector.sendTransfer({ amount: '1500', recipient: 'mock_to_address' })).rejects.toThrow('No account available');
99
- });
100
- });
101
- describe('signPSBT', () => {
102
- it('should sign a PSBT without broadcast', async () => {
103
- const result = await connector.signPSBT({
104
- psbt: Buffer.from('mock_psbt').toString('base64'),
105
- signInputs: [],
106
- broadcast: false
107
- });
108
- expect(result).toEqual({ psbt: 'bW9ja19wc2J0', txid: undefined });
109
- });
110
- it('should sign a PSBT with broadcast', async () => {
111
- getActiveNetwork.mockReturnValueOnce(bitcoinTestnet);
112
- const result = await connector.signPSBT({
113
- psbt: Buffer.from('mock_psbt').toString('base64'),
114
- signInputs: [],
115
- broadcast: true
116
- });
117
- expect(result).toEqual({ psbt: 'bW9ja19wc2J0', txid: 'mock_txhash' });
118
- });
119
- });
120
- describe('request', () => {
121
- it('should throw an error because request is not supported', async () => {
122
- await expect(connector.request({})).rejects.toThrow(MethodNotSupportedError);
123
- });
124
- });
125
- describe('events', () => {
126
- it('should emit accountChanged event', async () => {
127
- const listener = vi.fn(account => {
128
- expect(account).toEqual(['mock_address']);
129
- });
130
- connector.on('accountsChanged', listener);
131
- await connector.connect();
132
- wallet.on.mock.calls[0][1]({ address: 'mock_address' });
133
- expect(listener).toHaveBeenCalled();
134
- });
135
- it('should emit disconnect event', async () => {
136
- const listener = vi.fn();
137
- connector.on('disconnect', listener);
138
- await connector.connect();
139
- wallet.on.mock.calls[1][1]();
140
- expect(listener).toHaveBeenCalled();
141
- });
142
- });
143
- describe('getWallet', () => {
144
- it('should return undefined if there is no wallet', () => {
145
- expect(OKXConnector.getWallet({ getActiveNetwork, requestedChains: [] })).toBeUndefined();
146
- });
147
- it('should return the Connector if there is a wallet', () => {
148
- ;
149
- window.okxwallet = { bitcoin: wallet };
150
- const connector = OKXConnector.getWallet({ getActiveNetwork, requestedChains });
151
- expect(connector).toBeInstanceOf(OKXConnector);
152
- });
153
- it('should get image url', () => {
154
- ;
155
- window.okxwallet = { bitcoin: wallet, cardano: { icon: 'mock_image' } };
156
- const connector = OKXConnector.getWallet({ getActiveNetwork, requestedChains });
157
- expect(connector?.imageUrl).toBe('mock_image');
158
- });
159
- it('should return undefined if window is undefined (server-side)', () => {
160
- vi.spyOn(CoreHelperUtil, 'isClient').mockReturnValue(false);
161
- expect(OKXConnector.getWallet({ getActiveNetwork, requestedChains })).toBeUndefined();
162
- });
163
- });
164
- describe('getPublicKey', () => {
165
- it('should return the public key', async () => {
166
- const publicKey = await connector.getPublicKey();
167
- expect(publicKey).toBe('publicKey');
168
- expect(wallet.getPublicKey).toHaveBeenCalled();
169
- });
170
- });
171
- });
172
- //# sourceMappingURL=OKXConnector.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OKXConnector.test.js","sourceRoot":"","sources":["../../../../tests/connectors/OKXConnector.test.ts"],"names":[],"mappings":"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"}
@@ -1,249 +0,0 @@
1
- import { MessageSigningProtocols } from 'sats-connect';
2
- import { beforeEach, describe, expect, it, vi } from 'vitest';
3
- import { CoreHelperUtil } from '@reown/appkit-core';
4
- import { bitcoin, bitcoinTestnet, mainnet } from '@reown/appkit/networks';
5
- import { SatsConnectConnector } from '../../src/connectors/SatsConnectConnector';
6
- import { mockSatsConnectProvider } from '../mocks/mockSatsConnect';
7
- describe('SatsConnectConnector', () => {
8
- let connector;
9
- let mocks;
10
- let requestedChains;
11
- let getActiveNetwork;
12
- beforeEach(() => {
13
- // requested chains may contain not bip122 chains
14
- requestedChains = [
15
- { ...mainnet, caipNetworkId: 'eip155:1', chainNamespace: 'eip155' },
16
- bitcoin,
17
- bitcoinTestnet
18
- ];
19
- mocks = mockSatsConnectProvider();
20
- getActiveNetwork = vi.fn(() => bitcoin);
21
- connector = new SatsConnectConnector({
22
- provider: mocks.provider,
23
- requestedChains,
24
- getActiveNetwork
25
- });
26
- });
27
- it('should validate the test fixture', async () => {
28
- expect(window[mocks.provider.id]).toBeDefined();
29
- expect(window.btc_providers).to.include(mocks.provider);
30
- expect(connector).toBeDefined();
31
- });
32
- it('should get wallets correctly', async () => {
33
- const wallets = SatsConnectConnector.getWallets({ requestedChains, getActiveNetwork });
34
- expect(wallets instanceof Array).toBeTruthy();
35
- wallets.forEach(wallet => expect(wallet instanceof SatsConnectConnector).toBeTruthy());
36
- });
37
- it('should return an empty array when window is undefined (server-side)', () => {
38
- vi.spyOn(CoreHelperUtil, 'isClient').mockReturnValue(false);
39
- const wallets = SatsConnectConnector.getWallets({
40
- requestedChains: [],
41
- getActiveNetwork: () => undefined
42
- });
43
- expect(wallets).toEqual([]);
44
- });
45
- it('should get metadata correctly', async () => {
46
- expect(connector.id).toBe(mocks.provider.name);
47
- expect(connector.name).toBe(mocks.provider.name);
48
- expect(connector.imageUrl).toBe(mocks.provider.icon);
49
- expect(connector.chains).toEqual([bitcoin, bitcoinTestnet]);
50
- });
51
- it('should disconnect correctly', async () => {
52
- await connector.disconnect();
53
- expect(mocks.wallet.request).toHaveBeenCalledWith('wallet_disconnect', null);
54
- });
55
- it('should request correctly', async () => {
56
- const args = { method: 'getAddresses', params: {} };
57
- await connector.request(args);
58
- expect(mocks.wallet.request).toHaveBeenCalledWith(args.method, args.params);
59
- });
60
- it('should connect correctly with wallet already connected', async () => {
61
- const spy = vi.spyOn(mocks.wallet, 'request');
62
- spy.mockResolvedValueOnce(mockSatsConnectProvider.mockRequestResolve({
63
- addresses: [
64
- {
65
- address: 'mock_address',
66
- purpose: 'receive',
67
- addressType: 'p2pkh',
68
- gaiaAppKey: 'mock_gaia_app_key',
69
- gaiaHubUrl: 'mock_gaia_hub_url',
70
- publicKey: 'mock_public_key'
71
- }
72
- ]
73
- }));
74
- const result = await connector.connect();
75
- expect(result).toBe('mock_address');
76
- expect(mocks.wallet.request).toHaveBeenCalledWith('getAddresses', {
77
- purposes: expect.arrayContaining(['payment', 'ordinals', 'stacks']),
78
- message: 'Connect to your wallet'
79
- });
80
- });
81
- it('should connect correctly with wallet not connected', async () => {
82
- const spy = vi.spyOn(mocks.wallet, 'request');
83
- spy.mockResolvedValueOnce(mockSatsConnectProvider.mockRequestReject({ message: 'Unauthorized' }));
84
- spy.mockResolvedValueOnce(mockSatsConnectProvider.mockRequestResolve({
85
- addresses: [
86
- {
87
- address: 'mock_address',
88
- purpose: 'payment',
89
- addressType: 'p2pkh',
90
- gaiaAppKey: 'mock_gaia_app_key',
91
- gaiaHubUrl: 'mock_gaia_hub_url',
92
- publicKey: 'mock_public_key'
93
- }
94
- ]
95
- }));
96
- const result = await connector.connect();
97
- expect(result).toBe('mock_address');
98
- expect(mocks.wallet.request).toHaveBeenNthCalledWith(1, 'getAddresses', {
99
- purposes: expect.arrayContaining(['payment', 'ordinals', 'stacks']),
100
- message: 'Connect to your wallet'
101
- });
102
- expect(mocks.wallet.request).toHaveBeenNthCalledWith(2, 'wallet_connect', null);
103
- });
104
- it('should throw if connect with empty addresses', async () => {
105
- const spy = vi.spyOn(mocks.wallet, 'request');
106
- spy.mockResolvedValueOnce(mockSatsConnectProvider.mockRequestResolve({ addresses: [] }));
107
- await expect(connector.connect()).rejects.toThrow('No address available');
108
- });
109
- it('should signMessage correctly', async () => {
110
- const params = { message: 'mock_message', address: 'mock_address' };
111
- const spy = vi.spyOn(mocks.wallet, 'request');
112
- spy.mockResolvedValueOnce(mockSatsConnectProvider.mockRequestResolve({
113
- signature: 'mock_signature',
114
- address: 'mock_address',
115
- protocol: MessageSigningProtocols.BIP322,
116
- messageHash: 'mock_message_hash'
117
- }));
118
- const result = await connector.signMessage(params);
119
- expect(result).toBe('mock_signature');
120
- expect(mocks.wallet.request).toHaveBeenCalledWith('signMessage', params);
121
- });
122
- it('should sendTransfer correctly', async () => {
123
- const params = {
124
- amount: '1000',
125
- recipient: 'mock_recipient'
126
- };
127
- const spy = vi.spyOn(mocks.wallet, 'request');
128
- spy.mockResolvedValueOnce(mockSatsConnectProvider.mockRequestResolve({ txid: 'mock_txid' }));
129
- const result = await connector.sendTransfer(params);
130
- expect(result).toBe('mock_txid');
131
- expect(mocks.wallet.request).toHaveBeenCalledWith('sendTransfer', {
132
- recipients: [{ address: params.recipient, amount: 1000 }]
133
- });
134
- });
135
- it('should signPSBT correctly', async () => {
136
- const params = {
137
- psbt: 'mock_psbt',
138
- broadcast: true,
139
- signInputs: [{ address: 'mock_address', index: 0, sighashTypes: [0] }]
140
- };
141
- const spy = vi.spyOn(mocks.wallet, 'request');
142
- spy.mockResolvedValueOnce(mockSatsConnectProvider.mockRequestResolve({ psbt: 'mock_signed_psbt' }));
143
- const result = await connector.signPSBT(params);
144
- expect(result).toEqual({ psbt: 'mock_signed_psbt' });
145
- expect(mocks.wallet.request).toHaveBeenCalledWith('signPsbt', {
146
- psbt: params.psbt,
147
- broadcast: params.broadcast,
148
- signInputs: { mock_address: [0] }
149
- });
150
- });
151
- it('should throw if sendTransfer with invalid amount', async () => {
152
- const params = {
153
- amount: 'invalid',
154
- recipient: 'mock_recipient'
155
- };
156
- await expect(connector.sendTransfer(params)).rejects.toThrow('Invalid amount');
157
- });
158
- it('should throw correct error if internalRequest fails', async () => {
159
- const args = {
160
- method: 'signMessage',
161
- params: { message: 'mock_message', address: 'mock_address' }
162
- };
163
- vi.spyOn(mocks.wallet, 'request').mockResolvedValueOnce(mockSatsConnectProvider.mockRequestReject({
164
- message: 'mock_error'
165
- }));
166
- await expect(connector.request(args)).rejects.toThrow('mock_error');
167
- vi.spyOn(mocks.wallet, 'request').mockRejectedValueOnce(mockSatsConnectProvider.mockRequestReject({
168
- message: 'mock_error'
169
- }));
170
- await expect(connector.request(args)).rejects.toThrow('mock_error');
171
- vi.spyOn(mocks.wallet, 'request').mockRejectedValueOnce(new Error('unknown_error'));
172
- await expect(connector.request(args)).rejects.toThrow('unknown_error');
173
- });
174
- it('should throw if wallet_disconnect request fails', async () => {
175
- vi.spyOn(mocks.wallet, 'request').mockRejectedValueOnce(mockSatsConnectProvider.mockRequestReject({
176
- message: 'mock_error'
177
- }));
178
- await expect(connector.disconnect()).rejects.toThrow('mock_error');
179
- });
180
- it('should not add events if wallet provider does not support events', async () => {
181
- ;
182
- mocks.wallet.addListener = undefined;
183
- vi.spyOn(mocks.wallet, 'request').mockResolvedValue(mockSatsConnectProvider.mockRequestResolve({
184
- addresses: [
185
- {
186
- address: 'mock_address',
187
- purpose: 'payment',
188
- addressType: 'p2pkh',
189
- gaiaAppKey: 'mock_gaia_app_key',
190
- gaiaHubUrl: 'mock_gaia_hub_url',
191
- publicKey: 'mock_public_key'
192
- }
193
- ]
194
- }));
195
- await expect(connector.connect()).resolves.not.toThrow();
196
- });
197
- describe('events after connection', () => {
198
- let addListenerSpy;
199
- const addListenerCallbackMock = vi.fn(() => { });
200
- beforeEach(async () => {
201
- // connect wallet first
202
- vi.spyOn(mocks.wallet, 'request').mockResolvedValue(mockSatsConnectProvider.mockRequestResolve({
203
- addresses: [
204
- {
205
- address: 'mock_address',
206
- purpose: 'payment',
207
- addressType: 'p2pkh',
208
- gaiaAppKey: 'mock_gaia_app_key',
209
- gaiaHubUrl: 'mock_gaia_hub_url',
210
- publicKey: 'mock_public_key'
211
- }
212
- ]
213
- }));
214
- addListenerSpy = vi.spyOn(mocks.wallet, 'addListener');
215
- addListenerSpy.mockReturnValue(addListenerCallbackMock);
216
- await connector.connect();
217
- });
218
- it('should have bound events after connection', async () => {
219
- expect(addListenerSpy).toHaveBeenCalledWith('accountChange', expect.any(Function));
220
- expect(addListenerSpy).toHaveBeenCalledWith('disconnect', expect.any(Function));
221
- expect(addListenerSpy).toHaveBeenCalledWith('networkChange', expect.any(Function));
222
- });
223
- it('should unbind events after disconnect', async () => {
224
- await connector.disconnect();
225
- expect(addListenerCallbackMock).toHaveBeenCalledTimes(3);
226
- });
227
- it('should execute the callback on accountChange event', async () => {
228
- const connectSpy = vi.spyOn(connector, 'connect');
229
- const emitSpy = vi.spyOn(connector, 'emit');
230
- const callback = addListenerSpy.mock.calls.find(([event]) => event === 'accountChange')?.[1];
231
- await callback?.({ type: 'accountChange' });
232
- expect(connectSpy).toHaveBeenCalled();
233
- expect(emitSpy).toHaveBeenCalledWith('accountsChanged', ['mock_address']);
234
- });
235
- it('should execute the callback on disconnect event', async () => {
236
- const emitSpy = vi.spyOn(connector, 'emit');
237
- const callback = addListenerSpy.mock.calls.find(([event]) => event === 'disconnect')?.[1];
238
- await callback?.({ type: 'disconnect' });
239
- expect(emitSpy).toHaveBeenCalledWith('disconnect');
240
- });
241
- it('should execute the callback on networkChange event', async () => {
242
- const emitSpy = vi.spyOn(connector, 'emit');
243
- const callback = addListenerSpy.mock.calls.find(([event]) => event === 'networkChange')?.[1];
244
- await callback?.({ type: 'networkChange' });
245
- expect(emitSpy).toHaveBeenCalledWith('chainChanged', [bitcoin, bitcoinTestnet]);
246
- });
247
- });
248
- });
249
- //# sourceMappingURL=SatsConnectConnector.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SatsConnectConnector.test.js","sourceRoot":"","sources":["../../../../tests/connectors/SatsConnectConnector.test.ts"],"names":[],"mappings":"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"}