Skip to content

Commit

Permalink
Merge 0788536 into 9ad16f0
Browse files Browse the repository at this point in the history
  • Loading branch information
Mahesh Subramanian committed Jun 19, 2019
2 parents 9ad16f0 + 0788536 commit fceca6c
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 0 deletions.
1 change: 1 addition & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
<wildfly.swarm.version>2017.11.0</wildfly.swarm.version>
<version.swarm.fraction-plugin>77</version.swarm.fraction-plugin>
<junit-dataprovider.version>1.13.1</junit-dataprovider.version>
<mifmif-generex.version>1.0.2</mifmif-generex.version>

</properties>

Expand Down
5 changes: 5 additions & 0 deletions stream-transformation-tool-anonymise/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@
<artifactId>test-utils-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.mifmif</groupId>
<artifactId>generex</artifactId>
<version>${mifmif-generex.version}</version>
</dependency>
</dependencies>


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class StringPattern {
public static final Pattern DATE_TIME_PATTERN = compile("^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])(T|\\s)(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$");
public static final Pattern NI_NUMBER_PATTERN = compile("(?!BG)(?!GB)(?!NK)(?!KN)(?!TN)(?!NT)(?!ZZ)(?:[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z])(?:\\s*\\d\\s*){6}([A-D]|\\s)$");
public static final Pattern POSTCODE_PATTERN = compile("^(([gG][iI][rR] {0,}0[aA]{2})|(([aA][sS][cC][nN]|[sS][tT][hH][lL]|[tT][dD][cC][uU]|[bB][bB][nN][dD]|[bB][iI][qQ][qQ]|[fF][iI][qQ][qQ]|[pP][cC][rR][nN]|[sS][iI][qQ][qQ]|[iT][kK][cC][aA]) {0,}1[zZ]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yxA-HK-XY]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))$");
public static final Pattern PHONE_NUMBER_PATTERN = compile("^[\\d]*$");

private StringPattern() {
// should not create an instance of this class
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package uk.gov.justice.tools.eventsourcing.anonymization.generator;


import static java.lang.String.format;

import com.mifmif.common.regex.Generex;
import org.apache.commons.lang3.StringUtils;

public class PhoneNumberGenerator extends Generator<String> {

@Override
public String convert(final String fieldValue) {
if (StringUtils.isBlank(fieldValue)) {
return "";
}

return new Generex(format("[0-9]{%s}", fieldValue.length())).random();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static uk.gov.justice.tools.eventsourcing.anonymization.constants.StringPattern.DATE_TIME_PATTERN;
import static uk.gov.justice.tools.eventsourcing.anonymization.constants.StringPattern.EMAIL_PATTERN;
import static uk.gov.justice.tools.eventsourcing.anonymization.constants.StringPattern.NI_NUMBER_PATTERN;
import static uk.gov.justice.tools.eventsourcing.anonymization.constants.StringPattern.PHONE_NUMBER_PATTERN;
import static uk.gov.justice.tools.eventsourcing.anonymization.constants.StringPattern.POSTCODE_PATTERN;
import static uk.gov.justice.tools.eventsourcing.anonymization.constants.StringPattern.UUID_PATTERN;

Expand Down Expand Up @@ -37,6 +38,10 @@ public Generator getGenerator(final String value) {
return new PostCodeGenerator();
}

if (valueMatchesPattern(value, PHONE_NUMBER_PATTERN)) {
return new PhoneNumberGenerator();
}

return new SimpleStringGenerator();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package uk.gov.justice.tools.eventsourcing.anonymization.generator;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertTrue;
import static uk.gov.justice.tools.eventsourcing.anonymization.constants.StringPattern.PHONE_NUMBER_PATTERN;
import static uk.gov.justice.tools.eventsourcing.anonymization.util.MatcherUtil.assertStringIsAnonymisedButOfSameLength;

import org.junit.Test;

public class PhoneNumberGeneratorTest {

@Test
public void shouldConvertPhoneNumber() {
final String originalPhoneNumber = "232132";
final String convertedPhoneNumber = new PhoneNumberGenerator().convert(originalPhoneNumber);
assertTrue(PHONE_NUMBER_PATTERN.matcher(convertedPhoneNumber).matches());
assertStringIsAnonymisedButOfSameLength(convertedPhoneNumber, originalPhoneNumber);
}

@Test
public void shouldReturnEmptyStringWhenValueIsNull() {
assertThat(new PhoneNumberGenerator().convert(null), is(""));
}

@Test
public void shouldReturnEmptyStringWhenValueIsEmptyString() {
assertThat(new PhoneNumberGenerator().convert(""), is(""));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,9 @@ public void shouldReturnNiNumberStringGenerator() {
assertThat(factory.getGenerator("SC768978A"), instanceOf(NINumberGenerator.class));
}

@Test
public void shouldReturnPhoneNumberStringGenerator() {
assertThat(factory.getGenerator("0123878732"), instanceOf(PhoneNumberGenerator.class));
}

}

0 comments on commit fceca6c

Please sign in to comment.