@reown/appkit 1.6.8 → 1.6.9-rc.0
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.
- package/dist/esm/exports/basic.js +11 -0
- package/dist/esm/exports/basic.js.map +1 -0
- package/dist/esm/exports/constants.js +1 -1
- package/dist/esm/exports/constants.js.map +1 -1
- package/dist/esm/package.json +6 -6
- package/dist/esm/src/client/appkit-basic.js +35 -0
- package/dist/esm/src/client/appkit-basic.js.map +1 -0
- package/dist/esm/src/client/appkit.js +371 -0
- package/dist/esm/src/client/appkit.js.map +1 -0
- package/dist/esm/src/client/core.js +1367 -0
- package/dist/esm/src/client/core.js.map +1 -0
- package/dist/esm/src/client.js +98 -24
- package/dist/esm/src/client.js.map +1 -1
- package/dist/esm/src/utils/HelpersUtil.js.map +1 -1
- package/dist/esm/tests/client/adapter-management.test.js +83 -0
- package/dist/esm/tests/client/adapter-management.test.js.map +1 -0
- package/dist/esm/tests/client/appkit-basic.test.js +68 -0
- package/dist/esm/tests/client/appkit-basic.test.js.map +1 -0
- package/dist/esm/tests/client/balance.test.js +54 -0
- package/dist/esm/tests/client/balance.test.js.map +1 -0
- package/dist/esm/tests/client/connection.test.js +52 -0
- package/dist/esm/tests/client/connection.test.js.map +1 -0
- package/dist/esm/tests/client/initialization.test.js +122 -0
- package/dist/esm/tests/client/initialization.test.js.map +1 -0
- package/dist/esm/tests/client/listeners.test.js +50 -0
- package/dist/esm/tests/client/listeners.test.js.map +1 -0
- package/dist/esm/tests/client/public-methods.test.js +654 -0
- package/dist/esm/tests/client/public-methods.test.js.map +1 -0
- package/dist/esm/tests/client/universal-adapter.test.js +44 -0
- package/dist/esm/tests/client/universal-adapter.test.js.map +1 -0
- package/dist/esm/tests/client/walletconnect-events.test.js +61 -0
- package/dist/esm/tests/client/walletconnect-events.test.js.map +1 -0
- package/dist/esm/tests/connectors/WalletConnectConnector.test.js +63 -0
- package/dist/esm/tests/connectors/WalletConnectConnector.test.js.map +1 -0
- package/dist/esm/tests/mocks/Account.js +13 -0
- package/dist/esm/tests/mocks/Account.js.map +1 -0
- package/dist/esm/tests/mocks/Adapter.js +95 -0
- package/dist/esm/tests/mocks/Adapter.js.map +1 -0
- package/dist/esm/tests/mocks/AppKit.js +24 -0
- package/dist/esm/tests/mocks/AppKit.js.map +1 -0
- package/dist/esm/tests/mocks/Networks.js +17 -0
- package/dist/esm/tests/mocks/Networks.js.map +1 -0
- package/dist/esm/tests/mocks/Options.js +17 -0
- package/dist/esm/tests/mocks/Options.js.map +1 -0
- package/dist/esm/tests/mocks/Providers.js +46 -0
- package/dist/esm/tests/mocks/Providers.js.map +1 -0
- package/dist/esm/tests/mocks/UniversalProvider.js +139 -0
- package/dist/esm/tests/mocks/UniversalProvider.js.map +1 -0
- package/dist/esm/tests/siwe.test.js +258 -0
- package/dist/esm/tests/siwe.test.js.map +1 -0
- package/dist/esm/tests/test-utils.js +36 -0
- package/dist/esm/tests/test-utils.js.map +1 -0
- package/dist/esm/tests/universal-adapter.test.js +246 -0
- package/dist/esm/tests/universal-adapter.test.js.map +1 -0
- package/dist/esm/tests/utils/HelpersUtil.test.js +218 -0
- package/dist/esm/tests/utils/HelpersUtil.test.js.map +1 -0
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/types/exports/basic.d.ts +8 -0
- package/dist/types/exports/constants.d.ts +1 -1
- package/dist/types/src/client/appkit-basic.d.ts +24 -0
- package/dist/types/src/client/appkit.d.ts +23 -0
- package/dist/types/src/client/core.d.ts +208 -0
- package/dist/types/src/client.d.ts +3 -2
- package/dist/types/src/library/react/index.d.ts +1 -1
- package/dist/types/src/networks/bitcoin.d.ts +5 -5
- package/dist/types/src/networks/solana/solana.d.ts +1 -1
- package/dist/types/src/networks/solana/solanaDevnet.d.ts +1 -1
- package/dist/types/src/networks/solana/solanaTestnet.d.ts +1 -1
- package/dist/types/src/store/ProviderUtil.d.ts +5 -3
- package/dist/types/tests/client/adapter-management.test.d.ts +1 -0
- package/dist/types/tests/client/appkit-basic.test.d.ts +1 -0
- package/dist/types/tests/client/balance.test.d.ts +1 -0
- package/dist/types/tests/client/connection.test.d.ts +1 -0
- package/dist/types/tests/client/initialization.test.d.ts +1 -0
- package/dist/types/tests/client/listeners.test.d.ts +1 -0
- package/dist/types/tests/client/public-methods.test.d.ts +1 -0
- package/dist/types/tests/client/universal-adapter.test.d.ts +1 -0
- package/dist/types/tests/client/walletconnect-events.test.d.ts +1 -0
- package/dist/types/tests/connectors/WalletConnectConnector.test.d.ts +1 -0
- package/dist/types/tests/mocks/Account.d.ts +12 -0
- package/dist/types/tests/mocks/Adapter.d.ts +5 -0
- package/dist/types/tests/mocks/AppKit.d.ts +3 -0
- package/dist/types/tests/mocks/Networks.d.ts +4 -0
- package/dist/types/tests/mocks/Options.d.ts +6 -0
- package/dist/types/tests/mocks/Providers.d.ts +42 -0
- package/dist/types/tests/mocks/UniversalProvider.d.ts +3 -0
- package/dist/types/tests/siwe.test.d.ts +1 -0
- package/dist/types/tests/test-utils.d.ts +4 -0
- package/dist/types/tests/universal-adapter.test.d.ts +1 -0
- package/dist/types/tests/utils/HelpersUtil.test.d.ts +1 -0
- package/package.json +14 -14
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { ChainController, ConnectorController } from '@reown/appkit-core';
|
|
3
|
+
import { AppKit } from '../../src/client.js';
|
|
4
|
+
import { mockBitcoinAdapter } from '../mocks/Adapter.js';
|
|
5
|
+
import { bitcoin } from '../mocks/Networks.js';
|
|
6
|
+
import { mockOptions } from '../mocks/Options.js';
|
|
7
|
+
import { mockBlockchainApiController, mockStorageUtil, mockWindowAndDocument } from '../test-utils';
|
|
8
|
+
mockWindowAndDocument();
|
|
9
|
+
mockStorageUtil();
|
|
10
|
+
mockBlockchainApiController();
|
|
11
|
+
describe('Adapter Management', () => {
|
|
12
|
+
describe('addAdapter', () => {
|
|
13
|
+
it('should add a new adapter successfully', () => {
|
|
14
|
+
const addAdapter = vi.spyOn(ChainController, 'addAdapter');
|
|
15
|
+
const appKit = new AppKit(mockOptions);
|
|
16
|
+
appKit.addAdapter(mockBitcoinAdapter, [bitcoin]);
|
|
17
|
+
expect(appKit.chainAdapters?.bip122).toBeDefined();
|
|
18
|
+
expect(appKit.chainNamespaces).toContain('bip122');
|
|
19
|
+
expect(addAdapter).toHaveBeenCalledWith(mockBitcoinAdapter, {
|
|
20
|
+
connectionControllerClient: expect.any(Object),
|
|
21
|
+
networkControllerClient: expect.any(Object)
|
|
22
|
+
}, expect.any(Array));
|
|
23
|
+
});
|
|
24
|
+
it('should not add adapter if clients are not initialized', () => {
|
|
25
|
+
const appKit = new AppKit(mockOptions);
|
|
26
|
+
appKit.connectionControllerClient = undefined;
|
|
27
|
+
appKit.networkControllerClient = undefined;
|
|
28
|
+
appKit.addAdapter(mockBitcoinAdapter, [bitcoin]);
|
|
29
|
+
expect(appKit.chainAdapters?.bip122).toBeUndefined();
|
|
30
|
+
});
|
|
31
|
+
it('should not add adapter if chainAdapters is not initialized', () => {
|
|
32
|
+
const addAdapter = vi.spyOn(ChainController, 'addAdapter');
|
|
33
|
+
const appKit = new AppKit(mockOptions);
|
|
34
|
+
const initChainAdapter = vi.spyOn(appKit, 'initChainAdapter');
|
|
35
|
+
const createAdapter = vi.spyOn(appKit, 'createAdapter');
|
|
36
|
+
appKit.chainAdapters = undefined;
|
|
37
|
+
appKit.addAdapter(mockBitcoinAdapter, [bitcoin]);
|
|
38
|
+
expect(createAdapter).not.toHaveBeenCalled();
|
|
39
|
+
expect(initChainAdapter).not.toHaveBeenCalled();
|
|
40
|
+
expect(addAdapter).not.toHaveBeenCalled();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
describe('removeAdapter', () => {
|
|
44
|
+
it('should remove an existing adapter successfully', () => {
|
|
45
|
+
const removeAdapter = vi.spyOn(ChainController, 'removeAdapter');
|
|
46
|
+
const removeConnectorAdapter = vi.spyOn(ConnectorController, 'removeAdapter');
|
|
47
|
+
const appKit = new AppKit(mockOptions);
|
|
48
|
+
appKit.removeAdapter('eip155');
|
|
49
|
+
expect(appKit.chainAdapters?.eip155).toBeUndefined();
|
|
50
|
+
expect(appKit.chainNamespaces).not.toContain('eip155');
|
|
51
|
+
expect(removeAdapter).toHaveBeenCalledWith('eip155');
|
|
52
|
+
expect(removeConnectorAdapter).toHaveBeenCalledWith('eip155');
|
|
53
|
+
});
|
|
54
|
+
it('should not remove adapter if user is connected', () => {
|
|
55
|
+
const removeAdapter = vi.spyOn(ChainController, 'removeAdapter');
|
|
56
|
+
const removeConnectorAdapter = vi.spyOn(ConnectorController, 'removeAdapter');
|
|
57
|
+
vi.spyOn(ChainController.state, 'activeCaipAddress', 'get').mockReturnValue('eip155:1:0x123');
|
|
58
|
+
const appKit = new AppKit(mockOptions);
|
|
59
|
+
appKit.removeAdapter('eip155');
|
|
60
|
+
expect(appKit.chainAdapters?.eip155).toBeDefined();
|
|
61
|
+
expect(appKit.chainNamespaces).toContain('eip155');
|
|
62
|
+
expect(removeAdapter).not.toHaveBeenCalled();
|
|
63
|
+
expect(removeConnectorAdapter).not.toHaveBeenCalled();
|
|
64
|
+
vi.spyOn(ChainController.state, 'activeCaipAddress', 'get').mockClear();
|
|
65
|
+
});
|
|
66
|
+
it('should not remove adapter if adapter does not exist', () => {
|
|
67
|
+
const removeAdapter = vi.spyOn(ChainController, 'removeAdapter');
|
|
68
|
+
const removeConnectorAdapter = vi.spyOn(ConnectorController, 'removeAdapter');
|
|
69
|
+
const appKit = new AppKit(mockOptions);
|
|
70
|
+
appKit.removeAdapter('bip122');
|
|
71
|
+
expect(removeAdapter).not.toHaveBeenCalled();
|
|
72
|
+
expect(removeConnectorAdapter).not.toHaveBeenCalled();
|
|
73
|
+
});
|
|
74
|
+
it('should not remove adapter if chainAdapters is not initialized', () => {
|
|
75
|
+
const appKit = new AppKit(mockOptions);
|
|
76
|
+
appKit.chainAdapters = undefined;
|
|
77
|
+
appKit.removeAdapter('eip155');
|
|
78
|
+
expect(ChainController.removeAdapter).not.toHaveBeenCalled();
|
|
79
|
+
expect(ConnectorController.removeAdapter).not.toHaveBeenCalled();
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=adapter-management.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-management.test.js","sourceRoot":"","sources":["../../../../tests/client/adapter-management.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { AccountController, ApiController, ConnectionController, ModalController } from '@reown/appkit-core';
|
|
3
|
+
import { AppKit } from '../../src/client/appkit-basic';
|
|
4
|
+
import { mockOptions } from '../mocks/Options';
|
|
5
|
+
import { mockBlockchainApiController, mockStorageUtil, mockWindowAndDocument } from '../test-utils';
|
|
6
|
+
mockWindowAndDocument();
|
|
7
|
+
mockStorageUtil();
|
|
8
|
+
mockBlockchainApiController();
|
|
9
|
+
describe('AppKitBasic', () => {
|
|
10
|
+
let appKit;
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
appKit = new AppKit(mockOptions);
|
|
13
|
+
});
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
vi.clearAllMocks();
|
|
16
|
+
});
|
|
17
|
+
it('should have valid default state', () => {
|
|
18
|
+
expect(appKit.activeAdapter).toBeUndefined();
|
|
19
|
+
expect(appKit.adapters).toBeUndefined();
|
|
20
|
+
expect(appKit.activeChainNamespace).toBeUndefined();
|
|
21
|
+
expect(appKit.adapter).toBeUndefined();
|
|
22
|
+
});
|
|
23
|
+
describe('open', () => {
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
vi.spyOn(AccountController, 'state', 'get').mockReturnValue({
|
|
26
|
+
caipAddress: undefined
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
it('should open modal when not connected', async () => {
|
|
30
|
+
const modalSpy = vi.spyOn(ModalController, 'open');
|
|
31
|
+
await appKit.open({ view: 'Connect' });
|
|
32
|
+
expect(modalSpy).toHaveBeenCalledWith({ view: 'Connect' });
|
|
33
|
+
});
|
|
34
|
+
it('should not open modal when connected', async () => {
|
|
35
|
+
vi.spyOn(AccountController, 'state', 'get').mockReturnValue({
|
|
36
|
+
caipAddress: 'eip155:1:0x123'
|
|
37
|
+
});
|
|
38
|
+
const modalSpy = vi.spyOn(ModalController, 'open');
|
|
39
|
+
await appKit.open({ view: 'Connect' });
|
|
40
|
+
expect(modalSpy).not.toHaveBeenCalled();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
describe('close', () => {
|
|
44
|
+
it('should call finalizeWcConnection when manualWCControl is true', async () => {
|
|
45
|
+
vi.spyOn(ConnectionController, 'finalizeWcConnection');
|
|
46
|
+
const appKit = new AppKit({ ...mockOptions, manualWCControl: true });
|
|
47
|
+
await appKit.close();
|
|
48
|
+
expect(ConnectionController.finalizeWcConnection).toHaveBeenCalled();
|
|
49
|
+
});
|
|
50
|
+
it('should not call finalizeWcConnection when manualWCControl is false', async () => {
|
|
51
|
+
vi.spyOn(ConnectionController, 'finalizeWcConnection');
|
|
52
|
+
const appKit = new AppKit({ ...mockOptions, manualWCControl: false });
|
|
53
|
+
await appKit.close();
|
|
54
|
+
expect(ConnectionController.finalizeWcConnection).not.toHaveBeenCalled();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('initialize', () => {
|
|
58
|
+
it('should not initialize excluded wallet rdns if basic is true', () => {
|
|
59
|
+
vi.spyOn(ApiController, 'initializeExcludedWalletRdns');
|
|
60
|
+
new AppKit({
|
|
61
|
+
...mockOptions,
|
|
62
|
+
excludeWalletIds: ['eoa', 'ordinal']
|
|
63
|
+
});
|
|
64
|
+
expect(ApiController.initializeExcludedWalletRdns).not.toHaveBeenCalled();
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=appkit-basic.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appkit-basic.test.js","sourceRoot":"","sources":["../../../../tests/client/appkit-basic.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { NetworkUtil } from '@reown/appkit-common';
|
|
3
|
+
import { setBalance } from '@reown/appkit-core';
|
|
4
|
+
import { AppKit } from '../../src/client';
|
|
5
|
+
import { mockEvmAdapter } from '../mocks/Adapter';
|
|
6
|
+
import { base, mainnet, sepolia } from '../mocks/Networks';
|
|
7
|
+
import { mockOptions } from '../mocks/Options';
|
|
8
|
+
import { mockBlockchainApiController, mockStorageUtil, mockWindowAndDocument } from '../test-utils';
|
|
9
|
+
mockWindowAndDocument();
|
|
10
|
+
mockStorageUtil();
|
|
11
|
+
mockBlockchainApiController();
|
|
12
|
+
describe('Balance sync', () => {
|
|
13
|
+
it('should not sync balance if theres no matching caipNetwork', async () => {
|
|
14
|
+
const getNetworksByNamespaceSpy = vi.spyOn(NetworkUtil, 'getNetworksByNamespace');
|
|
15
|
+
const setBalanceSpy = vi.mocked(setBalance);
|
|
16
|
+
const appKit = new AppKit(mockOptions);
|
|
17
|
+
await appKit['syncBalance']({
|
|
18
|
+
address: '0x123',
|
|
19
|
+
chainId: base.id,
|
|
20
|
+
chainNamespace: base.chainNamespace
|
|
21
|
+
});
|
|
22
|
+
expect(getNetworksByNamespaceSpy).toHaveBeenCalled();
|
|
23
|
+
expect(mockEvmAdapter.getBalance).not.toHaveBeenCalled();
|
|
24
|
+
expect(setBalanceSpy).not.toHaveBeenCalled();
|
|
25
|
+
});
|
|
26
|
+
it('should fetch native balance on testnet', async () => {
|
|
27
|
+
const getNetworksByNamespaceSpy = vi.spyOn(NetworkUtil, 'getNetworksByNamespace');
|
|
28
|
+
const setBalanceSpy = vi.mocked(setBalance);
|
|
29
|
+
const mockAccount = {
|
|
30
|
+
address: '0x123',
|
|
31
|
+
chainId: sepolia.id,
|
|
32
|
+
chainNamespace: sepolia.chainNamespace
|
|
33
|
+
};
|
|
34
|
+
const appKit = new AppKit({ ...mockOptions, networks: [sepolia] });
|
|
35
|
+
await appKit['syncAccount'](mockAccount);
|
|
36
|
+
expect(getNetworksByNamespaceSpy).toHaveBeenCalled();
|
|
37
|
+
expect(mockEvmAdapter.getBalance).toHaveBeenCalled();
|
|
38
|
+
expect(setBalanceSpy).toHaveBeenCalledWith('1.00', 'ETH', sepolia.chainNamespace);
|
|
39
|
+
});
|
|
40
|
+
it('should set the correct native token balance', async () => {
|
|
41
|
+
const getNetworksByNamespaceSpy = vi.spyOn(NetworkUtil, 'getNetworksByNamespace');
|
|
42
|
+
const setBalanceSpy = vi.mocked(setBalance);
|
|
43
|
+
const appKit = new AppKit(mockOptions);
|
|
44
|
+
await appKit['syncBalance']({
|
|
45
|
+
address: '0x123',
|
|
46
|
+
chainId: mainnet.id,
|
|
47
|
+
chainNamespace: mainnet.chainNamespace
|
|
48
|
+
});
|
|
49
|
+
expect(getNetworksByNamespaceSpy).toHaveBeenCalled();
|
|
50
|
+
expect(mockEvmAdapter.getBalance).toHaveBeenCalled();
|
|
51
|
+
expect(setBalanceSpy).toHaveBeenCalledWith('1.00', 'ETH', 'eip155');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=balance.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.test.js","sourceRoot":"","sources":["../../../../tests/client/balance.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { StorageUtil, setStatus } from '@reown/appkit-core';
|
|
3
|
+
import { AppKit } from '../../src/client';
|
|
4
|
+
import { mockEvmAdapter, mockSolanaAdapter } from '../mocks/Adapter';
|
|
5
|
+
import { mainnet, sepolia } from '../mocks/Networks';
|
|
6
|
+
import { mockOptions } from '../mocks/Options';
|
|
7
|
+
import { mockBlockchainApiController, mockStorageUtil, mockWindowAndDocument } from '../test-utils';
|
|
8
|
+
mockWindowAndDocument();
|
|
9
|
+
mockStorageUtil();
|
|
10
|
+
mockBlockchainApiController();
|
|
11
|
+
describe('syncExistingConnection', () => {
|
|
12
|
+
it('should set status to "connecting" and sync the connection when a connector and namespace are present', async () => {
|
|
13
|
+
const setStatusSpy = vi.mocked(setStatus);
|
|
14
|
+
vi.spyOn(StorageUtil, 'getConnectedConnectorId').mockReturnValue('evm-connector');
|
|
15
|
+
vi.spyOn(StorageUtil, 'getConnectionStatus').mockReturnValue('connected');
|
|
16
|
+
const appKit = new AppKit({
|
|
17
|
+
...mockOptions,
|
|
18
|
+
adapters: [mockEvmAdapter],
|
|
19
|
+
networks: [mainnet, sepolia]
|
|
20
|
+
});
|
|
21
|
+
await appKit['syncExistingConnection']();
|
|
22
|
+
expect(setStatusSpy).toHaveBeenCalledWith('connecting', 'eip155');
|
|
23
|
+
expect(setStatusSpy).toHaveBeenCalledWith('connected', 'eip155');
|
|
24
|
+
vi.spyOn(StorageUtil, 'getConnectedConnectorId').mockReturnValue(undefined);
|
|
25
|
+
vi.spyOn(StorageUtil, 'getConnectionStatus').mockReturnValue('connected');
|
|
26
|
+
await appKit['syncExistingConnection']();
|
|
27
|
+
expect(setStatus).toHaveBeenCalledWith('connecting', 'eip155');
|
|
28
|
+
expect(setStatus).toHaveBeenCalledWith('disconnected', 'eip155');
|
|
29
|
+
vi.spyOn(StorageUtil, 'getConnectedConnectorId').mockClear();
|
|
30
|
+
vi.spyOn(StorageUtil, 'getConnectionStatus').mockClear();
|
|
31
|
+
});
|
|
32
|
+
it('should reconnect to multiple namespaces if previously connected', async () => {
|
|
33
|
+
const setConnectedConnectorId = vi.spyOn(StorageUtil, 'setConnectedConnectorId');
|
|
34
|
+
// const setProviderId = vi.spyOn(ProviderUtil, 'setProviderId').mockImplementation(() => {})
|
|
35
|
+
vi.spyOn(StorageUtil, 'getConnectedConnectorId').mockReturnValue('universal-connector');
|
|
36
|
+
const appKit = new AppKit(mockOptions);
|
|
37
|
+
await appKit['syncExistingConnection']();
|
|
38
|
+
expect(mockEvmAdapter.syncConnection).toHaveBeenCalled();
|
|
39
|
+
expect(mockSolanaAdapter.syncConnection).toHaveBeenCalled();
|
|
40
|
+
expect(mockEvmAdapter.getAccounts).toHaveBeenCalled();
|
|
41
|
+
expect(mockSolanaAdapter.getAccounts).toHaveBeenCalled();
|
|
42
|
+
// NOTE: Even though setConnectedConnectorId is getting called in the same function (syncProvider),
|
|
43
|
+
// it's getting detected as not called by the test runner.
|
|
44
|
+
// expect(setProviderId).toHaveBeenCalledWith('eip155', 'EXTERNAL')
|
|
45
|
+
// expect(setProviderId).toHaveBeenCalledWith('solana', 'EXTERNAL')
|
|
46
|
+
expect(setConnectedConnectorId).toHaveBeenCalledWith('eip155', 'evm-connector');
|
|
47
|
+
expect(setConnectedConnectorId).toHaveBeenCalledWith('solana', 'solana-connector');
|
|
48
|
+
vi.spyOn(StorageUtil, 'getConnectedConnectorId').mockClear();
|
|
49
|
+
vi.spyOn(StorageUtil, 'getConnectionStatus').mockClear();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=connection.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.test.js","sourceRoot":"","sources":["../../../../tests/client/connection.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAEnG,qBAAqB,EAAE,CAAA;AACvB,eAAe,EAAE,CAAA;AACjB,2BAA2B,EAAE,CAAA;AAE7B,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,sGAAsG,EAAE,KAAK,IAAI,EAAE;QACpH,MAAM,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACzC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;QACjF,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QAEzE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,GAAG,WAAW;YACd,QAAQ,EAAE,CAAC,cAAc,CAAC;YAC1B,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;SAC7B,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAA;QAExC,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QACjE,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAEhE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;QAC3E,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QAEzE,MAAM,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAA;QAExC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QAEhE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC,SAAS,EAAE,CAAA;QAC5D,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,uBAAuB,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAA;QAChF,6FAA6F;QAC7F,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAA;QAEvF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAA;QACtC,MAAM,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAA;QAExC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACxD,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAC3D,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACrD,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAExD,mGAAmG;QACnG,0DAA0D;QAC1D,mEAAmE;QACnE,mEAAmE;QAEnE,MAAM,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;QAC/E,MAAM,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA;QAElF,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC,SAAS,EAAE,CAAA;QAC5D,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,SAAS,EAAE,CAAA;IAC1D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import {} from '@reown/appkit-common';
|
|
3
|
+
import { AlertController, ChainController, EventsController, OptionsController, StorageUtil } from '@reown/appkit-core';
|
|
4
|
+
import { ErrorUtil } from '@reown/appkit-utils';
|
|
5
|
+
import { AppKit } from '../../src/client';
|
|
6
|
+
import { mainnet, polygon, sepolia, solana } from '../mocks/Networks';
|
|
7
|
+
import { mockOptions } from '../mocks/Options';
|
|
8
|
+
import { mockBlockchainApiController, mockStorageUtil, mockWindowAndDocument } from '../test-utils';
|
|
9
|
+
mockWindowAndDocument();
|
|
10
|
+
mockStorageUtil();
|
|
11
|
+
mockBlockchainApiController();
|
|
12
|
+
describe('Base', () => {
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
vi.clearAllMocks();
|
|
15
|
+
});
|
|
16
|
+
describe('Base Initialization', () => {
|
|
17
|
+
it('should initialize controllers', async () => {
|
|
18
|
+
const sendEvent = vi.spyOn(EventsController, 'sendEvent');
|
|
19
|
+
const initialize = vi.spyOn(ChainController, 'initialize');
|
|
20
|
+
new AppKit(mockOptions);
|
|
21
|
+
const options = { ...mockOptions };
|
|
22
|
+
delete options.adapters;
|
|
23
|
+
expect(sendEvent).toHaveBeenCalled();
|
|
24
|
+
expect(sendEvent).toHaveBeenCalledWith({
|
|
25
|
+
type: 'track',
|
|
26
|
+
event: 'INITIALIZE',
|
|
27
|
+
properties: {
|
|
28
|
+
...options,
|
|
29
|
+
networks: options.networks.map((n) => n.id),
|
|
30
|
+
siweConfig: {
|
|
31
|
+
options: options.siweConfig?.options || {}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
expect(initialize).toHaveBeenCalledOnce();
|
|
36
|
+
expect(initialize).toHaveBeenCalledWith(mockOptions.adapters, [mainnet, sepolia, solana], {
|
|
37
|
+
connectionControllerClient: expect.any(Object),
|
|
38
|
+
networkControllerClient: expect.any(Object)
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
it('should set EIP6963 enabled by default', () => {
|
|
42
|
+
const setEIP6963Enabled = vi.spyOn(OptionsController, 'setEIP6963Enabled');
|
|
43
|
+
new AppKit(mockOptions);
|
|
44
|
+
expect(setEIP6963Enabled).toHaveBeenCalledWith(true);
|
|
45
|
+
});
|
|
46
|
+
it('should set EIP6963 disabled when option is disabled in config', () => {
|
|
47
|
+
const setEIP6963Enabled = vi.spyOn(OptionsController, 'setEIP6963Enabled');
|
|
48
|
+
new AppKit({
|
|
49
|
+
...mockOptions,
|
|
50
|
+
enableEIP6963: false
|
|
51
|
+
});
|
|
52
|
+
expect(setEIP6963Enabled).toHaveBeenCalledWith(false);
|
|
53
|
+
});
|
|
54
|
+
it('should set partially defaultAccountType', () => {
|
|
55
|
+
const setDefaultAccountTypes = vi.spyOn(OptionsController, 'setDefaultAccountTypes');
|
|
56
|
+
new AppKit({
|
|
57
|
+
...mockOptions,
|
|
58
|
+
defaultAccountTypes: {
|
|
59
|
+
eip155: 'eoa',
|
|
60
|
+
bip122: 'ordinal'
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
expect(setDefaultAccountTypes).toHaveBeenCalledWith({
|
|
64
|
+
eip155: 'eoa',
|
|
65
|
+
bip122: 'ordinal'
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
it('should use default network prop when defaultNetwork prop is not included in the networks array', () => {
|
|
69
|
+
vi.spyOn(StorageUtil, 'getActiveCaipNetworkId').mockReturnValueOnce(undefined);
|
|
70
|
+
const setActiveCaipNetwork = vi.spyOn(ChainController, 'setActiveCaipNetwork');
|
|
71
|
+
new AppKit({
|
|
72
|
+
...mockOptions,
|
|
73
|
+
defaultNetwork: polygon
|
|
74
|
+
});
|
|
75
|
+
expect(setActiveCaipNetwork).toHaveBeenCalledWith(mainnet);
|
|
76
|
+
});
|
|
77
|
+
it('should use default network prop when there is no network in storage', () => {
|
|
78
|
+
vi.spyOn(StorageUtil, 'getActiveCaipNetworkId').mockReturnValueOnce(undefined);
|
|
79
|
+
const setActiveCaipNetwork = vi.spyOn(ChainController, 'setActiveCaipNetwork');
|
|
80
|
+
new AppKit({
|
|
81
|
+
...mockOptions,
|
|
82
|
+
defaultNetwork: sepolia
|
|
83
|
+
});
|
|
84
|
+
expect(setActiveCaipNetwork).toHaveBeenCalledWith(sepolia);
|
|
85
|
+
});
|
|
86
|
+
it('should not use default network prop when there is a network in storage', () => {
|
|
87
|
+
vi.spyOn(StorageUtil, 'getActiveCaipNetworkId').mockReturnValueOnce(sepolia.caipNetworkId);
|
|
88
|
+
const setActiveCaipNetwork = vi.spyOn(ChainController, 'setActiveCaipNetwork');
|
|
89
|
+
new AppKit({
|
|
90
|
+
...mockOptions,
|
|
91
|
+
defaultNetwork: polygon
|
|
92
|
+
});
|
|
93
|
+
expect(setActiveCaipNetwork).toHaveBeenCalledWith(sepolia);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe('Alert Errors', () => {
|
|
97
|
+
it('should handle alert errors based on error messages', () => {
|
|
98
|
+
const open = vi.spyOn(AlertController, 'open');
|
|
99
|
+
const errors = [
|
|
100
|
+
{
|
|
101
|
+
alert: ErrorUtil.ALERT_ERRORS.INVALID_APP_CONFIGURATION,
|
|
102
|
+
message: 'Error: WebSocket connection closed abnormally with code: 3000 (Unauthorized: origin not allowed)'
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
alert: ErrorUtil.ALERT_ERRORS.JWT_TOKEN_NOT_VALID,
|
|
106
|
+
message: 'WebSocket connection closed abnormally with code: 3000 (JWT validation error: JWT Token is not yet valid:)'
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
alert: ErrorUtil.ALERT_ERRORS.INVALID_PROJECT_ID,
|
|
110
|
+
message: 'Uncaught Error: WebSocket connection closed abnormally with code: 3000 (Unauthorized: invalid key)'
|
|
111
|
+
}
|
|
112
|
+
];
|
|
113
|
+
const appKit = new AppKit(mockOptions);
|
|
114
|
+
for (const { alert, message } of errors) {
|
|
115
|
+
// @ts-expect-error
|
|
116
|
+
appKit.handleAlertError(new Error(message));
|
|
117
|
+
expect(open).toHaveBeenCalledWith(alert, 'error');
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=initialization.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialization.test.js","sourceRoot":"","sources":["../../../../tests/client/initialization.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { Emitter } from '@reown/appkit-common';
|
|
3
|
+
import { BlockchainApiController, ChainController, setCaipAddress, setProfileImage, setProfileName } from '@reown/appkit-core';
|
|
4
|
+
import { AppKit } from '../../src/client';
|
|
5
|
+
import { mainnet, unsupportedNetwork } from '../mocks/Networks';
|
|
6
|
+
import { mockOptions } from '../mocks/Options';
|
|
7
|
+
import { mockBlockchainApiController, mockChainControllerStateWithUnsupportedChain, mockStorageUtil, mockWindowAndDocument } from '../test-utils';
|
|
8
|
+
mockWindowAndDocument();
|
|
9
|
+
mockStorageUtil();
|
|
10
|
+
mockBlockchainApiController();
|
|
11
|
+
describe('Listeners', () => {
|
|
12
|
+
it('should set caip address, profile name and profile image on accountChanged event', async () => {
|
|
13
|
+
const identity = { name: 'vitalik.eth', avatar: null };
|
|
14
|
+
const setCaipAddressSpy = vi.mocked(setCaipAddress);
|
|
15
|
+
const fetchIdentitySpy = vi
|
|
16
|
+
.spyOn(BlockchainApiController, 'fetchIdentity')
|
|
17
|
+
.mockResolvedValueOnce(identity);
|
|
18
|
+
const mockAccount = {
|
|
19
|
+
address: '0x123',
|
|
20
|
+
chainId: mainnet.id,
|
|
21
|
+
chainNamespace: mainnet.chainNamespace
|
|
22
|
+
};
|
|
23
|
+
const emitter = new Emitter();
|
|
24
|
+
const appKit = new AppKit({ ...mockOptions, features: { email: false, socials: [] } });
|
|
25
|
+
const setProfileNameSpy = vi.mocked(setProfileName).mockImplementation(() => { });
|
|
26
|
+
const setProfileImageSpy = vi.mocked(setProfileImage).mockImplementation(() => { });
|
|
27
|
+
await appKit['syncAccount'](mockAccount);
|
|
28
|
+
emitter.emit('accountChanged', mockAccount);
|
|
29
|
+
expect(setCaipAddressSpy).toHaveBeenCalledWith(`${mockAccount.chainNamespace}:${mockAccount.chainId}:${mockAccount.address}`, 'eip155');
|
|
30
|
+
expect(fetchIdentitySpy).toHaveBeenCalledWith({ address: mockAccount.address });
|
|
31
|
+
expect(setProfileNameSpy).toHaveBeenCalledWith(identity.name, 'eip155');
|
|
32
|
+
expect(setProfileImageSpy).toHaveBeenCalledWith(identity.avatar, 'eip155');
|
|
33
|
+
});
|
|
34
|
+
it('should show unsupported chain UI when network is unsupported and allowUnsupportedChain is false', async () => {
|
|
35
|
+
const showUnsupportedChainUISpy = vi.spyOn(ChainController, 'showUnsupportedChainUI');
|
|
36
|
+
const appKit = new AppKit({
|
|
37
|
+
...mockOptions,
|
|
38
|
+
allowUnsupportedChain: false,
|
|
39
|
+
features: { email: false, socials: [] }
|
|
40
|
+
});
|
|
41
|
+
mockChainControllerStateWithUnsupportedChain();
|
|
42
|
+
await appKit['syncAccount']({
|
|
43
|
+
address: '0x123',
|
|
44
|
+
chainId: unsupportedNetwork.id,
|
|
45
|
+
chainNamespace: unsupportedNetwork.chainNamespace
|
|
46
|
+
});
|
|
47
|
+
expect(showUnsupportedChainUISpy).toHaveBeenCalled();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=listeners.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listeners.test.js","sourceRoot":"","sources":["../../../../tests/client/listeners.test.ts"],"names":[],"mappings":"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"}
|