From 3f3de78c83ae919fd44531ac7ae9caed885800d4 Mon Sep 17 00:00:00 2001 From: Jelle Hulter Date: Wed, 23 Mar 2022 09:29:48 +0100 Subject: [PATCH] fix: corrected the Costa Rican IBAN format (#646) --- src/iban.ts | 8 +++++-- test/finance_iban.spec.ts | 44 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/iban.ts b/src/iban.ts index 3f10e91be2e..b608357ee93 100644 --- a/src/iban.ts +++ b/src/iban.ts @@ -206,8 +206,12 @@ export = { }, { country: 'CR', - total: 21, + total: 22, bban: [ + { + type: 'n', + count: 1, + }, { type: 'n', count: 3, @@ -217,7 +221,7 @@ export = { count: 14, }, ], - format: 'CRkk bbbc cccc cccc cccc c', + format: 'CRkk xbbb cccc cccc cccc cc', }, { country: 'HR', diff --git a/test/finance_iban.spec.ts b/test/finance_iban.spec.ts index 23768387d85..5c3fb9c9b6b 100644 --- a/test/finance_iban.spec.ts +++ b/test/finance_iban.spec.ts @@ -255,6 +255,50 @@ describe('finance_iban', () => { 'the result should be equal to 1' ).toBe(1); }); + + it('IBAN for Costa Rica is correct', () => { + // Costa Rica + // https://wise.com/us/iban/costa-rica + // Length 22 + // BBAN 1n,3n,14n + // CRkk xbbb cccc cccc cccc cccc cccc + // x = reserve digit + // b = National bank code (digits) + // c = Account number (digits) + + // example IBAN CR05 0152 0200 1026 2840 66 + + const iban = faker.finance.iban(false, 'CR'); + + expect(iban).satisfy(validator.isIBAN); + + const ibanFormated = iban.match(/.{1,4}/g).join(' '); + const bban = iban.substring(4) + iban.substring(0, 4); + + expect( + 22, + `CR IBAN would be 22 chars length, given is ${iban.length}` + ).toBe(iban.length); + + expect( + iban.substring(0, 2), + iban.substring(0, 2) + + "must start with 'CR' in CR IBAN " + + ibanFormated + ).to.eq('CR'); + + expect( + iban.substring(2, 22), + iban.substring(2, 22) + + ' must contains only digit in AZ IBAN ' + + ibanFormated + ).match(/^\d{20}$/); + + expect( + ibanLib.mod97(ibanLib.toDigitString(bban)), + 'the result should be equal to 1' + ).toBe(1); + }); }); } });