Skip to content

Commit b05bb24

Browse files
authored
Merge pull request #70 from navikt/master
Legger til mulighet for å bruke testidenter fra NAV (+40)
2 parents 87d0019 + 49fc8af commit b05bb24

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

src/main/java/no/bekk/bekkopen/person/Fodselsnummer.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -199,32 +199,35 @@ static String parseSyntheticNumber(String fodselsnummer) {
199199
if (!isSynthetic(fodselsnummer)) {
200200
return fodselsnummer;
201201
} else {
202-
203202
int monthNumber = Integer.parseInt(fodselsnummer.substring(2, 4));
204203

205204
//Skatteetaten - synthetic numbers
206-
if (monthNumber >= 81 && monthNumber <= 92){
207-
205+
if (monthNumber >= 81 && monthNumber <= 92) {
208206
return fodselsnummer.substring(0, 2) + (getThirdDigit(fodselsnummer) - 8) + fodselsnummer.substring(3);
209207
}
210208

211209
//Norsk helsenett - synthetic numbers
212-
if (monthNumber >= 66 && monthNumber <= 77 ) {
210+
if (monthNumber >= 66 && monthNumber <= 77) {
213211
String month = Integer.toString(monthNumber - 65);
214-
if (month.length() == 1){
212+
if (month.length() == 1) {
215213
month = "0" + month;
216214
}
217215
return fodselsnummer.substring(0, 2) + month + fodselsnummer.substring(4);
218216
}
219217

218+
//Norwegian Labour and Welfare Administration (NAV) - synthetic numbers
219+
if (monthNumber >= 41 && monthNumber <= 52) {
220+
return fodselsnummer.substring(0, 2) + (getThirdDigit(fodselsnummer) - 4) + fodselsnummer.substring(3);
221+
}
222+
220223
throw new IllegalArgumentException(fodselsnummer + " is not a valid synthethic number");
221224
}
222225
}
223226

224227
static boolean isSynthetic(String fodselsnummer) {
225228
try {
226229
int monthNumber = Integer.parseInt(fodselsnummer.substring(2, 4));
227-
if ((monthNumber >= 81 && monthNumber <= 92) || (monthNumber >= 66 && monthNumber <= 77)) {
230+
if ((monthNumber >= 81 && monthNumber <= 92) || (monthNumber >= 66 && monthNumber <= 77) || (monthNumber >= 41 && monthNumber <= 52)) {
228231
return true;
229232
}
230233
} catch (IllegalArgumentException e) {

src/test/java/no/bekk/bekkopen/person/FodselsnummerTest.java

+4
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,9 @@ public void testParseSyntheticNumber() {
176176

177177
//+65 on birth month 10-12
178178
assertEquals("07116303651", Fodselsnummer.parseSyntheticNumber("07766303651"));
179+
180+
//+40 on birth month 1-12
181+
assertEquals("10119120173", Fodselsnummer.parseSyntheticNumber("10519120173"));
179182
}
180183

181184
@Test
@@ -186,5 +189,6 @@ public void testIsSyntheticNumber() {
186189
assertTrue(Fodselsnummer.isSynthetic("07916303651"));
187190
assertTrue(Fodselsnummer.isSynthetic("07666303651"));
188191
assertTrue(Fodselsnummer.isSynthetic("07766303651"));
192+
assertTrue(Fodselsnummer.isSynthetic("16499923264"));
189193
}
190194
}

src/test/java/no/bekk/bekkopen/person/SyntheticFodselsnummerValidatorTest.java

+7
Original file line numberDiff line numberDiff line change
@@ -79,5 +79,12 @@ void testSyntheticDNumberIsWithinValidRange() {
7979

8080
assertTrue(FodselsnummerValidator.isValid("41774061388"));
8181
assertFalse(FodselsnummerValidator.isValid("41784061882"));
82+
83+
//+40 (41-52)
84+
assertTrue(FodselsnummerValidator.isValid("24417138435"));
85+
assertFalse(FodselsnummerValidator.isValid("15407300685"));
86+
87+
assertTrue(FodselsnummerValidator.isValid("16526295130"));
88+
assertFalse(FodselsnummerValidator.isValid("18535547706"));
8289
}
8390
}

0 commit comments

Comments
 (0)