Skip to content

Commit 4fd5fac

Browse files
authored
test: integration tests (#176)
Signed-off-by: David Wosk <dwosk@us.ibm.com>
1 parent bc9d3ac commit 4fd5fac

File tree

5 files changed

+920
-2
lines changed

5 files changed

+920
-2
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@ jobs:
3434
run: |
3535
npm run lint
3636
37-
- name: Run Unit Tests
37+
- name: Run Tests
3838
run: |
39-
npm run test
39+
npm run test -- --silent

tests/integration/connect.spec.ts

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
import {
2+
startTransfer,
3+
removeTransfer,
4+
stopTransfer,
5+
resumeTransfer,
6+
showSelectFileDialog,
7+
showSelectFolderDialog,
8+
showPreferences,
9+
getAllTransfers,
10+
getTransfer,
11+
showDirectory,
12+
modifyTransfer,
13+
readAsArrayBuffer,
14+
readChunkAsArrayBuffer,
15+
} from '../../src/index';
16+
import {
17+
setupSdk,
18+
resetSdk,
19+
lastConnectCall,
20+
getConnectMock,
21+
downloadSpec,
22+
} from '../test-helpers';
23+
24+
describe('Connect SDK', () => {
25+
beforeEach(() => {
26+
setupSdk({mode: 'connect'});
27+
});
28+
29+
afterEach(() => {
30+
resetSdk();
31+
jest.restoreAllMocks();
32+
});
33+
34+
describe('startTransfer', () => {
35+
it('should call startTransferPromise on Connect SDK', async () => {
36+
await startTransfer(downloadSpec({token: 'test-token'}), {use_absolute_destination_path: false});
37+
38+
const call = lastConnectCall();
39+
expect(call.method).toBe('startTransferPromise');
40+
expect(call.args[0]).toEqual({
41+
direction: 'receive',
42+
remote_host: 'files.example.com',
43+
paths: [{source: '/remote/file.txt'}],
44+
token: 'test-token',
45+
});
46+
expect(call.args[1]).toEqual({use_absolute_destination_path: false});
47+
});
48+
});
49+
50+
describe('removeTransfer', () => {
51+
it('should call removeTransfer on Connect SDK', async () => {
52+
await removeTransfer('transfer-uuid-123');
53+
54+
const mock = getConnectMock();
55+
expect(mock.removeTransfer).toHaveBeenCalledWith('transfer-uuid-123');
56+
});
57+
});
58+
59+
describe('stopTransfer', () => {
60+
it('should call stopTransfer on Connect SDK', async () => {
61+
await stopTransfer('transfer-uuid-456');
62+
63+
const mock = getConnectMock();
64+
expect(mock.stopTransfer).toHaveBeenCalledWith('transfer-uuid-456');
65+
});
66+
});
67+
68+
describe('resumeTransfer', () => {
69+
it('should call resumeTransfer on Connect SDK', async () => {
70+
await resumeTransfer('transfer-uuid-789', {token: 'new-token'});
71+
72+
const mock = getConnectMock();
73+
expect(mock.resumeTransfer).toHaveBeenCalledWith('transfer-uuid-789', {token: 'new-token'});
74+
});
75+
});
76+
77+
describe('showSelectFileDialog', () => {
78+
it('should call showSelectFileDialogPromise on Connect SDK', async () => {
79+
await showSelectFileDialog({multiple: true});
80+
81+
const mock = getConnectMock();
82+
expect(mock.showSelectFileDialogPromise).toHaveBeenCalledWith({multiple: true});
83+
});
84+
});
85+
86+
describe('showSelectFolderDialog', () => {
87+
it('should call showSelectFolderDialogPromise on Connect SDK', async () => {
88+
await showSelectFolderDialog({multiple: false});
89+
90+
const mock = getConnectMock();
91+
expect(mock.showSelectFolderDialogPromise).toHaveBeenCalledWith({multiple: false});
92+
});
93+
});
94+
95+
describe('showPreferences', () => {
96+
it('should call showPreferences on Connect SDK', async () => {
97+
await showPreferences();
98+
99+
const mock = getConnectMock();
100+
expect(mock.showPreferences).toHaveBeenCalled();
101+
});
102+
});
103+
104+
describe('getAllTransfers', () => {
105+
it('should call getAllTransfers on Connect SDK', async () => {
106+
await getAllTransfers();
107+
108+
const mock = getConnectMock();
109+
expect(mock.getAllTransfers).toHaveBeenCalled();
110+
});
111+
});
112+
113+
describe('getTransfer', () => {
114+
it('should call getTransfer on Connect SDK', async () => {
115+
await getTransfer('transfer-uuid-abc');
116+
117+
const mock = getConnectMock();
118+
expect(mock.getTransfer).toHaveBeenCalledWith('transfer-uuid-abc');
119+
});
120+
});
121+
122+
describe('showDirectory', () => {
123+
it('should call showDirectory on Connect SDK', async () => {
124+
await showDirectory('transfer-uuid-def');
125+
126+
const mock = getConnectMock();
127+
expect(mock.showDirectory).toHaveBeenCalledWith('transfer-uuid-def');
128+
});
129+
});
130+
131+
describe('modifyTransfer', () => {
132+
it('should call modifyTransfer on Connect SDK', async () => {
133+
await modifyTransfer('transfer-uuid-ghi', {rate_policy: 'fair'});
134+
135+
const mock = getConnectMock();
136+
expect(mock.modifyTransfer).toHaveBeenCalledWith('transfer-uuid-ghi', {rate_policy: 'fair'});
137+
});
138+
});
139+
140+
describe('readAsArrayBuffer', () => {
141+
it('should call readAsArrayBuffer on Connect SDK', async () => {
142+
await readAsArrayBuffer('/path/to/image.png');
143+
144+
const mock = getConnectMock();
145+
expect(mock.readAsArrayBuffer).toHaveBeenCalledWith({path: '/path/to/image.png'});
146+
});
147+
});
148+
149+
describe('readChunkAsArrayBuffer', () => {
150+
it('should call readChunkAsArrayBuffer on Connect SDK', async () => {
151+
await readChunkAsArrayBuffer('/path/to/large-file.bin', 1024, 4096);
152+
153+
const mock = getConnectMock();
154+
expect(mock.readChunkAsArrayBuffer).toHaveBeenCalledWith({
155+
path: '/path/to/large-file.bin',
156+
offset: 1024,
157+
chunkSize: 4096,
158+
});
159+
});
160+
});
161+
});
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
import {
2+
startTransfer,
3+
removeTransfer,
4+
stopTransfer,
5+
resumeTransfer,
6+
showSelectFileDialog,
7+
showSelectFolderDialog,
8+
showPreferences,
9+
getAllTransfers,
10+
getTransfer,
11+
showDirectory,
12+
modifyTransfer,
13+
readAsArrayBuffer,
14+
readChunkAsArrayBuffer,
15+
} from '../../src/index';
16+
import {
17+
mockFetch,
18+
setupSdk,
19+
resetSdk,
20+
lastFetchCall,
21+
rpcOk,
22+
downloadSpec,
23+
} from '../test-helpers';
24+
25+
describe('Desktop App', () => {
26+
const APP_ID = 'test-app-id';
27+
28+
beforeEach(() => {
29+
setupSdk({mode: 'desktop-app', appId: APP_ID});
30+
mockFetch((url, body) => rpcOk({}, body?.id || 0));
31+
});
32+
33+
afterEach(() => {
34+
resetSdk();
35+
jest.restoreAllMocks();
36+
});
37+
38+
describe('startTransfer', () => {
39+
it('should call start_transfer RPC', async () => {
40+
await startTransfer(downloadSpec({token: 'test-token'}), {use_absolute_destination_path: false});
41+
42+
const call = lastFetchCall();
43+
expect(call.body.method).toBe('start_transfer');
44+
expect(call.body.params).toEqual({
45+
transfer_spec: {direction: 'receive', remote_host: 'files.example.com', paths: [{source: '/remote/file.txt'}], token: 'test-token'},
46+
desktop_spec: {use_absolute_destination_path: false},
47+
app_id: APP_ID,
48+
});
49+
});
50+
});
51+
52+
describe('removeTransfer', () => {
53+
it('should call remove_transfer RPC', async () => {
54+
await removeTransfer('transfer-uuid-123');
55+
56+
const call = lastFetchCall();
57+
expect(call.body.method).toBe('remove_transfer');
58+
expect(call.body.params).toEqual({transfer_id: 'transfer-uuid-123'});
59+
});
60+
});
61+
62+
describe('stopTransfer', () => {
63+
it('should call stop_transfer RPC', async () => {
64+
await stopTransfer('transfer-uuid-456');
65+
66+
const call = lastFetchCall();
67+
expect(call.body.method).toBe('stop_transfer');
68+
expect(call.body.params).toEqual({transfer_id: 'transfer-uuid-456'});
69+
});
70+
});
71+
72+
describe('resumeTransfer', () => {
73+
it('should call resume_transfer RPC', async () => {
74+
await resumeTransfer('transfer-uuid-789', {token: 'new-token'});
75+
76+
const call = lastFetchCall();
77+
expect(call.body.method).toBe('resume_transfer');
78+
expect(call.body.params).toEqual({
79+
transfer_id: 'transfer-uuid-789',
80+
transfer_spec: {token: 'new-token'},
81+
});
82+
});
83+
});
84+
85+
describe('showSelectFileDialog', () => {
86+
it('should call show_file_dialog RPC', async () => {
87+
await showSelectFileDialog({multiple: true});
88+
89+
const call = lastFetchCall();
90+
expect(call.body.method).toBe('show_file_dialog');
91+
expect(call.body.params).toEqual({
92+
options: {multiple: true},
93+
app_id: APP_ID,
94+
});
95+
});
96+
});
97+
98+
describe('showSelectFolderDialog', () => {
99+
it('should call show_folder_dialog RPC', async () => {
100+
await showSelectFolderDialog({multiple: false});
101+
102+
const call = lastFetchCall();
103+
expect(call.body.method).toBe('show_folder_dialog');
104+
expect(call.body.params).toEqual({
105+
options: {multiple: false},
106+
app_id: APP_ID,
107+
});
108+
});
109+
});
110+
111+
describe('showPreferences', () => {
112+
it('should call open_preferences RPC', async () => {
113+
await showPreferences();
114+
115+
const call = lastFetchCall();
116+
expect(call.body.method).toBe('open_preferences');
117+
});
118+
});
119+
120+
describe('getAllTransfers', () => {
121+
it('should call get_all_transfers RPC', async () => {
122+
await getAllTransfers();
123+
124+
const call = lastFetchCall();
125+
expect(call.body.method).toBe('get_all_transfers');
126+
expect(call.body.params).toEqual({app_id: APP_ID});
127+
});
128+
});
129+
130+
describe('getTransfer', () => {
131+
it('should call get_transfer RPC', async () => {
132+
await getTransfer('transfer-uuid-abc');
133+
134+
const call = lastFetchCall();
135+
expect(call.body.method).toBe('get_transfer');
136+
expect(call.body.params).toEqual({transfer_id: 'transfer-uuid-abc'});
137+
});
138+
});
139+
140+
describe('showDirectory', () => {
141+
it('should call show_directory RPC', async () => {
142+
await showDirectory('transfer-uuid-def');
143+
144+
const call = lastFetchCall();
145+
expect(call.body.method).toBe('show_directory');
146+
expect(call.body.params).toEqual({transfer_id: 'transfer-uuid-def'});
147+
});
148+
});
149+
150+
describe('modifyTransfer', () => {
151+
it('should call modify_transfer RPC', async () => {
152+
await modifyTransfer('transfer-uuid-ghi', {rate_policy: 'fair'});
153+
154+
const call = lastFetchCall();
155+
expect(call.body.method).toBe('modify_transfer');
156+
expect(call.body.params).toEqual({
157+
transfer_id: 'transfer-uuid-ghi',
158+
transfer_spec: {rate_policy: 'fair'},
159+
});
160+
});
161+
});
162+
163+
describe('readAsArrayBuffer', () => {
164+
it('should call read_as_array_buffer RPC', async () => {
165+
await readAsArrayBuffer('/path/to/image.png');
166+
167+
const call = lastFetchCall();
168+
expect(call.body.method).toBe('read_as_array_buffer');
169+
expect(call.body.params).toEqual({
170+
request: {path: '/path/to/image.png'},
171+
app_id: APP_ID,
172+
});
173+
});
174+
});
175+
176+
describe('readChunkAsArrayBuffer', () => {
177+
it('should call read_chunk_as_array_buffer RPC', async () => {
178+
await readChunkAsArrayBuffer('/path/to/large-file.bin', 1024, 4096);
179+
180+
const call = lastFetchCall();
181+
expect(call.body.method).toBe('read_chunk_as_array_buffer');
182+
expect(call.body.params).toEqual({
183+
request: {path: '/path/to/large-file.bin', offset: 1024, chunkSize: 4096},
184+
app_id: APP_ID,
185+
});
186+
});
187+
});
188+
});

0 commit comments

Comments
 (0)