@hashgraph/hedera-wallet-connect 1.3.6-canary.1df28dc.0 → 1.3.7-canary.26cadd3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. package/dist/{src/lib/dapp → dapp}/DAppSigner.d.ts +2 -1
  2. package/dist/{src/lib/dapp → dapp}/DAppSigner.js +3 -0
  3. package/dist/{src/lib/dapp → dapp}/index.d.ts +24 -3
  4. package/dist/{src/lib/dapp → dapp}/index.js +143 -46
  5. package/dist/shared/logger.d.ts +15 -0
  6. package/dist/shared/logger.js +29 -0
  7. package/package.json +5 -2
  8. package/dist/src/index.d.ts +0 -1
  9. package/dist/src/index.js +0 -20
  10. package/dist/test/_helpers.d.ts +0 -38
  11. package/dist/test/_helpers.js +0 -95
  12. package/dist/test/dapp/DAppConnector.test.d.ts +0 -1
  13. package/dist/test/dapp/DAppConnector.test.js +0 -234
  14. package/dist/test/dapp/DAppSigner.test.d.ts +0 -1
  15. package/dist/test/dapp/DAppSigner.test.js +0 -155
  16. package/dist/test/utils.test.d.ts +0 -1
  17. package/dist/test/utils.test.js +0 -201
  18. package/dist/test/wallet/methods/wallet-executeTransaction.test.d.ts +0 -1
  19. package/dist/test/wallet/methods/wallet-executeTransaction.test.js +0 -43
  20. package/dist/test/wallet/methods/wallet-getNodeAddresses.test.d.ts +0 -1
  21. package/dist/test/wallet/methods/wallet-getNodeAddresses.test.js +0 -40
  22. package/dist/test/wallet/methods/wallet-signAndExecuteQuery.test.d.ts +0 -1
  23. package/dist/test/wallet/methods/wallet-signAndExecuteQuery.test.js +0 -41
  24. package/dist/test/wallet/methods/wallet-signAndExecuteTransaction.test.d.ts +0 -1
  25. package/dist/test/wallet/methods/wallet-signAndExecuteTransaction.test.js +0 -48
  26. package/dist/test/wallet/methods/wallet-signMessage.test.d.ts +0 -1
  27. package/dist/test/wallet/methods/wallet-signMessage.test.js +0 -60
  28. package/dist/test/wallet/methods/wallet-signTransaction.test.d.ts +0 -1
  29. package/dist/test/wallet/methods/wallet-signTransaction.test.js +0 -47
  30. package/dist/test/wallet/wallet-init.test.d.ts +0 -1
  31. package/dist/test/wallet/wallet-init.test.js +0 -53
  32. /package/dist/{src/lib/index.d.ts → index.d.ts} +0 -0
  33. /package/dist/{src/lib/index.js → index.js} +0 -0
  34. /package/dist/{src/lib/shared → shared}/chainIds.d.ts +0 -0
  35. /package/dist/{src/lib/shared → shared}/chainIds.js +0 -0
  36. /package/dist/{src/lib/shared → shared}/errors.d.ts +0 -0
  37. /package/dist/{src/lib/shared → shared}/errors.js +0 -0
  38. /package/dist/{src/lib/shared → shared}/events.d.ts +0 -0
  39. /package/dist/{src/lib/shared → shared}/events.js +0 -0
  40. /package/dist/{src/lib/shared → shared}/extensionController.d.ts +0 -0
  41. /package/dist/{src/lib/shared → shared}/extensionController.js +0 -0
  42. /package/dist/{src/lib/shared → shared}/index.d.ts +0 -0
  43. /package/dist/{src/lib/shared → shared}/index.js +0 -0
  44. /package/dist/{src/lib/shared → shared}/methods.d.ts +0 -0
  45. /package/dist/{src/lib/shared → shared}/methods.js +0 -0
  46. /package/dist/{src/lib/shared → shared}/payloads.d.ts +0 -0
  47. /package/dist/{src/lib/shared → shared}/payloads.js +0 -0
  48. /package/dist/{src/lib/shared → shared}/utils.d.ts +0 -0
  49. /package/dist/{src/lib/shared → shared}/utils.js +0 -0
  50. /package/dist/{src/lib/wallet → wallet}/index.d.ts +0 -0
  51. /package/dist/{src/lib/wallet → wallet}/index.js +0 -0
  52. /package/dist/{src/lib/wallet → wallet}/provider.d.ts +0 -0
  53. /package/dist/{src/lib/wallet → wallet}/provider.js +0 -0
  54. /package/dist/{src/lib/wallet → wallet}/types.d.ts +0 -0
  55. /package/dist/{src/lib/wallet → wallet}/types.js +0 -0
@@ -1,234 +0,0 @@
1
- /*
2
- *
3
- * Hedera Wallet Connect
4
- *
5
- * Copyright (C) 2023 Hedera Hashgraph, LLC
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the "License");
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- *
19
- */
20
- import { AccountId, AccountInfoQuery, LedgerId, TopicCreateTransaction } from '@hashgraph/sdk';
21
- import { DAppConnector, HederaJsonRpcMethod, HederaSessionEvent, queryToBase64String, transactionToBase64String, transactionToTransactionBody, transactionBodyToBase64String, } from '../../src';
22
- import { projectId, dAppMetadata, useJsonFixture, prepareTestTransaction, testUserAccountId, } from '../_helpers';
23
- import Client from '@walletconnect/sign-client';
24
- describe('DAppConnector', () => {
25
- let connector;
26
- const fakeSession = useJsonFixture('fakeSession');
27
- beforeEach(() => {
28
- connector = new DAppConnector(dAppMetadata, LedgerId.TESTNET, projectId);
29
- });
30
- afterEach(() => {
31
- global.gc && global.gc();
32
- });
33
- describe('constructor', () => {
34
- it('should create a valid class object', () => {
35
- const methods = ['hedera_testMethod', 'any_testMethod'];
36
- const events = [HederaSessionEvent.ChainChanged, HederaSessionEvent.AccountsChanged];
37
- connector = new DAppConnector(dAppMetadata, LedgerId.TESTNET, projectId, methods, events);
38
- expect(connector.dAppMetadata).toBe(dAppMetadata);
39
- expect(connector.network).toBe(LedgerId.TESTNET);
40
- expect(connector.projectId).toBe(projectId);
41
- expect(connector.supportedMethods).toEqual(methods);
42
- expect(connector.supportedEvents).toEqual(events);
43
- });
44
- it('should create a valid class object without passing of methods and events', () => {
45
- connector = new DAppConnector(dAppMetadata, LedgerId.TESTNET, projectId);
46
- expect(connector.dAppMetadata).toBe(dAppMetadata);
47
- expect(connector.network).toBe(LedgerId.TESTNET);
48
- expect(connector.projectId).toBe(projectId);
49
- expect(connector.supportedMethods).toEqual(Object.values(HederaJsonRpcMethod));
50
- expect(connector.supportedEvents).toEqual([]);
51
- });
52
- });
53
- describe('init', () => {
54
- it('should init SignClient correctly', async () => {
55
- var _a, _b, _c;
56
- await connector.init({ logger: 'error' });
57
- expect(connector.walletConnectClient).toBeInstanceOf(Client);
58
- expect((_a = connector.walletConnectClient) === null || _a === void 0 ? void 0 : _a.metadata).toBe(dAppMetadata);
59
- expect((_b = connector.walletConnectClient) === null || _b === void 0 ? void 0 : _b.core.projectId).toBe(projectId);
60
- expect((_c = connector.walletConnectClient) === null || _c === void 0 ? void 0 : _c.core.relayUrl).toBe('wss://relay.walletconnect.com');
61
- });
62
- it('should create signers if there are a persisted sessions', async () => {
63
- const checkPersistedStateSpy = jest.spyOn(connector, 'checkPersistedState');
64
- checkPersistedStateSpy.mockReturnValue([fakeSession]);
65
- await connector.init({ logger: 'error' });
66
- expect(checkPersistedStateSpy).toHaveBeenCalled();
67
- expect(connector.signers[0].getAccountId().toString()).toBe(fakeSession.namespaces.hedera.accounts[0].split(':')[2]);
68
- expect(connector.signers[0].topic).toBe(fakeSession.topic);
69
- expect(connector.signers[0].getLedgerId()).toBe(LedgerId.TESTNET);
70
- checkPersistedStateSpy.mockRestore();
71
- });
72
- });
73
- describe('disconnect', () => {
74
- beforeEach(async () => {
75
- const checkPersistedStateSpy = jest.spyOn(connector, 'checkPersistedState');
76
- checkPersistedStateSpy.mockReturnValue([fakeSession]);
77
- await connector.init({ logger: 'error' });
78
- checkPersistedStateSpy.mockRestore();
79
- });
80
- it('should disconnect Client from topic', async () => {
81
- const walletConnectDisconnectSpy = jest.spyOn(connector.walletConnectClient, 'disconnect');
82
- walletConnectDisconnectSpy.mockImplementation(async () => { });
83
- connector.disconnect(fakeSession.topic);
84
- expect(walletConnectDisconnectSpy).toHaveBeenCalled();
85
- expect(walletConnectDisconnectSpy).toHaveBeenCalledTimes(1);
86
- expect(walletConnectDisconnectSpy).toHaveBeenCalledWith(expect.objectContaining({ topic: fakeSession.topic }));
87
- walletConnectDisconnectSpy.mockRestore();
88
- });
89
- });
90
- describe('requests', () => {
91
- let lastSignerRequestMock;
92
- beforeEach(async () => {
93
- const checkPersistedStateSpy = jest.spyOn(connector, 'checkPersistedState');
94
- checkPersistedStateSpy.mockReturnValue([fakeSession]);
95
- await connector.init({ logger: 'error' });
96
- checkPersistedStateSpy.mockRestore();
97
- lastSignerRequestMock = jest.spyOn(connector.signers[0], 'request');
98
- lastSignerRequestMock.mockImplementation(() => { });
99
- });
100
- afterEach(() => {
101
- lastSignerRequestMock.mockRestore();
102
- });
103
- // 1
104
- describe(DAppConnector.prototype.getNodeAddresses, () => {
105
- it('should throw an error if there is no any signer', async () => {
106
- connector.signers = [];
107
- await expect(connector.getNodeAddresses()).rejects.toThrow('There is no active session. Connect to the wallet at first.');
108
- });
109
- it('should invoke last signer request with correct params', async () => {
110
- await connector.getNodeAddresses();
111
- expect(lastSignerRequestMock).toHaveBeenCalled();
112
- expect(lastSignerRequestMock).toHaveBeenCalledTimes(1);
113
- expect(lastSignerRequestMock).toHaveBeenCalledWith({
114
- method: HederaJsonRpcMethod.GetNodeAddresses,
115
- params: undefined,
116
- });
117
- });
118
- });
119
- // 2
120
- describe(DAppConnector.prototype.executeTransaction, () => {
121
- const transaction = prepareTestTransaction(new TopicCreateTransaction(), { freeze: true });
122
- const params = {
123
- transactionList: transactionToBase64String(transaction),
124
- };
125
- it('should throw an error if there is no any signer', async () => {
126
- connector.signers = [];
127
- await expect(connector.executeTransaction(params)).rejects.toThrow('There is no active session. Connect to the wallet at first.');
128
- });
129
- it('should invoke last signer request with correct params', async () => {
130
- await connector.executeTransaction(params);
131
- expect(lastSignerRequestMock).toHaveBeenCalled();
132
- expect(lastSignerRequestMock).toHaveBeenCalledTimes(1);
133
- expect(lastSignerRequestMock).toHaveBeenCalledWith({
134
- method: HederaJsonRpcMethod.ExecuteTransaction,
135
- params,
136
- });
137
- });
138
- });
139
- // 3
140
- describe(DAppConnector.prototype.signMessage, () => {
141
- const params = {
142
- message: 'test message',
143
- signerAccountId: testUserAccountId.toString(),
144
- };
145
- it('should throw an error if there is no any signer', async () => {
146
- connector.signers = [];
147
- await expect(connector.signMessage(params)).rejects.toThrow('There is no active session. Connect to the wallet at first.');
148
- });
149
- it('should invoke last signer request with correct params', async () => {
150
- await connector.signMessage(params);
151
- expect(lastSignerRequestMock).toHaveBeenCalled();
152
- expect(lastSignerRequestMock).toHaveBeenCalledTimes(1);
153
- expect(lastSignerRequestMock).toHaveBeenCalledWith({
154
- method: HederaJsonRpcMethod.SignMessage,
155
- params,
156
- });
157
- });
158
- });
159
- // 4
160
- describe(DAppConnector.prototype.signAndExecuteQuery, () => {
161
- const query = new AccountInfoQuery().setAccountId(testUserAccountId.toString());
162
- const params = {
163
- signerAccountId: testUserAccountId.toString(),
164
- query: queryToBase64String(query),
165
- };
166
- it('should throw an error if there is no any signer', async () => {
167
- connector.signers = [];
168
- await expect(connector.signAndExecuteQuery(params)).rejects.toThrow('There is no active session. Connect to the wallet at first.');
169
- });
170
- it('should invoke last signer request with correct params', async () => {
171
- await connector.signAndExecuteQuery(params);
172
- expect(lastSignerRequestMock).toHaveBeenCalled();
173
- expect(lastSignerRequestMock).toHaveBeenCalledTimes(1);
174
- expect(lastSignerRequestMock).toHaveBeenCalledWith({
175
- method: HederaJsonRpcMethod.SignAndExecuteQuery,
176
- params,
177
- });
178
- });
179
- });
180
- // 5
181
- describe(DAppConnector.prototype.signAndExecuteTransaction, () => {
182
- const transaction = prepareTestTransaction(new TopicCreateTransaction(), { freeze: true });
183
- const params = {
184
- signerAccountId: testUserAccountId.toString(),
185
- transactionList: transactionToBase64String(transaction),
186
- };
187
- it('should throw an error if there is no any signer', async () => {
188
- connector.signers = [];
189
- await expect(connector.signAndExecuteTransaction(params)).rejects.toThrow('There is no active session. Connect to the wallet at first.');
190
- });
191
- it('should invoke last signer request with correct params', async () => {
192
- await connector.signAndExecuteTransaction(params);
193
- expect(lastSignerRequestMock).toHaveBeenCalled();
194
- expect(lastSignerRequestMock).toHaveBeenCalledTimes(1);
195
- expect(lastSignerRequestMock).toHaveBeenCalledWith({
196
- method: HederaJsonRpcMethod.SignAndExecuteTransaction,
197
- params,
198
- });
199
- });
200
- });
201
- // 6
202
- describe(DAppConnector.prototype.signTransaction, () => {
203
- const transaction = prepareTestTransaction(new TopicCreateTransaction(), { freeze: true });
204
- const params = {
205
- signerAccountId: testUserAccountId.toString(),
206
- transactionBody: transactionBodyToBase64String(transactionToTransactionBody(transaction, AccountId.fromString('0.0.3'))),
207
- };
208
- it('should throw an error if there is no any signer', async () => {
209
- connector.signers = [];
210
- await expect(connector.signTransaction(params)).rejects.toThrow('There is no active session. Connect to the wallet at first.');
211
- });
212
- it('should invoke last signer request with correct params', async () => {
213
- await connector.signTransaction(params);
214
- expect(lastSignerRequestMock).toHaveBeenCalled();
215
- expect(lastSignerRequestMock).toHaveBeenCalledTimes(1);
216
- expect(lastSignerRequestMock).toHaveBeenCalledWith({
217
- method: HederaJsonRpcMethod.SignTransaction,
218
- params,
219
- });
220
- });
221
- });
222
- });
223
- // describe('connect', () => {
224
- // it('should establish connection and create session', async () => {
225
- // connector = new DAppConnector(appMetadata, LedgerId.TESTNET, PROJECT_ID)
226
- // await connector.init()
227
- // expect(connector.walletConnectClient).not.toBeNull()
228
- // await connector.connect((pairing) => {
229
- // console.log('PairingString: ', pairing)
230
- // })
231
- // expect(connector.walletConnectClient?.session.getAll()).toHaveLength(1)
232
- // }, 60_000)
233
- // })
234
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,155 +0,0 @@
1
- /*
2
- *
3
- * Hedera Wallet Connect
4
- *
5
- * Copyright (C) 2023 Hedera Hashgraph, LLC
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the "License");
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- *
19
- */
20
- import { AccountBalanceQuery, AccountCreateTransaction, AccountId, AccountInfoQuery, AccountRecordsQuery, AccountUpdateTransaction, LedgerId, PrivateKey, TokenAssociateTransaction, TokenCreateTransaction, TopicCreateTransaction, TransactionId, } from '@hashgraph/sdk';
21
- import { proto } from '@hashgraph/proto';
22
- import { DAppConnector, HederaJsonRpcMethod, transactionToBase64String, DAppSigner, Uint8ArrayToBase64String, base64StringToQuery, } from '../../src';
23
- import { projectId, dAppMetadata, useJsonFixture, prepareTestTransaction, prepareTestQuery, } from '../_helpers';
24
- describe('DAppSigner', () => {
25
- let connector;
26
- const fakeSession = useJsonFixture('fakeSession');
27
- beforeEach(() => {
28
- connector = new DAppConnector(dAppMetadata, LedgerId.TESTNET, projectId);
29
- });
30
- afterEach(() => {
31
- global.gc && global.gc();
32
- });
33
- describe(DAppSigner.prototype.call, () => {
34
- let signerRequestSpy;
35
- let signer;
36
- beforeEach(async () => {
37
- // @ts-ignore
38
- connector.signers = connector.createSigners(fakeSession);
39
- signer = connector.signers[0];
40
- signerRequestSpy = jest.spyOn(signer, 'request');
41
- signerRequestSpy.mockImplementation((request) => {
42
- const { method } = request;
43
- if (method === HederaJsonRpcMethod.SignAndExecuteTransaction) {
44
- const response = {
45
- transactionId: TransactionId.generate('0.0.999').toString(),
46
- nodeId: '0.0.3',
47
- transactionHash: '0x',
48
- };
49
- return Promise.resolve(response);
50
- }
51
- else if (method === HederaJsonRpcMethod.ExecuteTransaction) {
52
- const response = {
53
- transactionId: TransactionId.generate('0.0.999').toString(),
54
- nodeId: '0.0.3',
55
- transactionHash: '0x',
56
- };
57
- return Promise.resolve(response);
58
- }
59
- else if (method === HederaJsonRpcMethod.SignAndExecuteQuery) {
60
- const query = base64StringToQuery(request.params.query);
61
- let queryResponse = 'ERROR: Unsupported query type';
62
- if (query instanceof AccountBalanceQuery) {
63
- queryResponse = Uint8ArrayToBase64String(proto.CryptoGetAccountBalanceResponse.encode({
64
- balance: 0,
65
- }).finish());
66
- }
67
- else if (query instanceof AccountInfoQuery) {
68
- queryResponse = Uint8ArrayToBase64String(proto.CryptoGetInfoResponse.AccountInfo.encode({
69
- accountID: {
70
- shardNum: 0,
71
- realmNum: 0,
72
- accountNum: 3,
73
- },
74
- contractAccountID: AccountId.fromString('0.0.3').toSolidityAddress(),
75
- key: {
76
- ed25519: PrivateKey.generate().publicKey.toBytes(),
77
- },
78
- expirationTime: { seconds: 0, nanos: 0 },
79
- }).finish());
80
- }
81
- else if (query instanceof AccountRecordsQuery) {
82
- queryResponse = Uint8ArrayToBase64String(proto.TransactionGetRecordResponse.encode({
83
- transactionRecord: {
84
- alias: proto.Key.encode(PrivateKey.generate().publicKey._toProtobufKey()).finish(),
85
- receipt: {
86
- status: proto.ResponseCodeEnum.OK,
87
- accountID: {
88
- shardNum: 0,
89
- realmNum: 0,
90
- accountNum: 3,
91
- },
92
- },
93
- consensusTimestamp: { seconds: 0, nanos: 0 },
94
- transactionID: {
95
- accountID: {
96
- shardNum: 0,
97
- realmNum: 0,
98
- accountNum: 3,
99
- },
100
- transactionValidStart: { seconds: 0, nanos: 0 },
101
- nonce: 0,
102
- },
103
- },
104
- }).finish());
105
- }
106
- const response = {
107
- response: queryResponse,
108
- };
109
- return Promise.resolve(response);
110
- }
111
- });
112
- });
113
- afterEach(() => {
114
- signerRequestSpy.mockRestore();
115
- });
116
- it.each([
117
- { name: AccountCreateTransaction.name, ExecutableType: AccountCreateTransaction },
118
- { name: AccountUpdateTransaction.name, ExecutableType: AccountUpdateTransaction },
119
- { name: TopicCreateTransaction.name, ExecutableType: TopicCreateTransaction },
120
- { name: TokenAssociateTransaction.name, ExecutableType: TokenAssociateTransaction },
121
- { name: TokenCreateTransaction.name, ExecutableType: TokenCreateTransaction },
122
- ])('can execute $name transaction', async ({ name, ExecutableType }) => {
123
- const transaction = prepareTestTransaction(new ExecutableType(), { freeze: true });
124
- const params = {
125
- signerAccountId: 'hedera:testnet:' + signer.getAccountId().toString(),
126
- transactionList: transactionToBase64String(transaction),
127
- };
128
- await signer.call(transaction);
129
- expect(signerRequestSpy).toHaveBeenCalled();
130
- expect(signerRequestSpy).toHaveBeenCalledTimes(1);
131
- expect(signerRequestSpy).toHaveBeenCalledWith({
132
- method: HederaJsonRpcMethod.SignAndExecuteTransaction,
133
- params,
134
- });
135
- });
136
- it.each([
137
- { name: AccountBalanceQuery.name, ExecutableType: AccountBalanceQuery },
138
- { name: AccountInfoQuery.name, ExecutableType: AccountInfoQuery },
139
- { name: AccountRecordsQuery.name, ExecutableType: AccountRecordsQuery },
140
- ])('can execute $name query', async ({ name, ExecutableType }) => {
141
- const query = prepareTestQuery(new ExecutableType());
142
- const params = {
143
- signerAccountId: 'hedera:testnet:' + signer.getAccountId().toString(),
144
- query: Uint8ArrayToBase64String(query.toBytes()),
145
- };
146
- await signer.call(query);
147
- expect(signerRequestSpy).toHaveBeenCalled();
148
- expect(signerRequestSpy).toHaveBeenCalledTimes(1);
149
- expect(signerRequestSpy).toHaveBeenCalledWith({
150
- method: HederaJsonRpcMethod.SignAndExecuteQuery,
151
- params,
152
- });
153
- });
154
- });
155
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,201 +0,0 @@
1
- /*
2
- *
3
- * Hedera Wallet Connect
4
- *
5
- * Copyright (C) 2023 Hedera Hashgraph, LLC
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the "License");
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- *
19
- */
20
- import { AccountId, AccountInfoQuery, LedgerId, Query, TopicCreateTransaction, } from '@hashgraph/sdk';
21
- import { transactionToBase64String, freezeTransaction, setDefaultNodeAccountIds, base64StringToTransaction, base64StringToUint8Array, Uint8ArrayToBase64String, base64StringToQuery, queryToBase64String, EIPChainIdToLedgerId, ledgerIdToEIPChainId, CAIPChainIdToLedgerId, HederaChainId, ledgerIdToCAIPChainId, networkNameToCAIPChainId, networkNameToEIPChainId, networkNamespaces, HederaSessionEvent, } from '../src';
22
- import { prepareTestTransaction, testUserAccountId, useJsonFixture } from './_helpers';
23
- describe(freezeTransaction.name, () => {
24
- it('should freeze an unfrozen transaction', () => {
25
- const txn = prepareTestTransaction(new TopicCreateTransaction());
26
- expect(txn.isFrozen()).toBe(false);
27
- freezeTransaction(txn);
28
- expect(txn.isFrozen()).toBe(true);
29
- });
30
- it('should have no effect on a frozen transaction', () => {
31
- const txn = prepareTestTransaction(new TopicCreateTransaction());
32
- txn.freeze();
33
- expect(txn.isFrozen()).toBe(true);
34
- freezeTransaction(txn);
35
- expect(txn.isFrozen()).toBe(true);
36
- });
37
- });
38
- describe(setDefaultNodeAccountIds.name, () => {
39
- it('should set default node account ids if none are set', () => {
40
- var _a;
41
- const txn = new TopicCreateTransaction();
42
- expect(txn.nodeAccountIds).toBeNull();
43
- setDefaultNodeAccountIds(txn);
44
- const result = (_a = txn.nodeAccountIds) === null || _a === void 0 ? void 0 : _a.map((id) => id.toString());
45
- expect(result).toEqual(['0.0.3', '0.0.4', '0.0.5']);
46
- });
47
- it('should do nothing if node account ids are already set', () => {
48
- var _a;
49
- const txn = new TopicCreateTransaction();
50
- txn.setNodeAccountIds([new AccountId(4)]);
51
- setDefaultNodeAccountIds(txn);
52
- const result = (_a = txn.nodeAccountIds) === null || _a === void 0 ? void 0 : _a.map((id) => id.toString());
53
- expect(result).toEqual(['0.0.4']);
54
- });
55
- });
56
- describe(transactionToBase64String.name, () => {
57
- it('should convert a transaction to a base64 encoded string', () => {
58
- const txn = prepareTestTransaction(new TopicCreateTransaction());
59
- const result = transactionToBase64String(txn);
60
- const { expected } = useJsonFixture('transactionToBase64StringResult');
61
- expect(result).toBe(expected);
62
- });
63
- });
64
- describe(base64StringToTransaction.name, () => {
65
- it('should create a transaction from a base64 string', () => {
66
- const txn = prepareTestTransaction(new TopicCreateTransaction());
67
- txn.setTransactionMemo('I should be restored');
68
- const str = transactionToBase64String(txn);
69
- const resultWithParam = base64StringToTransaction(str);
70
- const resultWithoutParam = base64StringToTransaction(str);
71
- expect(resultWithParam).toBeInstanceOf(TopicCreateTransaction);
72
- expect(resultWithoutParam).toBeInstanceOf(TopicCreateTransaction);
73
- expect(resultWithParam.transactionMemo).toBe('I should be restored');
74
- });
75
- });
76
- describe(`Uint8Array helpers`, () => {
77
- let uInt8Array;
78
- describe(base64StringToUint8Array.name, () => {
79
- it('should decode base64 string to Uint8Array', async () => {
80
- const base64String = btoa('Hello World!');
81
- uInt8Array = base64StringToUint8Array(base64String);
82
- expect(uInt8Array).toBeInstanceOf(Uint8Array);
83
- expect(Array.from(uInt8Array)).toEqual([
84
- 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33,
85
- ]);
86
- });
87
- });
88
- describe(Uint8ArrayToBase64String.name, () => {
89
- it('should encode Uint8Array to base64 string', async () => {
90
- const base64String = Uint8ArrayToBase64String(uInt8Array);
91
- expect(typeof base64String).toBe('string');
92
- expect(base64String).toBe('SGVsbG8gV29ybGQh');
93
- expect(atob(base64String)).toBe('Hello World!');
94
- });
95
- });
96
- });
97
- describe(`Query helpers`, () => {
98
- let base64Query;
99
- describe(queryToBase64String.name, () => {
100
- it('should encode Query to base64 string', async () => {
101
- const query = new AccountInfoQuery().setAccountId(testUserAccountId);
102
- base64Query = queryToBase64String(query);
103
- expect(typeof base64Query).toBe('string');
104
- expect(base64Query).toEqual('Sg0KAhAAEgcIABAAGLlg');
105
- });
106
- });
107
- describe(base64StringToQuery.name, () => {
108
- it('should decode base64 string to Query', async () => {
109
- var _a;
110
- const query = base64StringToQuery(base64Query);
111
- expect(query).toBeInstanceOf(Query);
112
- expect(query).toBeInstanceOf(AccountInfoQuery);
113
- expect((_a = query.accountId) === null || _a === void 0 ? void 0 : _a.toString()).toBe(testUserAccountId.toString());
114
- });
115
- });
116
- });
117
- describe(EIPChainIdToLedgerId.name, () => {
118
- it('should convert a EIP chain id to a LedgerId object', async () => {
119
- const mainnetLedgerId = EIPChainIdToLedgerId(295);
120
- const testnetLedgerId = EIPChainIdToLedgerId(296);
121
- const previewnetLedgerId = EIPChainIdToLedgerId(297);
122
- const localnodeLedgerId = EIPChainIdToLedgerId(298);
123
- const localnodeLedgerIdWithRandomId = EIPChainIdToLedgerId(999);
124
- expect(mainnetLedgerId).toBe(LedgerId.MAINNET);
125
- expect(testnetLedgerId).toBe(LedgerId.TESTNET);
126
- expect(previewnetLedgerId).toBe(LedgerId.PREVIEWNET);
127
- expect(localnodeLedgerId).toBe(LedgerId.LOCAL_NODE);
128
- expect(localnodeLedgerIdWithRandomId).toBe(LedgerId.LOCAL_NODE);
129
- });
130
- });
131
- describe(ledgerIdToEIPChainId.name, () => {
132
- it('should convert a LedgerId object to a EIP chain id', async () => {
133
- const mainnetChainId = ledgerIdToEIPChainId(LedgerId.MAINNET);
134
- const testnetChainId = ledgerIdToEIPChainId(LedgerId.TESTNET);
135
- const previewnetChainId = ledgerIdToEIPChainId(LedgerId.PREVIEWNET);
136
- const localnodeChainId = ledgerIdToEIPChainId(LedgerId.LOCAL_NODE);
137
- expect(mainnetChainId).toBe(295);
138
- expect(testnetChainId).toBe(296);
139
- expect(previewnetChainId).toBe(297);
140
- expect(localnodeChainId).toBe(298);
141
- });
142
- });
143
- describe(networkNameToEIPChainId.name, () => {
144
- it('should convert a network name to a EIP chain id', async () => {
145
- const mainnetChainId = networkNameToEIPChainId('mainnet');
146
- const testnetChainId = networkNameToEIPChainId('testnet');
147
- const previewnetChainId = networkNameToEIPChainId('previewnet');
148
- const localnodeChainId = networkNameToEIPChainId('devnet');
149
- expect(mainnetChainId).toBe(295);
150
- expect(testnetChainId).toBe(296);
151
- expect(previewnetChainId).toBe(297);
152
- expect(localnodeChainId).toBe(298);
153
- });
154
- });
155
- describe(CAIPChainIdToLedgerId.name, () => {
156
- it('should convert a CAIP chain id to a LedgerId object', async () => {
157
- const mainnetLedgerId = CAIPChainIdToLedgerId(HederaChainId.Mainnet);
158
- const testnetLedgerId = CAIPChainIdToLedgerId(HederaChainId.Testnet);
159
- const previewnetLedgerId = CAIPChainIdToLedgerId(HederaChainId.Previewnet);
160
- const localnodeLedgerId = CAIPChainIdToLedgerId(HederaChainId.Devnet);
161
- expect(mainnetLedgerId).toBe(LedgerId.MAINNET);
162
- expect(testnetLedgerId).toBe(LedgerId.TESTNET);
163
- expect(previewnetLedgerId).toBe(LedgerId.PREVIEWNET);
164
- expect(localnodeLedgerId).toBe(LedgerId.LOCAL_NODE);
165
- });
166
- });
167
- describe(ledgerIdToCAIPChainId.name, () => {
168
- it('should convert a LedgerId object to a CAIP chain id', async () => {
169
- const mainnetChainId = ledgerIdToCAIPChainId(LedgerId.MAINNET);
170
- const testnetChainId = ledgerIdToCAIPChainId(LedgerId.TESTNET);
171
- const previewnetChainId = ledgerIdToCAIPChainId(LedgerId.PREVIEWNET);
172
- const localnodeChainId = ledgerIdToCAIPChainId(LedgerId.LOCAL_NODE);
173
- expect(mainnetChainId).toBe(HederaChainId.Mainnet);
174
- expect(testnetChainId).toBe(HederaChainId.Testnet);
175
- expect(previewnetChainId).toBe(HederaChainId.Previewnet);
176
- expect(localnodeChainId).toBe(HederaChainId.Devnet);
177
- });
178
- });
179
- describe(networkNameToCAIPChainId.name, () => {
180
- it('should convert a network name to a CAIP chain id', async () => {
181
- const mainnetChainId = networkNameToCAIPChainId('mainnet');
182
- const testnetChainId = networkNameToCAIPChainId('testnet');
183
- const previewnetChainId = networkNameToCAIPChainId('previewnet');
184
- const localnodeChainId = networkNameToCAIPChainId('devnet');
185
- expect(mainnetChainId).toBe(HederaChainId.Mainnet);
186
- expect(testnetChainId).toBe(HederaChainId.Testnet);
187
- expect(previewnetChainId).toBe(HederaChainId.Previewnet);
188
- expect(localnodeChainId).toBe(HederaChainId.Devnet);
189
- });
190
- });
191
- describe(networkNamespaces.name, () => {
192
- it('should create a `ProposalTypes.RequiredNamespaces` object for a given ledgerId', async () => {
193
- const methods = ['hedera_signMessage'];
194
- const events = Object.values(HederaSessionEvent);
195
- const testnetNamespaces = networkNamespaces(LedgerId.TESTNET, methods, events);
196
- expect(testnetNamespaces.hedera).not.toBe(undefined);
197
- expect(testnetNamespaces.hedera.methods).toBe(methods);
198
- expect(testnetNamespaces.hedera.events).toBe(events);
199
- expect(testnetNamespaces.hedera.chains).toEqual([HederaChainId.Testnet]);
200
- });
201
- });
@@ -1,43 +0,0 @@
1
- /*
2
- *
3
- * Hedera Wallet Connect
4
- *
5
- * Copyright (C) 2023 Hedera Hashgraph, LLC
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the "License");
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- *
19
- */
20
- import { TopicCreateTransaction } from '@hashgraph/sdk';
21
- import { HederaChainId, Wallet } from '../../../src';
22
- import { prepareTestTransaction, projectId, requestId, requestTopic, testPrivateKeyECDSA, testUserAccountId, useJsonFixture, walletMetadata, } from '../../_helpers';
23
- describe(Wallet.name, () => {
24
- describe('executeTransaction', () => {
25
- it('should execute signed transaction, returning the transaction response', async () => {
26
- try {
27
- const wallet = await Wallet.create(projectId, walletMetadata);
28
- const hederaWallet = wallet.getHederaWallet(HederaChainId.Testnet, testUserAccountId.toString(), testPrivateKeyECDSA);
29
- const signerCallMock = jest.spyOn(hederaWallet, 'call');
30
- signerCallMock.mockImplementation(async () => { }); // Mocking the 'call' method to do nothing
31
- const transaction = prepareTestTransaction(new TopicCreateTransaction(), {
32
- freeze: true,
33
- });
34
- const signTransaction = await hederaWallet.signTransaction(transaction);
35
- const respondSessionRequestSpy = jest.spyOn(wallet, 'respondSessionRequest');
36
- await wallet.hedera_executeTransaction(requestId, requestTopic, signTransaction, hederaWallet);
37
- const mockResponse = useJsonFixture('methods/executeTransactionSuccess');
38
- expect(respondSessionRequestSpy).toHaveBeenCalledWith(mockResponse);
39
- }
40
- catch (err) { }
41
- }, 15000);
42
- });
43
- });