@reown/appkit-experimental 1.5.3 → 1.5.4-rc.2.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/src/smart-session/utils/CosignerService.js +37 -14
- package/dist/esm/src/smart-session/utils/CosignerService.js.map +1 -1
- package/dist/esm/tests/smart-session/CosignerService.test.js +117 -61
- package/dist/esm/tests/smart-session/CosignerService.test.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/types/src/smart-session/utils/CosignerService.d.ts +1 -1
- package/package.json +6 -9
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import axios, { AxiosError } from 'axios';
|
|
2
1
|
import { ConstantsUtil } from './ConstantUtils.js';
|
|
3
2
|
import { assertAddPermissionResponse } from '../helper/index.js';
|
|
4
3
|
export class CoSignerApiError extends Error {
|
|
@@ -8,26 +7,50 @@ export class CoSignerApiError extends Error {
|
|
|
8
7
|
this.name = 'CoSignerApiError';
|
|
9
8
|
}
|
|
10
9
|
}
|
|
10
|
+
function isResponseEmptyOrInvalid(response, contentType, contentLength) {
|
|
11
|
+
return (response.status === 204 ||
|
|
12
|
+
contentLength === '0' ||
|
|
13
|
+
!contentType ||
|
|
14
|
+
!contentType.includes('application/json'));
|
|
15
|
+
}
|
|
11
16
|
export async function sendCoSignerRequest({ url, request, queryParams = {}, headers, transformRequest }) {
|
|
12
17
|
try {
|
|
13
18
|
const transformedData = transformRequest ? transformRequest(request) : request;
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
const fullUrl = new URL(url);
|
|
20
|
+
Object.entries(queryParams).forEach(([key, value]) => {
|
|
21
|
+
fullUrl.searchParams.append(key, value);
|
|
17
22
|
});
|
|
18
|
-
|
|
23
|
+
const fetchOptions = {
|
|
24
|
+
method: 'POST',
|
|
25
|
+
headers: {
|
|
26
|
+
'Content-Type': 'application/json',
|
|
27
|
+
...headers
|
|
28
|
+
},
|
|
29
|
+
body: JSON.stringify(transformedData)
|
|
30
|
+
};
|
|
31
|
+
const response = await fetch(fullUrl.toString(), fetchOptions);
|
|
32
|
+
if (!response.ok) {
|
|
33
|
+
const errorData = await response.text();
|
|
34
|
+
throw new CoSignerApiError(response.status, errorData);
|
|
35
|
+
}
|
|
36
|
+
const contentLength = response.headers.get('content-length');
|
|
37
|
+
const contentType = response.headers.get('content-type');
|
|
38
|
+
if (isResponseEmptyOrInvalid(response, contentType, contentLength)) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const text = await response.text();
|
|
43
|
+
return text ? JSON.parse(text) : undefined;
|
|
44
|
+
}
|
|
45
|
+
catch (parseError) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
19
48
|
}
|
|
20
49
|
catch (error) {
|
|
21
|
-
if (
|
|
22
|
-
|
|
23
|
-
if (axiosError.response) {
|
|
24
|
-
throw new CoSignerApiError(axiosError.response.status, JSON.stringify(axiosError.response.data));
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
throw new CoSignerApiError(500, 'Network error');
|
|
28
|
-
}
|
|
50
|
+
if (error instanceof CoSignerApiError) {
|
|
51
|
+
throw error;
|
|
29
52
|
}
|
|
30
|
-
throw error;
|
|
53
|
+
throw new CoSignerApiError(500, error instanceof Error ? error.message : 'Network error');
|
|
31
54
|
}
|
|
32
55
|
}
|
|
33
56
|
export class CosignerService {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CosignerService.js","sourceRoot":"","sources":["../../../../../src/smart-session/utils/CosignerService.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"CosignerService.js","sourceRoot":"","sources":["../../../../../src/smart-session/utils/CosignerService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
import { describe,
|
|
2
|
-
import axios from 'axios';
|
|
3
|
-
import MockAdapter from 'axios-mock-adapter';
|
|
1
|
+
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
|
4
2
|
import { sendCoSignerRequest, CoSignerApiError, CosignerService } from '../../src/smart-session/utils/CosignerService';
|
|
5
3
|
import { ConstantsUtil } from '../../src/smart-session/utils/ConstantUtils';
|
|
6
|
-
const
|
|
4
|
+
const mockFetch = vi.fn();
|
|
5
|
+
global.fetch = mockFetch;
|
|
7
6
|
describe('CoSigner API Tests', () => {
|
|
8
7
|
const projectId = 'test-project-id';
|
|
9
8
|
const mockAddress = '0x1234567890123456789012345678901234567890';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
cosigner = new CosignerService(projectId);
|
|
13
|
-
});
|
|
14
|
-
beforeEach(() => {
|
|
15
|
-
mock.reset();
|
|
16
|
-
});
|
|
9
|
+
const mockUrl = `https://example.com/${encodeURIComponent(mockAddress)}`;
|
|
10
|
+
const mockHeaders = { 'Content-Type': 'application/json' };
|
|
17
11
|
const mockAddPermissionRequest = {
|
|
18
12
|
chainId: '0x1',
|
|
19
13
|
expiry: Math.floor(Date.now() / 1000) + 3600,
|
|
@@ -40,9 +34,10 @@ describe('CoSigner API Tests', () => {
|
|
|
40
34
|
pci: 'test-pci',
|
|
41
35
|
context: '0xtest-context'
|
|
42
36
|
};
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
mockFetch.mockReset();
|
|
39
|
+
});
|
|
43
40
|
describe('sendCoSignerRequest', () => {
|
|
44
|
-
const mockUrl = 'https://example.com';
|
|
45
|
-
const mockHeaders = { 'Content-Type': 'application/json' };
|
|
46
41
|
it('should successfully send a request and return the response', async () => {
|
|
47
42
|
const mockResponse = {
|
|
48
43
|
pci: 'test-pci',
|
|
@@ -51,79 +46,140 @@ describe('CoSigner API Tests', () => {
|
|
|
51
46
|
publicKey: '0xtest-key'
|
|
52
47
|
}
|
|
53
48
|
};
|
|
54
|
-
|
|
49
|
+
mockFetch.mockResolvedValueOnce(new Response(JSON.stringify(mockResponse), {
|
|
50
|
+
status: 200,
|
|
51
|
+
headers: { 'Content-Type': 'application/json' }
|
|
52
|
+
}));
|
|
55
53
|
const response = await sendCoSignerRequest({
|
|
56
54
|
url: mockUrl,
|
|
57
55
|
request: mockAddPermissionRequest,
|
|
58
|
-
headers:
|
|
56
|
+
headers: {},
|
|
59
57
|
queryParams: { projectId }
|
|
60
58
|
});
|
|
59
|
+
const fullUrl = new URL(mockUrl);
|
|
60
|
+
fullUrl.searchParams.append('projectId', projectId);
|
|
61
61
|
expect(response).toEqual(mockResponse);
|
|
62
|
+
expect(mockFetch).toHaveBeenCalledWith(fullUrl.toString(), expect.objectContaining({
|
|
63
|
+
method: 'POST',
|
|
64
|
+
headers: expect.objectContaining(mockHeaders),
|
|
65
|
+
body: JSON.stringify(mockAddPermissionRequest)
|
|
66
|
+
}));
|
|
62
67
|
});
|
|
63
|
-
it('should throw CoSignerApiError
|
|
64
|
-
|
|
68
|
+
it('should throw CoSignerApiError for 4xx errors', async () => {
|
|
69
|
+
const mockErrorResponse = { error: 'Bad Request' };
|
|
70
|
+
mockFetch.mockResolvedValueOnce(new Response(JSON.stringify(mockErrorResponse), {
|
|
71
|
+
status: 400,
|
|
72
|
+
headers: { 'Content-Type': 'application/json' }
|
|
73
|
+
}));
|
|
65
74
|
await expect(sendCoSignerRequest({
|
|
66
75
|
url: mockUrl,
|
|
67
76
|
request: mockAddPermissionRequest,
|
|
68
|
-
headers:
|
|
77
|
+
headers: {},
|
|
69
78
|
queryParams: { projectId }
|
|
70
79
|
})).rejects.toThrow(CoSignerApiError);
|
|
71
80
|
});
|
|
72
81
|
it('should throw CoSignerApiError for network errors', async () => {
|
|
73
|
-
|
|
82
|
+
mockFetch.mockRejectedValueOnce(new Error('Network error'));
|
|
74
83
|
await expect(sendCoSignerRequest({
|
|
75
84
|
url: mockUrl,
|
|
76
85
|
request: mockAddPermissionRequest,
|
|
77
|
-
headers:
|
|
86
|
+
headers: {},
|
|
78
87
|
queryParams: { projectId }
|
|
79
88
|
})).rejects.toThrow(CoSignerApiError);
|
|
80
89
|
});
|
|
90
|
+
it('should handle custom transformation of request data', async () => {
|
|
91
|
+
const mockResponse = { success: true };
|
|
92
|
+
const transformRequest = vi.fn(data => ({ ...data, transformed: true }));
|
|
93
|
+
mockFetch.mockResolvedValueOnce(new Response(JSON.stringify(mockResponse), {
|
|
94
|
+
status: 200,
|
|
95
|
+
headers: { 'Content-Type': 'application/json' }
|
|
96
|
+
}));
|
|
97
|
+
await sendCoSignerRequest({
|
|
98
|
+
url: mockUrl,
|
|
99
|
+
request: mockAddPermissionRequest,
|
|
100
|
+
headers: {},
|
|
101
|
+
queryParams: { projectId },
|
|
102
|
+
transformRequest
|
|
103
|
+
});
|
|
104
|
+
expect(transformRequest).toHaveBeenCalledWith(mockAddPermissionRequest);
|
|
105
|
+
expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({
|
|
106
|
+
body: JSON.stringify({ ...mockAddPermissionRequest, transformed: true })
|
|
107
|
+
}));
|
|
108
|
+
});
|
|
81
109
|
});
|
|
82
110
|
describe('CosignerService', () => {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
pci: 'test-pci',
|
|
87
|
-
key: {
|
|
88
|
-
type: 'secp256k1',
|
|
89
|
-
publicKey: '0xtest-key'
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
mock
|
|
93
|
-
.onPost(`${ConstantsUtil.COSIGNER_BASE_URL}/${encodeURIComponent(mockAddress)}`)
|
|
94
|
-
.reply(200, mockResponse);
|
|
95
|
-
const result = await cosigner.addPermission(mockAddress, mockAddPermissionRequest);
|
|
96
|
-
expect(result).toEqual(mockResponse);
|
|
97
|
-
});
|
|
98
|
-
it('should handle addPermission error and throw CoSignerApiError', async () => {
|
|
99
|
-
mock
|
|
100
|
-
.onPost(`${ConstantsUtil.COSIGNER_BASE_URL}/${encodeURIComponent(mockAddress)}`)
|
|
101
|
-
.reply(400, { error: 'Bad Request' });
|
|
102
|
-
await expect(cosigner.addPermission(mockAddress, mockAddPermissionRequest)).rejects.toThrow(CoSignerApiError);
|
|
103
|
-
});
|
|
111
|
+
let cosigner;
|
|
112
|
+
beforeEach(() => {
|
|
113
|
+
cosigner = new CosignerService(projectId);
|
|
104
114
|
});
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
it('should successfully add a permission', async () => {
|
|
116
|
+
const mockResponse = {
|
|
117
|
+
pci: 'test-pci',
|
|
118
|
+
key: {
|
|
119
|
+
type: 'secp256k1',
|
|
120
|
+
publicKey: '0xtest-key'
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
mockFetch.mockResolvedValueOnce(new Response(JSON.stringify(mockResponse), {
|
|
124
|
+
status: 200,
|
|
125
|
+
headers: { 'Content-Type': 'application/json' }
|
|
126
|
+
}));
|
|
127
|
+
const result = await cosigner.addPermission(mockAddress, mockAddPermissionRequest);
|
|
128
|
+
expect(result).toEqual(mockResponse);
|
|
129
|
+
const expectedUrl = `${ConstantsUtil.COSIGNER_BASE_URL}/${encodeURIComponent(mockAddress)}?projectId=${encodeURIComponent(projectId)}`;
|
|
130
|
+
expect(mockFetch).toHaveBeenCalledWith(expectedUrl, expect.objectContaining({
|
|
131
|
+
method: 'POST',
|
|
132
|
+
headers: expect.objectContaining(mockHeaders),
|
|
133
|
+
body: JSON.stringify(mockAddPermissionRequest)
|
|
134
|
+
}));
|
|
118
135
|
});
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
136
|
+
it('should handle addPermission error and throw CoSignerApiError', async () => {
|
|
137
|
+
mockFetch.mockResolvedValueOnce(new Response(JSON.stringify({ error: 'Bad Request' }), {
|
|
138
|
+
status: 400,
|
|
139
|
+
headers: { 'Content-Type': 'application/json' }
|
|
140
|
+
}));
|
|
141
|
+
await expect(cosigner.addPermission(mockAddress, mockAddPermissionRequest)).rejects.toThrow(CoSignerApiError);
|
|
142
|
+
});
|
|
143
|
+
it('should activate permissions successfully', async () => {
|
|
144
|
+
mockFetch.mockResolvedValueOnce(new Response(null, {
|
|
145
|
+
status: 204,
|
|
146
|
+
headers: { 'Content-Length': '0' }
|
|
147
|
+
}));
|
|
148
|
+
await expect(cosigner.activatePermissions(mockAddress, mockActivatePermissionsRequest)).resolves.toBeUndefined();
|
|
149
|
+
const expectedUrl = `${ConstantsUtil.COSIGNER_BASE_URL}/${encodeURIComponent(mockAddress)}/activate?projectId=${encodeURIComponent(projectId)}`;
|
|
150
|
+
expect(mockFetch).toHaveBeenCalledWith(expectedUrl, expect.objectContaining({
|
|
151
|
+
method: 'POST',
|
|
152
|
+
headers: expect.objectContaining(mockHeaders),
|
|
153
|
+
body: JSON.stringify(mockActivatePermissionsRequest)
|
|
154
|
+
}));
|
|
155
|
+
});
|
|
156
|
+
it('should throw CoSignerApiError for activatePermissions errors', async () => {
|
|
157
|
+
mockFetch.mockResolvedValueOnce(new Response(JSON.stringify({ error: 'Bad Request' }), {
|
|
158
|
+
status: 400,
|
|
159
|
+
headers: { 'Content-Type': 'application/json' }
|
|
160
|
+
}));
|
|
161
|
+
await expect(cosigner.activatePermissions(mockAddress, mockActivatePermissionsRequest)).rejects.toThrow(CoSignerApiError);
|
|
123
162
|
});
|
|
124
|
-
it('should
|
|
125
|
-
const
|
|
126
|
-
|
|
163
|
+
it('should revoke permissions successfully', async () => {
|
|
164
|
+
const mockPci = 'test-pci';
|
|
165
|
+
const mockSignature = '0x1234567890abcdef';
|
|
166
|
+
mockFetch.mockResolvedValueOnce(new Response(null, { status: 200 }));
|
|
167
|
+
await expect(cosigner.revokePermissions(mockAddress, mockPci, mockSignature)).resolves.toBeUndefined();
|
|
168
|
+
const expectedUrl = `${ConstantsUtil.COSIGNER_BASE_URL}/${encodeURIComponent(mockAddress)}/revoke?projectId=${encodeURIComponent(projectId)}`;
|
|
169
|
+
expect(mockFetch).toHaveBeenCalledWith(expectedUrl, expect.objectContaining({
|
|
170
|
+
method: 'POST',
|
|
171
|
+
headers: expect.objectContaining(mockHeaders),
|
|
172
|
+
body: JSON.stringify({ pci: mockPci, signature: mockSignature })
|
|
173
|
+
}));
|
|
174
|
+
});
|
|
175
|
+
describe('CosignerService Constructor', () => {
|
|
176
|
+
it('should throw an error if projectId is not provided', () => {
|
|
177
|
+
expect(() => new CosignerService('')).toThrow('Project ID must be provided');
|
|
178
|
+
});
|
|
179
|
+
it('should create an instance with a valid projectId', () => {
|
|
180
|
+
const instance = new CosignerService('valid-project-id');
|
|
181
|
+
expect(instance).toBeInstanceOf(CosignerService);
|
|
182
|
+
});
|
|
127
183
|
});
|
|
128
184
|
});
|
|
129
185
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CosignerService.test.js","sourceRoot":"","sources":["../../../../tests/smart-session/CosignerService.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"CosignerService.test.js","sourceRoot":"","sources":["../../../../tests/smart-session/CosignerService.test.ts"],"names":[],"mappings":"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"}
|