@reown/appkit-adapter-wagmi 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.
@@ -1,631 +0,0 @@
1
- import { estimateGas, getAccount, getBalance, getConnections, getEnsAvatar, getEnsName, http, signMessage, switchChain, getEnsAddress as wagmiGetEnsAddress, sendTransaction as wagmiSendTransaction, writeContract as wagmiWriteContract, waitForTransactionReceipt, watchAccount, watchPendingTransactions } from '@wagmi/core';
2
- import * as wagmiCore from '@wagmi/core';
3
- import { mainnet } from '@wagmi/core/chains';
4
- import { beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
5
- import { ConstantsUtil } from '@reown/appkit-common';
6
- import { CaipNetworksUtil } from '@reown/appkit-utils';
7
- import { WagmiAdapter } from '../client';
8
- import { LimitterUtil } from '../utils/LimitterUtil';
9
- import { mockAppKit } from './mocks/AppKit';
10
- vi.mock('@wagmi/core', async () => {
11
- const actual = await vi.importActual('@wagmi/core');
12
- return {
13
- ...actual,
14
- addConnector: vi.fn(),
15
- connect: vi.fn(() => mockConnect()),
16
- disconnect: vi.fn(),
17
- createConfig: vi.fn(() => mockWagmiConfig),
18
- getConnections: vi.fn(),
19
- switchChain: vi.fn(),
20
- getBalance: vi.fn(),
21
- getEnsName: vi.fn(),
22
- getEnsAvatar: vi.fn(),
23
- signMessage: vi.fn(),
24
- estimateGas: vi.fn(),
25
- sendTransaction: vi.fn(),
26
- getEnsAddress: vi.fn(),
27
- writeContract: vi.fn(),
28
- waitForTransactionReceipt: vi.fn(),
29
- getAccount: vi.fn(),
30
- prepareTransactionRequest: vi.fn(),
31
- reconnect: vi.fn(),
32
- watchAccount: vi.fn(),
33
- watchConnections: vi.fn(),
34
- watchPendingTransactions: vi.fn().mockReturnValue(vi.fn())
35
- };
36
- });
37
- const mockProjectId = 'test-project-id';
38
- const mockNetworks = [mainnet];
39
- const mockCaipNetworks = CaipNetworksUtil.extendCaipNetworks(mockNetworks, {
40
- projectId: mockProjectId,
41
- customNetworkImageUrls: {}
42
- });
43
- const mockWagmiConfig = {
44
- connectors: [
45
- {
46
- id: 'test-connector',
47
- getProvider() {
48
- return Promise.resolve({ connect: vi.fn(), request: vi.fn() });
49
- }
50
- }
51
- ],
52
- _internal: {
53
- connectors: {
54
- setup: vi.fn(),
55
- setState: vi.fn()
56
- }
57
- }
58
- };
59
- const mockConnect = vi.fn(() => ({
60
- chainId: 1,
61
- address: '0x123',
62
- accounts: ['0x123']
63
- }));
64
- describe('WagmiAdapter', () => {
65
- let adapter;
66
- beforeEach(() => {
67
- vi.clearAllMocks();
68
- adapter = new WagmiAdapter({
69
- networks: mockNetworks,
70
- projectId: mockProjectId
71
- });
72
- });
73
- describe('WagmiAdapter - constructor and initialization', () => {
74
- it('should initialize with correct parameters', () => {
75
- expect(adapter.projectId).toBe(mockProjectId);
76
- expect(adapter.adapterType).toBe('wagmi');
77
- expect(adapter.namespace).toBe('eip155');
78
- });
79
- it('should set wagmi connectors', async () => {
80
- vi.spyOn(wagmiCore, 'watchConnectors').mockImplementation(vi.fn());
81
- vi.spyOn(wagmiCore, 'watchConnectors');
82
- await adapter.syncConnectors({ networks: [mainnet], projectId: 'YOUR_PROJECT_ID' }, mockAppKit);
83
- expect(wagmiCore.watchConnectors).toHaveBeenCalledOnce();
84
- expect(adapter.connectors).toStrictEqual([
85
- {
86
- chain: 'eip155',
87
- chains: [],
88
- explorerId: undefined,
89
- id: 'test-connector',
90
- imageId: undefined,
91
- imageUrl: undefined,
92
- info: { rdns: 'test-connector' },
93
- provider: {
94
- connect: expect.any(Function),
95
- request: expect.any(Function)
96
- },
97
- name: undefined,
98
- type: 'EXTERNAL'
99
- }
100
- ]);
101
- });
102
- it('should not set info property for injected connector', () => {
103
- const mockConnectors = [
104
- {
105
- id: 'Browser Wallet',
106
- name: 'Browser Wallet',
107
- type: 'injected',
108
- info: { rdns: 'Browser Wallet' }
109
- }
110
- ];
111
- adapter.syncConnectors(mockConnectors);
112
- const injectedConnector = mockConnectors.filter((c) => c.id === 'injected')[0];
113
- expect(injectedConnector?.info).toBeUndefined();
114
- });
115
- it('should return reown RPC by default', () => {
116
- expect(adapter.wagmiChains?.[0].rpcUrls.default.http[0]).toBe(`https://rpc.walletconnect.org/v1/?chainId=eip155%3A1&projectId=${mockProjectId}`);
117
- });
118
- it('should return custom RPC if transports is provided', () => {
119
- const adapterWithCustomRpc = new WagmiAdapter({
120
- networks: mockNetworks,
121
- projectId: mockProjectId,
122
- transports: {
123
- [mainnet.id]: http('https://cloudflare-eth.com')
124
- }
125
- });
126
- expect(adapterWithCustomRpc.wagmiChains?.[0].rpcUrls.default.http[0]).toBe(`https://cloudflare-eth.com`);
127
- });
128
- it('should add connector with provider', async () => {
129
- const mockConnector = {
130
- id: 'injected',
131
- name: 'Injected Wallet',
132
- type: 'injected',
133
- getProvider() {
134
- return Promise.resolve({ connect: vi.fn(), request: vi.fn() });
135
- }
136
- };
137
- await adapter.addWagmiConnector(mockConnector);
138
- expect(adapter.connectors).toStrictEqual([
139
- {
140
- chain: 'eip155',
141
- chains: [],
142
- explorerId: undefined,
143
- id: 'injected',
144
- imageId: '07ba87ed-43aa-4adf-4540-9e6a2b9cae00',
145
- imageUrl: undefined,
146
- info: undefined,
147
- name: 'Browser Wallet',
148
- provider: {
149
- connect: expect.any(Function),
150
- request: expect.any(Function)
151
- },
152
- type: 'INJECTED'
153
- }
154
- ]);
155
- });
156
- });
157
- describe('WagmiAdapter - signMessage', () => {
158
- it('should sign a message successfully', async () => {
159
- const mockSignature = '0xmocksignature';
160
- vi.mocked(signMessage).mockResolvedValueOnce(mockSignature);
161
- const result = await adapter.signMessage({
162
- message: 'Hello',
163
- address: '0x123'
164
- });
165
- expect(result.signature).toBe(mockSignature);
166
- });
167
- });
168
- describe('WagmiAdapter - sendTransaction', () => {
169
- it('should send transaction successfully', async () => {
170
- const mockTxHash = '0xtxhash';
171
- vi.mocked(getAccount).mockReturnValue({
172
- chainId: 1,
173
- address: '0x123',
174
- addresses: [],
175
- chain: mainnet,
176
- connector: {},
177
- isConnected: true,
178
- isReconnecting: true,
179
- isConnecting: false,
180
- isDisconnected: false,
181
- status: 'reconnecting'
182
- });
183
- vi.mocked(wagmiSendTransaction).mockResolvedValue(mockTxHash);
184
- vi.mocked(waitForTransactionReceipt).mockResolvedValue({});
185
- const result = await adapter.sendTransaction({
186
- address: '0x123',
187
- to: '0x456',
188
- value: BigInt(1000),
189
- gas: BigInt(21000),
190
- gasPrice: BigInt(2000000000),
191
- data: '0x'
192
- });
193
- expect(result.hash).toBe(mockTxHash);
194
- });
195
- });
196
- describe('writeContract', () => {
197
- it('should write contract successfully', async () => {
198
- const mockTxHash = '0xtxhash';
199
- vi.mocked(wagmiWriteContract).mockResolvedValue(mockTxHash);
200
- const result = await adapter.writeContract({
201
- caipNetwork: mockCaipNetworks[0],
202
- caipAddress: 'eip155:1:0x123',
203
- tokenAddress: '0x123',
204
- fromAddress: '0x456',
205
- args: ['0x789', BigInt(1000)],
206
- abi: [],
207
- method: 'transfer',
208
- chainNamespace: 'eip155'
209
- });
210
- expect(result.hash).toBe(mockTxHash);
211
- });
212
- });
213
- describe('WagmiAdapter - getEnsAddress', () => {
214
- it('should resolve ENS address successfully', async () => {
215
- const mockAddress = '0x123';
216
- vi.mocked(wagmiGetEnsAddress).mockResolvedValue(mockAddress);
217
- const result = await adapter.getEnsAddress({
218
- name: 'test.eth',
219
- caipNetwork: mockCaipNetworks[0]
220
- });
221
- expect(result.address).toBe(mockAddress);
222
- });
223
- it('should return false for unresolvable ENS', async () => {
224
- vi.mocked(wagmiGetEnsAddress).mockResolvedValue(null);
225
- const result = await adapter.getEnsAddress({
226
- name: 'nonexistent.eth',
227
- caipNetwork: mockCaipNetworks[0]
228
- });
229
- expect(result.address).toBe(false);
230
- });
231
- });
232
- describe('WagmiAdapter - estimateGas', () => {
233
- it('should estimate gas successfully', async () => {
234
- const mockGas = BigInt(21000);
235
- vi.mocked(estimateGas).mockResolvedValue(mockGas);
236
- const result = await adapter.estimateGas({
237
- address: '0x123',
238
- to: '0x456',
239
- data: '0x',
240
- caipNetwork: mockCaipNetworks[0]
241
- });
242
- expect(result.gas).toBe(mockGas);
243
- });
244
- it('should throw error when estimation fails', async () => {
245
- vi.mocked(estimateGas).mockRejectedValue(new Error());
246
- await expect(adapter.estimateGas({
247
- address: '0x123',
248
- to: '0x456',
249
- data: '0x',
250
- caipNetwork: mockCaipNetworks[0]
251
- })).rejects.toThrow('WagmiAdapter:estimateGas - error estimating gas');
252
- });
253
- });
254
- describe('WagmiAdapter - parseUnits and formatUnits', () => {
255
- it('should parse units correctly', () => {
256
- const result = adapter.parseUnits({
257
- value: '1.5',
258
- decimals: 18
259
- });
260
- expect(result).toBe(BigInt('1500000000000000000'));
261
- });
262
- it('should format units correctly', () => {
263
- const result = adapter.formatUnits({
264
- value: BigInt('1500000000000000000'),
265
- decimals: 18
266
- });
267
- expect(result).toBe('1.5');
268
- });
269
- });
270
- describe('WagmiAdapter - getBalance', () => {
271
- it('should get balance successfully', async () => {
272
- vi.mocked(getBalance).mockResolvedValue({
273
- formatted: '1.5',
274
- symbol: 'ETH'
275
- });
276
- const result = await adapter.getBalance({
277
- address: '0x123',
278
- chainId: 1
279
- });
280
- expect(result).toEqual({
281
- balance: '1.5',
282
- symbol: 'ETH'
283
- });
284
- });
285
- it('should return empty balance when network not found', async () => {
286
- const result = await adapter.getBalance({
287
- address: '0x123',
288
- chainId: 999
289
- });
290
- expect(result).toEqual({
291
- balance: '',
292
- symbol: ''
293
- });
294
- });
295
- });
296
- describe('WagmiAdapter - getProfile', () => {
297
- it('should get profile successfully', async () => {
298
- const mockEnsName = 'test.eth';
299
- const mockAvatar = 'https://avatar.com/test.jpg';
300
- vi.mocked(getEnsName).mockResolvedValue(mockEnsName);
301
- vi.mocked(getEnsAvatar).mockResolvedValue(mockAvatar);
302
- const result = await adapter.getProfile({
303
- address: '0x123',
304
- chainId: 1
305
- });
306
- expect(result).toEqual({
307
- profileName: mockEnsName,
308
- profileImage: mockAvatar
309
- });
310
- });
311
- });
312
- describe('WagmiAdapter - connect and disconnect', () => {
313
- it('should connect successfully', async () => {
314
- const result = await adapter.connect({
315
- id: 'test-connector',
316
- provider: {},
317
- type: 'injected',
318
- chainId: 1
319
- });
320
- expect(result.address).toBe('0x123');
321
- expect(result.chainId).toBe(1);
322
- });
323
- it('should disconnect successfully', async () => {
324
- const mockConnections = [
325
- { connector: { id: 'connector1' } },
326
- { connector: { id: 'connector2' } }
327
- ];
328
- vi.spyOn(wagmiCore, 'getConnections').mockReturnValue(mockConnections);
329
- vi.spyOn(wagmiCore, 'createConfig').mockReturnValue({
330
- connectors: mockConnections.map(({ connector }) => connector)
331
- });
332
- const adapter = new WagmiAdapter({
333
- networks: mockNetworks,
334
- projectId: mockProjectId
335
- });
336
- const disconnectSpy = vi.spyOn(wagmiCore, 'disconnect').mockImplementationOnce(vi.fn());
337
- await adapter.disconnect();
338
- expect(disconnectSpy).toHaveBeenCalledTimes(2);
339
- });
340
- });
341
- describe('WagmiAdapter - switchNetwork', () => {
342
- it('should switch network successfully', async () => {
343
- await adapter.switchNetwork({
344
- caipNetwork: mockCaipNetworks[0]
345
- });
346
- expect(switchChain).toHaveBeenCalledWith(expect.anything(), expect.objectContaining({
347
- chainId: 1
348
- }));
349
- });
350
- });
351
- describe('WagmiAdapter - Permissions', () => {
352
- const mockProvider = {
353
- request: vi.fn()
354
- };
355
- beforeEach(() => {
356
- vi.mocked(getConnections).mockReturnValue([
357
- {
358
- connector: {
359
- getProvider: () => Promise.resolve(mockProvider)
360
- }
361
- }
362
- ]);
363
- });
364
- it('should get capabilities from session properties', async () => {
365
- const mockRequest = vi.fn();
366
- const mockConnections = [
367
- {
368
- connector: {
369
- id: 'test-connector',
370
- getProvider: vi.fn().mockReturnValue({
371
- session: {
372
- sessionProperties: {}
373
- },
374
- request: mockRequest
375
- })
376
- }
377
- }
378
- ];
379
- vi.spyOn(wagmiCore, 'getConnections').mockReturnValue(mockConnections);
380
- vi.spyOn(wagmiCore, 'createConfig').mockReturnValue({
381
- connectors: mockConnections.map(({ connector }) => connector)
382
- });
383
- const adapter = new WagmiAdapter({
384
- networks: mockNetworks,
385
- projectId: mockProjectId
386
- });
387
- await adapter.getCapabilities('eip155:1:0x123');
388
- expect(mockRequest).toHaveBeenCalledWith({
389
- method: 'wallet_getCapabilities',
390
- params: ['eip155:1:0x123']
391
- });
392
- });
393
- it('should call provider request with correct params', async () => {
394
- const mockRequest = vi.fn();
395
- const mockConnections = [
396
- {
397
- connector: {
398
- id: 'test-connector',
399
- getProvider: vi.fn().mockReturnValue({
400
- session: {
401
- sessionProperties: {}
402
- },
403
- request: mockRequest
404
- })
405
- }
406
- }
407
- ];
408
- vi.spyOn(wagmiCore, 'getConnections').mockReturnValue(mockConnections);
409
- vi.spyOn(wagmiCore, 'createConfig').mockReturnValue({
410
- connectors: mockConnections.map(({ connector }) => connector)
411
- });
412
- const mockParams = {
413
- pci: 'test-pci',
414
- expiry: 1234567890,
415
- address: '0x123',
416
- permissions: ['eth_accounts']
417
- };
418
- const adapter = new WagmiAdapter({
419
- networks: mockNetworks,
420
- projectId: mockProjectId
421
- });
422
- await adapter.grantPermissions(mockParams);
423
- expect(mockRequest).toHaveBeenCalledWith({
424
- method: 'wallet_grantPermissions',
425
- params: mockParams
426
- });
427
- });
428
- it('should call provider request with correct params', async () => {
429
- const mockParams = {
430
- pci: 'test-pci',
431
- expiry: 1234567890,
432
- address: '0x123',
433
- permissions: ['eth_accounts']
434
- };
435
- const mockRequest = vi.fn();
436
- const mockConnections = [
437
- {
438
- connector: {
439
- id: 'test-connector',
440
- getProvider: vi.fn().mockReturnValue({
441
- session: {
442
- sessionProperties: {}
443
- },
444
- request: mockRequest
445
- })
446
- }
447
- }
448
- ];
449
- vi.spyOn(wagmiCore, 'getConnections').mockReturnValue(mockConnections);
450
- vi.spyOn(wagmiCore, 'createConfig').mockReturnValue({
451
- connectors: mockConnections.map(({ connector }) => connector)
452
- });
453
- const adapter = new WagmiAdapter({
454
- networks: mockNetworks,
455
- projectId: mockProjectId
456
- });
457
- await adapter.revokePermissions(mockParams);
458
- expect(mockRequest).toHaveBeenCalledWith({
459
- method: 'wallet_revokePermissions',
460
- params: mockParams
461
- });
462
- });
463
- });
464
- describe('WagmiAdapter - watchPendingTransactions', () => {
465
- it('should emit pendingTransactions when transactions are pending', async () => {
466
- const adapter = new WagmiAdapter({
467
- networks: mockNetworks,
468
- projectId: mockProjectId,
469
- pendingTransactionsFilter: {
470
- enable: true,
471
- pollingInterval: 5000
472
- }
473
- });
474
- const emitSpy = vi.spyOn(adapter, 'emit');
475
- vi.mocked(watchPendingTransactions).mockImplementation((_, { onTransactions }) => {
476
- onTransactions(['0xtx1', '0xtx2']);
477
- return vi.fn();
478
- });
479
- adapter['setupWatchPendingTransactions']();
480
- expect(emitSpy).toHaveBeenCalledWith('pendingTransactions');
481
- });
482
- it('should limit the amount of pendingTransactions calls', async () => {
483
- const unsubscribe = vi.fn();
484
- vi.mocked(watchAccount).mockImplementation((_, { onChange }) => {
485
- onChange({ address: '0x123', status: 'connected' }, {});
486
- return vi.fn();
487
- });
488
- vi.spyOn(wagmiCore, 'watchPendingTransactions').mockReturnValue(unsubscribe);
489
- new WagmiAdapter({
490
- networks: mockNetworks,
491
- projectId: mockProjectId,
492
- pendingTransactionsFilter: {
493
- enable: true,
494
- pollingInterval: 500
495
- }
496
- });
497
- LimitterUtil.state.pendingTransactions = ConstantsUtil.LIMITS.PENDING_TRANSACTIONS;
498
- await new Promise(resolve => setTimeout(resolve, 100));
499
- expect(unsubscribe).toHaveBeenCalled();
500
- });
501
- });
502
- describe('WagmiAdapter - watchAccount', () => {
503
- let adapter;
504
- beforeAll(() => {
505
- adapter = new WagmiAdapter({
506
- networks: mockNetworks,
507
- projectId: mockProjectId,
508
- pendingTransactionsFilter: {
509
- enable: true,
510
- pollingInterval: 5000
511
- }
512
- });
513
- });
514
- beforeEach(() => {
515
- vi.clearAllMocks();
516
- });
517
- it('should emit accountChanged if previous account status is not connected', async () => {
518
- const currAccount = {
519
- status: 'connected',
520
- address: '0x123',
521
- chainId: 1
522
- };
523
- const prevAccount = {
524
- status: 'connecting',
525
- address: '0x123',
526
- chainId: 1
527
- };
528
- vi.mocked(watchAccount).mockImplementation((_, { onChange }) => {
529
- onChange(currAccount, prevAccount);
530
- return vi.fn();
531
- });
532
- const accountChangedSpy = vi.fn();
533
- adapter.on('accountChanged', accountChangedSpy);
534
- adapter['setupWatchers']();
535
- expect(accountChangedSpy).toHaveBeenCalledWith({
536
- address: currAccount.address
537
- });
538
- });
539
- it('should emit accountChanged current address and previous address are not the same', async () => {
540
- const currAccount = {
541
- status: 'connected',
542
- address: '0x123',
543
- chainId: 1
544
- };
545
- const prevAccount = {
546
- status: 'connected',
547
- address: '0x321',
548
- chainId: 1
549
- };
550
- vi.mocked(watchAccount).mockImplementation((_, { onChange }) => {
551
- onChange(currAccount, prevAccount);
552
- return vi.fn();
553
- });
554
- const adapter = new WagmiAdapter({
555
- networks: mockNetworks,
556
- projectId: mockProjectId,
557
- pendingTransactionsFilter: {
558
- enable: true,
559
- pollingInterval: 5000
560
- }
561
- });
562
- const accountChangedSpy = vi.fn();
563
- adapter.on('accountChanged', accountChangedSpy);
564
- adapter['setupWatchers']();
565
- expect(accountChangedSpy).toHaveBeenCalledWith({
566
- address: currAccount.address
567
- });
568
- });
569
- it('should not emit accountChanged if current status is not connected', async () => {
570
- const currAccount = {
571
- status: 'connecting',
572
- address: '0x123',
573
- chainId: 1
574
- };
575
- const prevAccount = {
576
- status: 'connected',
577
- address: '0x123',
578
- chainId: 1
579
- };
580
- vi.mocked(watchAccount).mockImplementation((_, { onChange }) => {
581
- onChange(currAccount, prevAccount);
582
- return vi.fn();
583
- });
584
- const accountChangedSpy = vi.fn();
585
- adapter.on('accountChanged', accountChangedSpy);
586
- adapter['setupWatchers']();
587
- expect(accountChangedSpy).not.toHaveBeenCalled();
588
- });
589
- it('should emit disconnect if status is disconnected and previous data is connected', async () => {
590
- const currAccount = {
591
- status: 'disconnected',
592
- address: undefined,
593
- chainId: 1
594
- };
595
- const prevAccount = {
596
- status: 'connected',
597
- address: '0x123',
598
- chainId: 1
599
- };
600
- vi.mocked(watchAccount).mockImplementation((_, { onChange }) => {
601
- onChange(currAccount, prevAccount);
602
- return vi.fn();
603
- });
604
- const disconnectSpy = vi.fn();
605
- adapter.on('disconnect', disconnectSpy);
606
- adapter['setupWatchers']();
607
- expect(disconnectSpy).toHaveBeenCalled();
608
- });
609
- it('should not emit disconnect if previous account data is undefined and current account data is disconnected', async () => {
610
- const currAccount = {
611
- status: 'disconnected',
612
- address: '0x123',
613
- chainId: 1
614
- };
615
- const prevAccount = {
616
- status: 'disconnected',
617
- address: undefined,
618
- chainId: 1
619
- };
620
- vi.mocked(watchAccount).mockImplementation((_, { onChange }) => {
621
- onChange(currAccount, prevAccount);
622
- return vi.fn();
623
- });
624
- const disconnectSpy = vi.fn();
625
- adapter.on('disconnect', disconnectSpy);
626
- adapter['setupWatchers']();
627
- expect(disconnectSpy).not.toHaveBeenCalled();
628
- });
629
- });
630
- });
631
- //# sourceMappingURL=client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../../src/tests/client.test.ts"],"names":[],"mappings":"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"}