From de89c9ae0dfbbedc6eec273051458f5a59cf2cbf Mon Sep 17 00:00:00 2001 From: Sam Plackett <60177449+samplackett@users.noreply.github.com> Date: Wed, 5 Feb 2025 15:15:10 +0000 Subject: [PATCH] add try catch to disconnect method (#52) --- app/polling/poll.js | 6 +++++- package-lock.json | 4 ++-- package.json | 2 +- test/unit/polling/poll.test.js | 13 +++++++++++++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/polling/poll.js b/app/polling/poll.js index 1ddf44d..58e40fb 100644 --- a/app/polling/poll.js +++ b/app/polling/poll.js @@ -21,7 +21,11 @@ const poll = async () => { } catch (err) { console.error(err) } finally { - await disconnect(transfer.server) + try { + await disconnect(transfer.server) + } catch (disconnectError) { + console.error(`Disconnection from server ${transfer.server} failed: `, disconnectError) + } } } } diff --git a/package-lock.json b/package-lock.json index 2a8d05a..987cf41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ffc-pay-gateway", - "version": "1.4.26", + "version": "1.4.27", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ffc-pay-gateway", - "version": "1.4.26", + "version": "1.4.27", "license": "OGL-UK-3.0", "dependencies": { "@azure/identity": "4.2.1", diff --git a/package.json b/package.json index b0026da..a33b58c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ffc-pay-gateway", - "version": "1.4.26", + "version": "1.4.27", "description": "Managed Gateway integration", "homepage": "https://github.com/DEFRA/ffc-pay-gateway", "main": "app/index.js", diff --git a/test/unit/polling/poll.test.js b/test/unit/polling/poll.test.js index 0686013..cc1f531 100644 --- a/test/unit/polling/poll.test.js +++ b/test/unit/polling/poll.test.js @@ -1,5 +1,7 @@ jest.mock('../../../app/transfer') +jest.mock('../../../app/sftp') const { getActiveTransfers, transferInboundFiles, transferOutboundFiles } = require('../../../app/transfer') +const { connect, disconnect } = require('../../../app/sftp') const { INBOUND, OUTBOUND } = require('../../../app/constants/directions') @@ -9,6 +11,8 @@ describe('poll', () => { beforeEach(() => { jest.clearAllMocks() getActiveTransfers.mockReturnValue([]) + connect.mockResolvedValue() + disconnect.mockResolvedValue() }) test('should get active transfers', async () => { @@ -67,4 +71,13 @@ describe('poll', () => { await poll() expect(transferOutboundFiles).toHaveBeenCalledTimes(2) }) + + test('should continue to transfer files if disconnect throws error', async () => { + getActiveTransfers.mockReturnValueOnce([{ direction: INBOUND }, { direction: OUTBOUND }]) + disconnect.mockImplementationOnce(() => { throw new Error() }) + await poll() + expect(transferInboundFiles).toHaveBeenCalledTimes(1) + expect(transferOutboundFiles).toHaveBeenCalledTimes(1) + expect(disconnect).toHaveBeenCalledTimes(2) + }) })