diff --git a/.github/scripts/release_code.sh b/.github/scripts/release_code.sh index f5435834bc..8cae4ffeba 100755 --- a/.github/scripts/release_code.sh +++ b/.github/scripts/release_code.sh @@ -84,7 +84,6 @@ sam deploy \ EnableNotificationsExternal="$ENABLE_NOTIFICATIONS_EXTERNAL" \ EnabledSiteODSCodesValue="${ENABLED_SITE_ODS_CODES:-' '}" \ EnablePostDatedNotifications="$ENABLE_POST_DATED_NOTIFICATIONS" \ - EnabledSystemsValue="${ENABLED_SYSTEMS:-' '}" \ EnabledSupplierApplicationIDsValue="${ENABLED_SUPPLIER_APPLICATION_IDS:-' '}" \ BlockedSiteODSCodesValue="${BLOCKED_SITE_ODS_CODES:-' '}" \ NotifyRoutingPlanIDValue="$NOTIFY_ROUTING_PLAN_ID" \ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6edd341cd5..f58f0a37d7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -93,7 +93,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: true ENABLE_NOTIFICATIONS_EXTERNAL: false ENABLE_POST_DATED_NOTIFICATIONS: true - ENABLED_SYSTEMS: "Internal Test System" BLOCKED_SITE_ODS_CODES: "B3J1Z" ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX" NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" @@ -140,7 +139,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: false ENABLE_NOTIFICATIONS_EXTERNAL: false ENABLE_POST_DATED_NOTIFICATIONS: true - ENABLED_SYSTEMS: "Internal Test System" BLOCKED_SITE_ODS_CODES: "B3J1Z" ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX" # Workaround empty string handling NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" @@ -154,8 +152,7 @@ jobs: PROXYGEN_ROLE: ${{ secrets.PROXYGEN_PTL_ROLE }} release_qa: - needs: - [tag_release, release_dev, package_code, get_commit_id, get_config_values] + needs: [tag_release, release_dev, package_code, get_commit_id, get_config_values] uses: ./.github/workflows/run_release_code_and_api.yml permissions: contents: write @@ -185,7 +182,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: false ENABLE_NOTIFICATIONS_EXTERNAL: false ENABLE_POST_DATED_NOTIFICATIONS: true - ENABLED_SYSTEMS: "Internal Test System" BLOCKED_SITE_ODS_CODES: "B3J1Z" ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX" # Workaround empty string handling NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 4d91b8ab34..7f7e40a739 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -114,7 +114,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: true ENABLE_NOTIFICATIONS_EXTERNAL: false ENABLE_POST_DATED_NOTIFICATIONS: true - ENABLED_SYSTEMS: "Internal Test System" BLOCKED_SITE_ODS_CODES: "XXXXX" # Workaround empty string handling ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX" NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" @@ -158,7 +157,6 @@ jobs: ENABLE_BACKUP: "False" ENABLE_NOTIFICATIONS_INTERNAL: false ENABLE_NOTIFICATIONS_EXTERNAL: false - ENABLED_SYSTEMS: "Internal Test System" BLOCKED_SITE_ODS_CODES: "B3J1Z" ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX" # Workaround empty string handling NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cabf667ed5..82208259cd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -95,7 +95,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: false ENABLE_NOTIFICATIONS_EXTERNAL: false ENABLE_POST_DATED_NOTIFICATIONS: true - ENABLED_SYSTEMS: "Internal Test System" BLOCKED_SITE_ODS_CODES: "XXXXX" # Workaround empty string handling ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX" NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" @@ -145,7 +144,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: false ENABLE_NOTIFICATIONS_EXTERNAL: false ENABLE_POST_DATED_NOTIFICATIONS: false - ENABLED_SYSTEMS: "Internal Test System" BLOCKED_SITE_ODS_CODES: "B3J1Z" ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX" NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" @@ -163,15 +161,7 @@ jobs: REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }} release_ref: - needs: - [ - tag_release, - release_dev, - release_dev_sandbox, - package_code, - get_commit_id, - get_config_values, - ] + needs: [tag_release, release_dev, release_dev_sandbox, package_code, get_commit_id, get_config_values] uses: ./.github/workflows/run_release_code_and_api.yml permissions: contents: write @@ -201,7 +191,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: false ENABLE_NOTIFICATIONS_EXTERNAL: false ENABLE_POST_DATED_NOTIFICATIONS: false - ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod" BLOCKED_SITE_ODS_CODES: "B3J1Z" ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX" NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" @@ -219,15 +208,7 @@ jobs: REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }} release_qa: - needs: - [ - tag_release, - release_dev, - release_dev_sandbox, - package_code, - get_commit_id, - get_config_values, - ] + needs: [tag_release, release_dev, release_dev_sandbox, package_code, get_commit_id, get_config_values] uses: ./.github/workflows/run_release_code_and_api.yml permissions: contents: write @@ -257,7 +238,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: false ENABLE_NOTIFICATIONS_EXTERNAL: false ENABLE_POST_DATED_NOTIFICATIONS: true - ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod" BLOCKED_SITE_ODS_CODES: "B3J1Z" ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX" NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" @@ -275,8 +255,7 @@ jobs: REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }} release_int: - needs: - [tag_release, release_qa, package_code, get_commit_id, get_config_values] + needs: [tag_release, release_qa, package_code, get_commit_id, get_config_values] uses: ./.github/workflows/run_release_code_and_api.yml permissions: contents: write @@ -306,7 +285,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: true ENABLE_NOTIFICATIONS_EXTERNAL: true ENABLE_POST_DATED_NOTIFICATIONS: true - ENABLED_SYSTEMS: "CrxPatientApp,nhsPrescriptionApp" BLOCKED_SITE_ODS_CODES: "XXXXX" # Workaround empty string handling # See https://nhsd-confluence.digital.nhs.uk/spaces/APIMC/pages/1345218865/Mapping+of+Suppliers+to+APIM+Onboarding+Portal+Apps ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX,YYYYY" @@ -329,8 +307,7 @@ jobs: REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }} release_int_sandbox: - needs: - [tag_release, release_qa, package_code, get_commit_id, get_config_values] + needs: [tag_release, release_qa, package_code, get_commit_id, get_config_values] uses: ./.github/workflows/run_release_code_and_api.yml permissions: contents: write @@ -358,7 +335,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: false ENABLE_NOTIFICATIONS_EXTERNAL: false ENABLE_POST_DATED_NOTIFICATIONS: false - ENABLED_SYSTEMS: "Internal Test System, Apotec Ltd - Apotec CRM - Production, CrxPatientApp, nhsPrescriptionApp, Titan PSU Prod" BLOCKED_SITE_ODS_CODES: "B3J1Z" ENABLED_SUPPLIER_APPLICATION_IDS: "XXXXX" NOTIFY_ROUTING_PLAN_ID: "e57fe5cc-0567-4854-abe2-b7dd9014a50c" @@ -376,15 +352,7 @@ jobs: REGRESSION_TESTS_PEM: ${{ secrets.REGRESSION_TESTS_PEM }} release_prod: - needs: - [ - tag_release, - release_int, - release_int_sandbox, - package_code, - get_commit_id, - get_config_values, - ] + needs: [tag_release, release_int, release_int_sandbox, package_code, get_commit_id, get_config_values] uses: ./.github/workflows/run_release_code_and_api.yml permissions: contents: write @@ -414,7 +382,6 @@ jobs: ENABLE_NOTIFICATIONS_INTERNAL: true ENABLE_NOTIFICATIONS_EXTERNAL: true ENABLE_POST_DATED_NOTIFICATIONS: false - ENABLED_SYSTEMS: "CrxPatientApp,nhsPrescriptionApp" BLOCKED_SITE_ODS_CODES: "XXXXX" # Workaround empty string handling # See https://nhsd-confluence.digital.nhs.uk/spaces/APIMC/pages/1345218865/Mapping+of+Suppliers+to+APIM+Onboarding+Portal+Apps ENABLED_SUPPLIER_APPLICATION_IDS: "ee353200-2b8f-47be-8b70-d0777e80d92f,30c8d461-e875-4882-85d1-4d5d90f7f17b" diff --git a/.github/workflows/run_release_code_and_api.yml b/.github/workflows/run_release_code_and_api.yml index 01b216a459..cd88aa0a77 100644 --- a/.github/workflows/run_release_code_and_api.yml +++ b/.github/workflows/run_release_code_and_api.yml @@ -79,9 +79,6 @@ on: required: false type: boolean default: false - ENABLED_SYSTEMS: - required: true - type: string BLOCKED_SITE_ODS_CODES: required: true type: string @@ -231,7 +228,6 @@ jobs: ENABLE_POST_DATED_NOTIFICATIONS: ${{ inputs.ENABLE_POST_DATED_NOTIFICATIONS }} REQUIRE_APPLICATION_NAME: ${{ inputs.REQUIRE_APPLICATION_NAME }} ENABLED_SITE_ODS_CODES: ${{ steps.read.outputs.ods_csv }} - ENABLED_SYSTEMS: ${{ inputs.ENABLED_SYSTEMS }} BLOCKED_SITE_ODS_CODES: ${{ steps.read.outputs.blocked_ods_csv }} ENABLED_SUPPLIER_APPLICATION_IDS: ${{ inputs.ENABLED_SUPPLIER_APPLICATION_IDS }} NOTIFY_ROUTING_PLAN_ID: ${{ inputs.NOTIFY_ROUTING_PLAN_ID }} @@ -271,7 +267,7 @@ jobs: - name: Deploy PSU API shell: bash working-directory: .github/scripts - if: ${{ inputs.DEPLOY_APIGEE == true && always() && !failure() && !cancelled() }} + if: ${{ inputs.DEPLOY_APIGEE == true }} env: API_TYPE: standard VERSION_NUMBER: ${{ inputs.VERSION_NUMBER }} @@ -293,7 +289,7 @@ jobs: - name: Deploy CPSU API shell: bash working-directory: .github/scripts - if: ${{ inputs.DEPLOY_APIGEE_CPSU == true && always() && !failure() && !cancelled() }} + if: ${{ inputs.DEPLOY_APIGEE_CPSU == true }} env: API_TYPE: custom VERSION_NUMBER: ${{ inputs.VERSION_NUMBER }} @@ -337,7 +333,7 @@ jobs: VERSION_NUMBER: ${{ inputs.VERSION_NUMBER }} regression_tests: - if: ${{ inputs.RUN_REGRESSION_TEST == true && always() && !failure() && !cancelled() }} + if: ${{ inputs.RUN_REGRESSION_TEST == true }} name: Regression Tests uses: ./.github/workflows/run_regression_tests.yml needs: release_code_and_api diff --git a/Makefile b/Makefile index 251be16be8..4f6e5a93f7 100644 --- a/Makefile +++ b/Makefile @@ -45,7 +45,6 @@ sam-sync: guard-AWS_DEFAULT_PROFILE guard-stack_name compile TestPresciptionsParamValue2=$${TEST_PRESCRIPTIONS_2:-PLACEHOLDER} \ TestPresciptionsParamValue3=$${TEST_PRESCRIPTIONS_3:-PLACEHOLDER} \ TestPresciptionsParamValue4=$${TEST_PRESCRIPTIONS_4:-PLACEHOLDER} \ - "EnabledSystemsValue=$${ENABLED_SYSTEMS:-Internal Test System}" \ "EnabledSiteODSCodesValue=$${ENABLED_SITE_ODS_CODES:-A83008,FA565}" \ BlockedSiteODSCodesValue=$${BLOCKED_SITE_ODS_CODES:-XXXXX} \ EnabledSupplierApplicationIDsValue=$${ENABLED_SUPPLIER_APPLICATION_IDS:-XXXXX} \ @@ -78,7 +77,6 @@ sam-deploy: guard-AWS_DEFAULT_PROFILE guard-stack_name TestPresciptionsParamValue2=$${TEST_PRESCRIPTIONS_2:-PLACEHOLDER} \ TestPresciptionsParamValue3=$${TEST_PRESCRIPTIONS_3:-PLACEHOLDER} \ TestPresciptionsParamValue4=$${TEST_PRESCRIPTIONS_4:-PLACEHOLDER} \ - "EnabledSystemsValue=$${ENABLED_SYSTEMS:-Internal Test System}" \ "EnabledSiteODSCodesValue=$${ENABLED_SITE_ODS_CODES:-A83008,FA565}" \ BlockedSiteODSCodesValue=$${BLOCKED_SITE_ODS_CODES:-XXXXX} \ EnabledSupplierApplicationIDsValue=$${ENABLED_SUPPLIER_APPLICATION_IDS:-XXXXX} \ diff --git a/SAMtemplates/functions/main.yaml b/SAMtemplates/functions/main.yaml index ba7c051a66..d48f940945 100644 --- a/SAMtemplates/functions/main.yaml +++ b/SAMtemplates/functions/main.yaml @@ -43,9 +43,6 @@ Parameters: EnabledSiteODSCodesParam: Type: AWS::SSM::Parameter::Name - EnabledSystemsParam: - Type: AWS::SSM::Parameter::Name - EnabledSupplierApplicationIDsParam: Type: AWS::SSM::Parameter::Name @@ -135,11 +132,6 @@ Resources: POST_DATED_PRESCRIPTIONS_SQS_QUEUE_URL: !Ref PostDatedNotificationsSQSQueueUrl ENABLE_POST_DATED_NOTIFICATIONS: !Ref EnablePostDatedNotifications SQS_SALT: !Ref SQSSaltSecret - # Remove this once we've confirmed that product ID based filtering is working as expected and we - # no longer need the ability to switch back to the old filtering method - USE_APP_ID_FOR_NOTIFICATIONS_FILTERING: true - ENABLED_SYSTEMS_PARAM: !Ref EnabledSystemsParam - # ENABLED_APPLICATION_IDS_PARAM: !Ref EnabledSupplierApplicationIDsParam ENABLED_SITE_ODS_CODES_PARAM: !Ref EnabledSiteODSCodesParam BLOCKED_SITE_ODS_CODES_PARAM: !Ref BlockedSiteODSCodesParam diff --git a/SAMtemplates/main_template.yaml b/SAMtemplates/main_template.yaml index e1448ddc00..52c92b0d88 100644 --- a/SAMtemplates/main_template.yaml +++ b/SAMtemplates/main_template.yaml @@ -125,10 +125,6 @@ Parameters: Type: String Default: " " - EnabledSystemsValue: - Type: String - Default: " " - EnabledSupplierApplicationIDsValue: Type: String Default: " " @@ -191,7 +187,6 @@ Resources: EnableNotificationsInternalValue: !Ref EnableNotificationsInternal EnableNotificationsExternalValue: !Ref EnableNotificationsExternal EnabledSiteODSCodesValue: !Ref EnabledSiteODSCodesValue - EnabledSystemsValue: !Ref EnabledSystemsValue EnabledSupplierApplicationIDsValue: !Ref EnabledSupplierApplicationIDsValue BlockedSiteODSCodesValue: !Ref BlockedSiteODSCodesValue NotifyRoutingPlanIDValue: !Ref NotifyRoutingPlanIDValue @@ -258,7 +253,6 @@ Resources: EnablePostDatedNotifications: !Ref EnablePostDatedNotifications SQSSaltSecret: !GetAtt Secrets.Outputs.SQSSaltSecret EnabledSiteODSCodesParam: !GetAtt Parameters.Outputs.EnabledSiteODSCodesParameterName - EnabledSystemsParam: !GetAtt Parameters.Outputs.EnabledSystemsParameterName EnabledSupplierApplicationIDsParam: !GetAtt Parameters.Outputs.EnabledSupplierApplicationIDsParameterName BlockedSiteODSCodesParam: !GetAtt Parameters.Outputs.BlockedSiteODSCodesParameterName NotifyRoutingPlanIDParam: !GetAtt Parameters.Outputs.NotifyRoutingPlanIDParameterName diff --git a/SAMtemplates/parameters/main.yaml b/SAMtemplates/parameters/main.yaml index bb4f7ce793..4fc0d09cec 100644 --- a/SAMtemplates/parameters/main.yaml +++ b/SAMtemplates/parameters/main.yaml @@ -24,10 +24,6 @@ Parameters: Type: String Default: " " - EnabledSystemsValue: - Type: String - Default: " " - EnabledSupplierApplicationIDsValue: Type: String Default: " " @@ -65,14 +61,6 @@ Resources: Type: String Value: !Ref EnabledSiteODSCodesValue - EnabledSystemsParameter: - Type: AWS::SSM::Parameter - Properties: - Name: !Sub ${StackName}-PSUNotifyEnabledSystems - Description: "List of application names for which notifications are enabled" - Type: String - Value: !Ref EnabledSystemsValue - EnabledSupplierApplicationIDsParameter: Type: AWS::SSM::Parameter Properties: @@ -166,7 +154,6 @@ Resources: - ssm:GetParameters Resource: - !Sub arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${StackName}-PSUNotifyEnabledSiteODSCodes - - !Sub arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${StackName}-PSUNotifyEnabledSystems - !Sub arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${StackName}-PSUNotifyEnabledSupplierApplicationIDs - !Sub arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${StackName}-PSUNotifyBlockedSiteODSCodes - !Sub arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${StackName}-PSUNotifyRoutingPlanID @@ -186,12 +173,6 @@ Outputs: Export: Name: !Sub ${StackName}-PSUNotifyEnabledSiteODSCodesParam - EnabledSystemsParameterName: - Description: "Name of the SSM parameter holding enabled system names" - Value: !Ref EnabledSystemsParameter - Export: - Name: !Sub ${StackName}-PSUNotifyEnabledSystemsParam - EnabledSupplierApplicationIDsParameterName: Description: "Name of the SSM parameter holding enabled supplier apigee application IDs" Value: !Ref EnabledSupplierApplicationIDsParameter diff --git a/packages/updatePrescriptionStatus/.vitest/setup-env.js b/packages/updatePrescriptionStatus/.vitest/setup-env.js index 67d1f3297a..30880bdefe 100644 --- a/packages/updatePrescriptionStatus/.vitest/setup-env.js +++ b/packages/updatePrescriptionStatus/.vitest/setup-env.js @@ -5,7 +5,7 @@ process.env.ENABLE_POST_DATED_NOTIFICATIONS = "true"; process.env.AWS_REGION = "eu-west-2"; process.env.SQS_SALT = "the quick brown fox something something" process.env.ENABLED_SITE_ODS_CODES_PARAM = "ENABLED_SITE_ODS_CODES_PARAM" -process.env.ENABLED_SYSTEMS_PARAM = "ENABLED_SYSTEMS_PARAM" process.env.BLOCKED_SITE_ODS_CODES_PARAM = "BLOCKED_SITE_ODS_CODES_PARAM" process.env.ENABLE_NOTIFICATIONS_PARAM = "ENABLE_NOTIFICATIONS_PARAM" +process.env.ENABLED_APPLICATION_IDS_PARAM = "ENABLED_APPLICATION_IDS_PARAM" process.env.REQUIRE_APPLICATION_NAME = "false" diff --git a/packages/updatePrescriptionStatus/src/utils/sqsClient.ts b/packages/updatePrescriptionStatus/src/utils/sqsClient.ts index fd73b6aaa8..a331bd2f97 100644 --- a/packages/updatePrescriptionStatus/src/utils/sqsClient.ts +++ b/packages/updatePrescriptionStatus/src/utils/sqsClient.ts @@ -144,10 +144,7 @@ export function saltedHash( export async function getSaltValue(logger: Logger): Promise { let sqsSalt: string - if (!process.env.SQS_SALT) { - // No secret name configured at all, so fall back - sqsSalt = fallbackSalt - } else { + if (process.env.SQS_SALT) { try { // grab the secret, expecting JSON like { "salt": "string" } const secretJson = await getSecret(process.env.SQS_SALT, {transform: "json"}) @@ -172,6 +169,9 @@ export async function getSaltValue(logger: Logger): Promise { logger.error("Failed to fetch SQS_SALT from Secrets Manager, using DEV SALT", {error}) sqsSalt = fallbackSalt } + } else { + // No secret name configured at all, so fall back + sqsSalt = fallbackSalt } if (sqsSalt === fallbackSalt) { diff --git a/packages/updatePrescriptionStatus/src/validation/notificationSiteAndSystemFilters.ts b/packages/updatePrescriptionStatus/src/validation/notificationSiteAndSystemFilters.ts index a1bb33f60b..619f38c533 100644 --- a/packages/updatePrescriptionStatus/src/validation/notificationSiteAndSystemFilters.ts +++ b/packages/updatePrescriptionStatus/src/validation/notificationSiteAndSystemFilters.ts @@ -2,12 +2,7 @@ import {PSUDataItemWithPrevious} from "@psu-common/commonTypes" import {initiatedSSMProvider} from "@psu-common/utilities" import {Logger} from "@aws-lambda-powertools/logger" -const USE_APP_ID_FOR_NOTIFICATIONS_FILTERING = - (process.env.USE_APP_ID_FOR_NOTIFICATIONS_FILTERING || "false") - .toLowerCase() === "true" - -function str2set(value: string | undefined): Set { - const raw = value ?? "" +function str2set(raw = ""): Set { return new Set(raw .split(",") .map((s) => s.trim().toLowerCase()) @@ -17,26 +12,22 @@ function str2set(value: string | undefined): Set { async function loadConfig(): Promise<{ enabledSiteODSCodes: Set, - enabledSystemAppNames: Set, enabledSystemAppIds: Set, blockedSiteODSCodes: Set }> { const paramNames = { [process.env.ENABLED_SITE_ODS_CODES_PARAM!]: {maxAge: 5}, - [process.env.ENABLED_SYSTEMS_PARAM!]: {maxAge: 5}, [process.env.ENABLED_APPLICATION_IDS_PARAM!]: {maxAge: 5}, [process.env.BLOCKED_SITE_ODS_CODES_PARAM!]: {maxAge: 5} } const all = await initiatedSSMProvider.getParametersByName(paramNames) const enabledSiteODSCodes = str2set(all[process.env.ENABLED_SITE_ODS_CODES_PARAM!] as string) - const enabledSystemAppNames = str2set(all[process.env.ENABLED_SYSTEMS_PARAM!] as string) const enabledSystemAppIds = str2set(all[process.env.ENABLED_APPLICATION_IDS_PARAM!] as string) const blockedSiteODSCodes = str2set(all[process.env.BLOCKED_SITE_ODS_CODES_PARAM!] as string) return { enabledSiteODSCodes, - enabledSystemAppNames, enabledSystemAppIds, blockedSiteODSCodes } @@ -56,13 +47,12 @@ export async function checkSiteOrSystemIsNotifyEnabled( logger?: Logger ): Promise> { // Get the configuration from either the cache or SSM - const {enabledSiteODSCodes, enabledSystemAppNames, enabledSystemAppIds, blockedSiteODSCodes} = await loadConfig() + const {enabledSiteODSCodes, enabledSystemAppIds, blockedSiteODSCodes} = await loadConfig() const unfilteredItemCount = data.length logger?.info("Filtering items based on enabled sites and systems configuration", { enabledSystemAppIds: Array.from(enabledSystemAppIds), - enabledSystemAppNames: Array.from(enabledSystemAppNames), enabledODSCodes: Array.from(enabledSiteODSCodes), blockedODSCodes: Array.from(blockedSiteODSCodes) } @@ -78,19 +68,10 @@ export async function checkSiteOrSystemIsNotifyEnabled( {appId, appName, odsCode} ) - // Is this item supplier enabled? - if (USE_APP_ID_FOR_NOTIFICATIONS_FILTERING) { - logger?.info("Using application ID for notifications filtering") - const isEnabledApplication = enabledSiteODSCodes.has(odsCode) || enabledSystemAppIds.has(appId) - if (!isEnabledApplication) { - return false - } - } else { - logger?.info("Using application name for notifications filtering") - const isEnabledSystem = enabledSiteODSCodes.has(odsCode) || enabledSystemAppNames.has(appName) - if (!isEnabledSystem) { - return false - } + // Is this item's supplier enabled? + const isEnabledApplication = enabledSiteODSCodes.has(odsCode) || enabledSystemAppIds.has(appId) + if (!isEnabledApplication) { + return false } // Cannot have a blocked ODS code diff --git a/packages/updatePrescriptionStatus/tests/testSqsClient.test.ts b/packages/updatePrescriptionStatus/tests/testSqsClient.test.ts index c051d1b456..c4682d538d 100644 --- a/packages/updatePrescriptionStatus/tests/testSqsClient.test.ts +++ b/packages/updatePrescriptionStatus/tests/testSqsClient.test.ts @@ -14,9 +14,8 @@ import {createMockDataItem} from "./utils/testUtils" const {mockSend, mockGetSecret, mockInitiatedSSMProvider} = vi.hoisted(() => { const mockGetParametersByName = vi.fn(async () => ({ [process.env.ENABLED_SITE_ODS_CODES_PARAM!]: "FA565", - // eslint-disable-next-line max-len - [process.env.ENABLED_SYSTEMS_PARAM!]: "Internal Test System,Apotec Ltd - Apotec CRM - Production,CrxPatientApp,nhsPrescriptionApp,Titan PSU Prod", - [process.env.BLOCKED_SITE_ODS_CODES_PARAM!]: "B3J1Z" + [process.env.BLOCKED_SITE_ODS_CODES_PARAM!]: "B3J1Z", + [process.env.ENABLED_APPLICATION_IDS_PARAM!]: "550e8400-e29b-41d4-a716-446655440000" })) return { @@ -459,42 +458,41 @@ describe("Unit tests for checkSiteOrSystemIsNotifyEnabled", () => { it("includes an item with an enabled ODS code", async () => { const previous = createMockDataItem({ PharmacyODSCode: "FA565", - ApplicationName: "not a real test supplier", + ApplicationID: "00000000-0000-0000-0000-000000000000", Status: "previous" }) const current = createMockDataItem({ PharmacyODSCode: "FA565", - ApplicationName: "not a real test supplier" + ApplicationID: "00000000-0000-0000-0000-000000000000" }) const result = await checkSiteOrSystemIsNotifyEnabled([{previous, current}], logger) expect(result).toStrictEqual([{previous, current}]) expectLogReceivedAndAllowed(infoSpy, 1, 1) }) - it("includes an item with an enabled ApplicationName", async () => { + it("includes an item with an enabled ApplicationID", async () => { const previous = createMockDataItem({ PharmacyODSCode: "ZZZ999", - ApplicationName: "Internal Test System", + ApplicationID: "550e8400-e29b-41d4-a716-446655440000", Status: "previous" }) const current = createMockDataItem({ PharmacyODSCode: "ZZZ999", - ApplicationName: "Internal Test System" + ApplicationID: "550e8400-e29b-41d4-a716-446655440000" }) const result = await checkSiteOrSystemIsNotifyEnabled([{previous, current}], logger) expect(result).toEqual([{previous, current}]) expectLogReceivedAndAllowed(infoSpy, 1, 1) }) - it("is case insensitive for both ODS code and ApplicationName", async () => { + it("is case insensitive for both ODS code and ApplicationID", async () => { const item1 = createMockDataItem({ PharmacyODSCode: "fa565", - ApplicationName: "not a real test supplier" + ApplicationID: "00000000-0000-0000-0000-000000000000" }) const item2 = createMockDataItem({ PharmacyODSCode: "zzz999", - ApplicationName: "internal test SYSTEM", - ApplicationID: "550e8400-e29b-41d4-a716-446655440000" + ApplicationID: "550E8400-E29B-41D4-A716-446655440000" }) const result = await checkSiteOrSystemIsNotifyEnabled([ { @@ -521,12 +519,12 @@ describe("Unit tests for checkSiteOrSystemIsNotifyEnabled", () => { it("excludes an item when its ODS code is blocked, even if otherwise enabled", async () => { const previous = createMockDataItem({ PharmacyODSCode: "b3j1z", - ApplicationName: "Internal Test System", + ApplicationID: "550e8400-e29b-41d4-a716-446655440000", Status: "previous" }) const current = createMockDataItem({ PharmacyODSCode: "b3j1z", - ApplicationName: "Internal Test System" + ApplicationID: "550e8400-e29b-41d4-a716-446655440000" }) const result = await checkSiteOrSystemIsNotifyEnabled([{previous, current}], logger) expect(result).toEqual([]) @@ -536,13 +534,11 @@ describe("Unit tests for checkSiteOrSystemIsNotifyEnabled", () => { it("excludes items that are neither enabled nor blocked", async () => { const previous = createMockDataItem({ PharmacyODSCode: "NOTINLIST", - ApplicationName: "Some Other System", ApplicationID: "550e8400-e29b-41d4-a716-446655441234", Status: "previous" }) const current = createMockDataItem({ PharmacyODSCode: "NOTINLIST", - ApplicationName: "Some Other System", ApplicationID: "550e8400-e29b-41d4-a716-446655441234" }) const result = await checkSiteOrSystemIsNotifyEnabled([{previous, current}], logger) diff --git a/zizmor.yml b/zizmor.yml index a77627f532..d4ea4e1227 100644 --- a/zizmor.yml +++ b/zizmor.yml @@ -2,7 +2,7 @@ rules: unpinned-images: # these workflows use unpinned images because they are using a full image passed in that contains the tag ignore: - - run_release_code_and_api.yml:146:18 + - run_release_code_and_api.yml:143:18 - run_regression_tests.yml:26:18 - run_package_code_and_api.yml:16:18 secrets-outside-env: