From 74dfaff7774b9c7d966c5844d7657b0ca4b83d16 Mon Sep 17 00:00:00 2001 From: Sam Plackett <60177449+samplackett@users.noreply.github.com> Date: Tue, 17 Sep 2024 15:39:51 +0100 Subject: [PATCH] utilise enabled feature flag (#22) --- app/messaging/index.js | 14 +++++++++----- app/storage.js | 6 +++--- package.json | 2 +- test/unit/messaging/index.test.js | 21 +++++++++++++++------ 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/app/messaging/index.js b/app/messaging/index.js index 716603e..fdf3391 100644 --- a/app/messaging/index.js +++ b/app/messaging/index.js @@ -1,13 +1,17 @@ const { MessageReceiver } = require('ffc-messaging') -const { messagingConfig } = require('../config') +const { messagingConfig, processingConfig } = require('../config') const processDemographicsMessage = require('./process-demographics-message') let updateReceiver const start = async () => { - const updateAction = message => processDemographicsMessage(message, updateReceiver) - updateReceiver = new MessageReceiver(messagingConfig.updatesSubscription, updateAction) - await updateReceiver.subscribe() - console.info('Receiver ready to receive demographics updates') + if (processingConfig.enabled) { + const updateAction = message => processDemographicsMessage(message, updateReceiver) + updateReceiver = new MessageReceiver(messagingConfig.updatesSubscription, updateAction) + await updateReceiver.subscribe() + console.info('Receiver ready to receive demographics updates') + } else { + console.info('Demographics updates are not configured in this environment') + } } const stop = async () => { diff --git a/app/storage.js b/app/storage.js index 7344272..a18d897 100644 --- a/app/storage.js +++ b/app/storage.js @@ -34,9 +34,9 @@ const setupBlobServiceClient = () => { } const initialiseContainers = async () => { - if (!containersInitialised) { - setupBlobServiceClient() - if (storageConfig.enabled) { + if (storageConfig.enabled) { + if (!containersInitialised) { + setupBlobServiceClient() if (storageConfig.createContainers) { console.log('Making sure blob containers exist') await demographicsContainer.createIfNotExists() diff --git a/package.json b/package.json index 0691bad..70cc80c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ffc-pay-demographics", - "version": "1.2.8", + "version": "1.2.9", "description": "Process customer updates", "homepage": "https://github.com/DEFRA/ffc-pay-demographics", "main": "app/index.js", diff --git a/test/unit/messaging/index.test.js b/test/unit/messaging/index.test.js index 564b62f..4ba304a 100644 --- a/test/unit/messaging/index.test.js +++ b/test/unit/messaging/index.test.js @@ -1,7 +1,8 @@ const mockSubscribe = jest.fn() const mockCloseConnection = jest.fn() +const mockProcessDemographicsMessage = jest.fn() -const MockMessageReceiver = jest.fn().mockImplementation(() => { +const MockMessageReceiver = jest.fn().mockImplementation((subscription, action) => { return { subscribe: mockSubscribe, closeConnection: mockCloseConnection @@ -14,32 +15,40 @@ jest.mock('ffc-messaging', () => { } }) -jest.mock('../../../app/messaging/process-demographics-message') - -const config = require('../../../app/config') +jest.mock('../../../app/messaging/process-demographics-message', () => mockProcessDemographicsMessage) +const { messagingConfig, processingConfig } = require('../../../app/config') const { start, stop } = require('../../../app/messaging') beforeEach(() => { jest.clearAllMocks() - config.enabled = true + processingConfig.enabled = true }) describe('messaging start', () => { - test('creates new message receiver', async () => { + test('creates new message receiver with correct subscription', async () => { await start() expect(MockMessageReceiver).toHaveBeenCalledTimes(1) + expect(MockMessageReceiver).toHaveBeenCalledWith(messagingConfig.updatesSubscription, expect.any(Function)) }) test('subscribes to message receiver', async () => { await start() expect(mockSubscribe).toHaveBeenCalledTimes(1) }) + + test('does not start receiver if processingConfig is disabled', async () => { + processingConfig.enabled = false + await start() + expect(MockMessageReceiver).not.toHaveBeenCalled() + expect(mockSubscribe).not.toHaveBeenCalled() + }) }) describe('messaging stop', () => { test('closes connection', async () => { + await start() await stop() expect(mockCloseConnection).toHaveBeenCalledTimes(1) })