add test for response timeout

This commit is contained in:
David Lechner
2021-01-22 15:58:10 -06:00
parent 7a5e344b66
commit 79e06bcd51
+62
View File
@@ -375,6 +375,68 @@ describe('flashFirmware', () => {
await saga.end();
});
test('timeout waiting for info response', async () => {
const metadata: FirmwareMetadata = {
'metadata-version': '1.0.0',
'device-id': HubType.MoveHub,
'checksum-type': 'sum',
'firmware-version': '1.2.3',
'max-firmware-size': 1024,
'mpy-abi-version': 5,
'mpy-cross-options': ['-mno-unicode'],
'user-mpy-offset': 100,
};
const zip = new JSZip();
zip.file('firmware-base.bin', new Uint8Array(64));
zip.file('firmware.metadata.json', JSON.stringify(metadata));
zip.file('main.py', 'print("test")');
zip.file('ReadMe_OSS.txt', 'test');
jest.spyOn(window, 'fetch').mockResolvedValueOnce(
new Response(await zip.generateAsync({ type: 'blob' })),
);
const saga = new AsyncSaga(flashFirmware, {
nextMessageId: createCountFunc(),
});
saga.setState({ settings: { flashCurrentProgram: false } });
// saga is triggered by this action
saga.put(flashFirmwareAction());
// first step is to connect to the hub bootloader
let action = await saga.take();
expect(action).toEqual(connect());
saga.setState({
bootloader: { connection: BootloaderConnectionState.Connected },
});
saga.put(didConnect());
// then find out what kind of hub it is
action = await saga.take();
expect(action).toEqual(infoRequest(0));
saga.put(didRequest(0));
// should get a timed-out failure
action = await saga.take();
expect(action).toEqual(didFailToFinish(FailToFinishReasonType.TimedOut));
// should request to disconnect after failure
action = await saga.take();
expect(action).toEqual(disconnect());
await saga.end();
});
});
describe('user supplied firmware.zip', () => {