Zentralen BIC-Abgleich robust machen
All checks were successful
Build and Push Docker Images / build-backend (push) Successful in 44s
Build and Push Docker Images / build-frontend (push) Successful in 22s
Build and Push Docker Images / build-website (push) Successful in 21s
Build and Push Docker Images / build-central-services-api (push) Successful in 22s
Build and Push Docker Images / build-central-services-admin (push) Successful in 23s
Build and Push Docker Images / build-docs (push) Successful in 21s

This commit is contained in:
root
2026-09-01 13:17:37 +00:00
parent 0bd862af55
commit 21fb8c6649
3 changed files with 42 additions and 1 deletions

View File

@@ -0,0 +1,22 @@
export type BankingInstitution = {
bic?: unknown
[key: string]: unknown
}
export const findBankInstitutionByBic = (
institutions: unknown,
bic: string,
): BankingInstitution | null => {
if (!Array.isArray(institutions)) return null
const normalizedBic = bic.trim().toUpperCase()
if (!normalizedBic) return null
const institution = institutions.find((candidate): candidate is BankingInstitution => {
if (!candidate || typeof candidate !== "object") return false
const candidateBic = (candidate as BankingInstitution).bic
return typeof candidateBic === "string" && candidateBic.trim().toUpperCase() === normalizedBic
})
return institution || null
}

View File

@@ -8,6 +8,7 @@ import { decrypt, encrypt } from "../utils/crypt"
import { DE_BANK_CODE_TO_NAME } from "../utils/deBankCodes"
import { DE_BANK_CODE_TO_BIC } from "../utils/deBankBics"
import { centralServicesClient } from "../modules/push-server.client"
import { findBankInstitutionByBic } from "../modules/banking-institution"
import {
bankrequisitions,
@@ -1047,7 +1048,7 @@ export default async function bankingRoutes(server: FastifyInstance) {
))
}
const bank = data.find((i: any) => i.bic.toLowerCase() === bic.toLowerCase())
const bank = findBankInstitutionByBic(data, bic)
if (!bank) return reply.code(404).send("Bank not found")

View File

@@ -0,0 +1,18 @@
import test from "node:test"
import assert from "node:assert/strict"
import { findBankInstitutionByBic } from "../src/modules/banking-institution"
test("finds a banking institution by BIC case-insensitively", () => {
const institution = findBankInstitutionByBic([
{ id: "without-bic" },
{ id: "slz", bic: "slzode22xxx" },
], " SLZODE22XXX ")
assert.equal(institution?.id, "slz")
})
test("ignores institutions without a BIC instead of throwing", () => {
assert.equal(findBankInstitutionByBic([{ id: "without-bic" }], "SLZODE22XXX"), null)
assert.equal(findBankInstitutionByBic(null, "SLZODE22XXX"), null)
})