From 982dd1f9bbedd5cbec8d8c261b2ec3b3e0c65095 Mon Sep 17 00:00:00 2001 From: Erik Eiesland Date: Wed, 6 Dec 2023 12:55:06 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Legger=20til=20mulighet=20for=20=C3=A5=20br?= =?UTF-8?q?uke=20testidenter=20fra=20NAV=20(+40)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../no/bekk/bekkopen/person/Fodselsnummer.java | 15 +++++++++------ .../bekk/bekkopen/person/FodselsnummerTest.java | 4 ++++ .../SyntheticFodselsnummerValidatorTest.java | 7 +++++++ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/java/no/bekk/bekkopen/person/Fodselsnummer.java b/src/main/java/no/bekk/bekkopen/person/Fodselsnummer.java index a830989..f559542 100644 --- a/src/main/java/no/bekk/bekkopen/person/Fodselsnummer.java +++ b/src/main/java/no/bekk/bekkopen/person/Fodselsnummer.java @@ -199,24 +199,27 @@ static String parseSyntheticNumber(String fodselsnummer) { if (!isSynthetic(fodselsnummer)) { return fodselsnummer; } else { - int monthNumber = Integer.parseInt(fodselsnummer.substring(2, 4)); //Skatteetaten - synthetic numbers - if (monthNumber >= 81 && monthNumber <= 92){ - + if (monthNumber >= 81 && monthNumber <= 92) { return fodselsnummer.substring(0, 2) + (getThirdDigit(fodselsnummer) - 8) + fodselsnummer.substring(3); } //Norsk helsenett - synthetic numbers - if (monthNumber >= 66 && monthNumber <= 77 ) { + if (monthNumber >= 66 && monthNumber <= 77) { String month = Integer.toString(monthNumber - 65); - if (month.length() == 1){ + if (month.length() == 1) { month = "0" + month; } return fodselsnummer.substring(0, 2) + month + fodselsnummer.substring(4); } + //Norwegian Labour and Welfare Administration (NAV) - synthetic numbers + if (monthNumber >= 41 && monthNumber <= 52) { + return fodselsnummer.substring(0, 2) + (getThirdDigit(fodselsnummer) - 4) + fodselsnummer.substring(3); + } + throw new IllegalArgumentException(fodselsnummer + " is not a valid synthethic number"); } } @@ -224,7 +227,7 @@ static String parseSyntheticNumber(String fodselsnummer) { static boolean isSynthetic(String fodselsnummer) { try { int monthNumber = Integer.parseInt(fodselsnummer.substring(2, 4)); - if ((monthNumber >= 81 && monthNumber <= 92) || (monthNumber >= 66 && monthNumber <= 77)) { + if ((monthNumber >= 81 && monthNumber <= 92) || (monthNumber >= 66 && monthNumber <= 77) || (monthNumber >= 41 && monthNumber <= 52)) { return true; } } catch (IllegalArgumentException e) { diff --git a/src/test/java/no/bekk/bekkopen/person/FodselsnummerTest.java b/src/test/java/no/bekk/bekkopen/person/FodselsnummerTest.java index 881dd4e..5dc39b4 100644 --- a/src/test/java/no/bekk/bekkopen/person/FodselsnummerTest.java +++ b/src/test/java/no/bekk/bekkopen/person/FodselsnummerTest.java @@ -176,6 +176,9 @@ public void testParseSyntheticNumber() { //+65 on birth month 10-12 assertEquals("07116303651", Fodselsnummer.parseSyntheticNumber("07766303651")); + + //+40 on birth month 1-12 + assertEquals("10119120173", Fodselsnummer.parseSyntheticNumber("10519120173")); } @Test @@ -186,5 +189,6 @@ public void testIsSyntheticNumber() { assertTrue(Fodselsnummer.isSynthetic("07916303651")); assertTrue(Fodselsnummer.isSynthetic("07666303651")); assertTrue(Fodselsnummer.isSynthetic("07766303651")); + assertTrue(Fodselsnummer.isSynthetic("16499923264")); } } diff --git a/src/test/java/no/bekk/bekkopen/person/SyntheticFodselsnummerValidatorTest.java b/src/test/java/no/bekk/bekkopen/person/SyntheticFodselsnummerValidatorTest.java index b775e41..4f0dd95 100644 --- a/src/test/java/no/bekk/bekkopen/person/SyntheticFodselsnummerValidatorTest.java +++ b/src/test/java/no/bekk/bekkopen/person/SyntheticFodselsnummerValidatorTest.java @@ -79,5 +79,12 @@ void testSyntheticDNumberIsWithinValidRange() { assertTrue(FodselsnummerValidator.isValid("41774061388")); assertFalse(FodselsnummerValidator.isValid("41784061882")); + + //+40 (41-52) + assertTrue(FodselsnummerValidator.isValid("24417138435")); + assertFalse(FodselsnummerValidator.isValid("15407300685")); + + assertTrue(FodselsnummerValidator.isValid("04452305157")); + assertFalse(FodselsnummerValidator.isValid("18535547706")); } } From 49fc8af743bc17966b71f7753c7c3aef3b206bc5 Mon Sep 17 00:00:00 2001 From: Erik Eiesland Date: Wed, 6 Dec 2023 13:06:41 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Rettelse=20i=20test=20slik=20at=20fiktivt?= =?UTF-8?q?=20f=C3=B8dselsnummer=20fra=20NAV=20faktisk=20er=20i=20=C3=B8vr?= =?UTF-8?q?e=20del=20av=20intervall=20fra=2041=20til=2051?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bekkopen/person/SyntheticFodselsnummerValidatorTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/no/bekk/bekkopen/person/SyntheticFodselsnummerValidatorTest.java b/src/test/java/no/bekk/bekkopen/person/SyntheticFodselsnummerValidatorTest.java index 4f0dd95..98fc48f 100644 --- a/src/test/java/no/bekk/bekkopen/person/SyntheticFodselsnummerValidatorTest.java +++ b/src/test/java/no/bekk/bekkopen/person/SyntheticFodselsnummerValidatorTest.java @@ -84,7 +84,7 @@ void testSyntheticDNumberIsWithinValidRange() { assertTrue(FodselsnummerValidator.isValid("24417138435")); assertFalse(FodselsnummerValidator.isValid("15407300685")); - assertTrue(FodselsnummerValidator.isValid("04452305157")); + assertTrue(FodselsnummerValidator.isValid("16526295130")); assertFalse(FodselsnummerValidator.isValid("18535547706")); } }