Skip to content

Commit

Permalink
swedish ssn cannot have format like XXXXXX-000X (#1434)
Browse files Browse the repository at this point in the history
* swedish ssn cannot have format like XXXXXX-000X, the number part has to be between 001 and 999
  • Loading branch information
TrueJacobG authored Nov 9, 2024
1 parent 1b19bdc commit ff110bf
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,18 @@ public String getValidSsn(BaseProviders f) {
@Override
public PersonIdNumber generateValid(BaseProviders f, IdNumber.IdNumberRequest request) {
LocalDate birthday = birthday(f, request);
String end = f.numerify("###");
String end = generateEndPart(f);
String basePart = DATE_TIME_FORMATTER.format(birthday)
+ f.options().option(PLUS_MINUS)
+ end;
String idNumber = basePart + calculateChecksum(basePart);
return new PersonIdNumber(idNumber, birthday, gender(f, request));
}

public static String generateEndPart(BaseProviders f) {
return "%03d".formatted(f.number().numberBetween(1, 1000));
}

@Deprecated
public String getInvalidSsn(BaseProviders f) {
return generateInvalid(f);
Expand Down Expand Up @@ -78,6 +82,10 @@ public static boolean isValidSwedishSsn(String ssn) {
return false;
}

if (ssn.startsWith("000", 7)) {
return false;
}

int calculatedChecksum = calculateChecksum(ssn);
int checksum = Integer.parseInt(ssn.substring(10, 11));
return checksum == calculatedChecksum;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ void validSwedishSsn() {

@Test
void invalidSwedishSsn() {
assertThat(SwedenIdNumber.isValidSwedishSsn("020914-0003")).isFalse();
assertThat(SwedenIdNumber.isValidSwedishSsn("8112289873")).isFalse();
assertThat(SwedenIdNumber.isValidSwedishSsn("foo228-9873")).isFalse();
assertThat(SwedenIdNumber.isValidSwedishSsn("811228-9873")).isFalse();
Expand Down

0 comments on commit ff110bf

Please sign in to comment.