killbill-memoizeit
Changes
profiles/killbill/src/main/java/org/killbill/billing/server/log/obfuscators/Obfuscator.java 39(+1 -38)
profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestConfigMagicObfuscator.java 8(+4 -4)
profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestLuhnMaskingObfuscator.java 42(+21 -21)
profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscator.java 6(+3 -3)
Details
diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/log/obfuscators/Obfuscator.java b/profiles/killbill/src/main/java/org/killbill/billing/server/log/obfuscators/Obfuscator.java
index bf37cca..cd4426d 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/log/obfuscators/Obfuscator.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/log/obfuscators/Obfuscator.java
@@ -34,17 +34,7 @@ public abstract class Obfuscator {
protected static final int DEFAULT_PATTERN_FLAGS = Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL;
- protected static final String MASK_LABEL = "MASKED";
- protected static final int MASK_LABEL_LENGTH = MASK_LABEL.length();
protected static final char PAD_CHAR = '*';
- protected static final int MASK_LOOKUPS_SIZE = 20;
- protected final String[] MASK_LOOKUPS = new String[MASK_LOOKUPS_SIZE];
-
- public Obfuscator() {
- for (int i = 0; i < MASK_LOOKUPS.length; i++) {
- MASK_LOOKUPS[i] = buildMask(i);
- }
- }
public abstract String obfuscate(final String originalString, final ILoggingEvent event);
@@ -111,33 +101,6 @@ public abstract class Obfuscator {
@VisibleForTesting
String obfuscateConfidentialData(final CharSequence confidentialSequence, @Nullable final CharSequence unmasked) {
final int maskedLength = unmasked == null ? confidentialSequence.length() : confidentialSequence.length() - unmasked.length();
- if (maskedLength < MASK_LOOKUPS_SIZE) {
- return MASK_LOOKUPS[maskedLength];
- } else {
- return buildMask(maskedLength);
- }
- }
-
- /**
- * Create a masking string with the given length.
- *
- * @param maskedLength obfuscated String length
- * @return a mask string
- */
- private String buildMask(final int maskedLength) {
- final int pads = maskedLength - MASK_LABEL_LENGTH;
- final StringBuilder mask = new StringBuilder(maskedLength);
- if (pads <= 0) {
- mask.append(MASK_LABEL);
- } else {
- for (int i = 0; i < pads / 2; i++) {
- mask.append(PAD_CHAR);
- }
- mask.append(MASK_LABEL);
- while (mask.length() < maskedLength) {
- mask.append(PAD_CHAR);
- }
- }
- return mask.toString();
+ return new String(new char[maskedLength]).replace('\0', PAD_CHAR);
}
}
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestConfigMagicObfuscator.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestConfigMagicObfuscator.java
index fb6d67e..51a41c7 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestConfigMagicObfuscator.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestConfigMagicObfuscator.java
@@ -31,19 +31,19 @@ public class TestConfigMagicObfuscator extends ServerTestSuiteNoDB {
@Test(groups = "fast")
public void testKey() throws Exception {
verify("Assigning value [pass2b78b7cef] for [org.killbill.billing.plugin.avatax.licenseKey] on [org.killbill.billing.plugins.avatax#getLicenseKey()]",
- "Assigning value [***MASKED****] for [org.killbill.billing.plugin.avatax.licenseKey] on [org.killbill.billing.plugins.avatax#getLicenseKey()]");
+ "Assigning value [*************] for [org.killbill.billing.plugin.avatax.licenseKey] on [org.killbill.billing.plugins.avatax#getLicenseKey()]");
verify("Assigning value [pass2b78b7cef] for [org.killbill.billing.plugin.avatax.apiKey] on [org.killbill.billing.plugins.avatax#getApiKey()]",
- "Assigning value [***MASKED****] for [org.killbill.billing.plugin.avatax.apiKey] on [org.killbill.billing.plugins.avatax#getApiKey()]");
+ "Assigning value [*************] for [org.killbill.billing.plugin.avatax.apiKey] on [org.killbill.billing.plugins.avatax#getApiKey()]");
}
@Test(groups = "fast")
public void testPassword() throws Exception {
verify("Assigning value [pass2b78b7ce] for [org.killbill.dao.pass] on [org.killbill.commons.jdbi.guice.DaoConfig#getPass()]",
- "Assigning value [***MASKED***] for [org.killbill.dao.pass] on [org.killbill.commons.jdbi.guice.DaoConfig#getPass()]");
+ "Assigning value [************] for [org.killbill.dao.pass] on [org.killbill.commons.jdbi.guice.DaoConfig#getPass()]");
verify("Assigning value [pass2b78b7ce] for [org.killbill.dao.password] on [org.killbill.commons.jdbi.guice.DaoConfig#getPassword()]",
- "Assigning value [***MASKED***] for [org.killbill.dao.password] on [org.killbill.commons.jdbi.guice.DaoConfig#getPassword()]");
+ "Assigning value [************] for [org.killbill.dao.password] on [org.killbill.commons.jdbi.guice.DaoConfig#getPassword()]");
}
private void verify(final String input, final String output) {
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestLuhnMaskingObfuscator.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestLuhnMaskingObfuscator.java
index 405d984..29d51ef 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestLuhnMaskingObfuscator.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestLuhnMaskingObfuscator.java
@@ -50,17 +50,17 @@ public class TestLuhnMaskingObfuscator extends ServerTestSuiteNoDB {
@Test(groups = "fast")
public void testConvert() {
- verify("try 5137 0049 8639 6404 and 5137 0049 8639 6403", "try 5137 0049 8639 6404 and 513700*MASKED*6403");
+ verify("try 5137 0049 8639 6404 and 5137 0049 8639 6403", "try 5137 0049 8639 6404 and 513700********6403");
}
@Test(groups = "fast")
public void testConvertCcNumberAtStartNonCcNumberAtEnd() {
- verify("5137 0049 8639 6403 and 5137 0049 8639 6404", "513700*MASKED*6403 and 5137 0049 8639 6404");
+ verify("5137 0049 8639 6403 and 5137 0049 8639 6404", "513700********6403 and 5137 0049 8639 6404");
}
@Test(groups = "fast")
public void testConvertMultiple() {
- verify("try 5137 0049 8639 6403 multiple 5137 0049 8639 6404 possible 4111-1111-1111 1111 card 4111111111111112 numbers", "try 513700*MASKED*6403 multiple 5137 0049 8639 6404 possible 411111*MASKED*1111 card 4111111111111112 numbers");
+ verify("try 5137 0049 8639 6403 multiple 5137 0049 8639 6404 possible 4111-1111-1111 1111 card 4111111111111112 numbers", "try 513700********6403 multiple 5137 0049 8639 6404 possible 411111********1111 card 4111111111111112 numbers");
}
@Test(groups = "fast")
@@ -102,41 +102,41 @@ public class TestLuhnMaskingObfuscator extends ServerTestSuiteNoDB {
+ "Switch/Solo (Paymentech)"
+ "6331101999990016",
"American Express"
- + "378282MASKED0005"
+ + "378282*****0005"
+ "American Express"
- + "371449MASKED8431"
+ + "371449*****8431"
+ "American Express Corporate"
- + "378734MASKED1000"
+ + "378734*****1000"
+ "Australian BankCard"
- + "561059MASKED8250"
+ + "561059******8250"
+ "Diners Club"
- + "305693MASKED5904"
+ + "305693****5904"
+ "Diners Club"
- + "385200MASKED3237"
+ + "385200****3237"
+ "Discover"
- + "601111MASKED1117"
+ + "601111******1117"
+ "Discover"
- + "601100MASKED9424"
+ + "601100******9424"
+ "JCB"
- + "353011MASKED0000"
+ + "353011******0000"
+ "JCB"
- + "356600MASKED0505"
+ + "356600******0505"
+ "MasterCard"
- + "555555MASKED4444"
+ + "555555******4444"
+ "MasterCard"
- + "510510MASKED5100"
+ + "510510******5100"
+ "Visa"
- + "411111MASKED1111"
+ + "411111******1111"
+ "Visa"
- + "401288MASKED1881"
+ + "401288******1881"
+ "Visa"
- + "422222MASKED2222"
+ + "422222***2222"
+ "Note : Even though this number has a different character count than the other test numbers, it is the correct and functional number."
+ "Processor-specific Cards"
+ "Dankort (PBS)"
- + "501971MASKED3742"
+ + "501971******3742"
+ "Switch/Solo (Paymentech)"
- + "633110MASKED0016");
+ + "633110******0016");
}
@Test(groups = "fast")
@@ -235,7 +235,7 @@ public class TestLuhnMaskingObfuscator extends ServerTestSuiteNoDB {
"1 > Content-Type: application/json\n" +
"1 > Accept: */*",
"1 * Server in-bound request\n" +
- "1 > POST http://127.0.0.1:8080/1.0/kb/accounts/2a55045a-ce1d-4344-942d-b825536328f9/payments?pluginProperty=cc_number=411111MASKED1111\n" +
+ "1 > POST http://127.0.0.1:8080/1.0/kb/accounts/2a55045a-ce1d-4344-942d-b825536328f9/payments?pluginProperty=cc_number=411111******1111\n" +
"1 > X-Killbill-ApiSecret: lazar\n" +
"1 > Authorization: Basic YWRtaW46cGFzc3dvcmQ=\n" +
"1 > X-Killbill-CreatedBy: admin\n" +
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscator.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscator.java
index 5109ad3..b36c2a5 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscator.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscator.java
@@ -41,7 +41,7 @@ public class TestObfuscator extends ServerTestSuiteNoDB {
final Pattern pattern = Pattern.compile("number=([^;]+)");
final ImmutableList<Pattern> patterns = ImmutableList.<Pattern>of(pattern);
Assert.assertEquals(obfuscator.obfuscate("number=1234;number=12345;number=123456;number=1234567;number=12345678;number=123456789", patterns, Mockito.mock(ILoggingEvent.class)),
- "number=MASKED;number=MASKED;number=MASKED;number=MASKED*;number=*MASKED*;number=*MASKED**");
+ "number=****;number=*****;number=******;number=*******;number=********;number=*********");
}
@@ -51,12 +51,12 @@ public class TestObfuscator extends ServerTestSuiteNoDB {
final Pattern pattern2 = Pattern.compile("numberB=([^;]+)");
final ImmutableList<Pattern> patterns = ImmutableList.<Pattern>of(pattern1, pattern2);
Assert.assertEquals(obfuscator.obfuscate("number=1234;numberB=12345;number=123456;numberB=1234567;number=12345678;numberB=123456789", patterns, Mockito.mock(ILoggingEvent.class)),
- "number=MASKED;numberB=MASKED;number=MASKED;numberB=MASKED*;number=*MASKED*;numberB=*MASKED**");
+ "number=****;numberB=*****;number=******;numberB=*******;number=********;numberB=*********");
}
@Test(groups = "fast")
public void testObfuscateConfidentialData() {
- Assert.assertEquals(obfuscator.obfuscateConfidentialData("5137004986396403", "6403"), "***MASKED***");
+ Assert.assertEquals(obfuscator.obfuscateConfidentialData("5137004986396403", "6403"), "************");
}
}
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscatorConverter.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscatorConverter.java
index 1a12413..4d54512 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscatorConverter.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestObfuscatorConverter.java
@@ -54,9 +54,9 @@ public class TestObfuscatorConverter extends ServerTestSuiteNoDB {
"</gateway>",
"Starting purchase call: \n" +
"<gateway>\n" +
- "<card>411111MASKED1111</card>\n" +
- "<bankAccountNumber>*MASKED**</bankAccountNumber>\n" +
- "<password>**MASKED***</password>\n" +
+ "<card>411111******1111</card>\n" +
+ "<bankAccountNumber>*********</bankAccountNumber>\n" +
+ "<password>***********</password>\n" +
"</gateway>");
}
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestPatternObfuscator.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestPatternObfuscator.java
index 3476f58..11d9162 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestPatternObfuscator.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/obfuscators/TestPatternObfuscator.java
@@ -45,16 +45,16 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
"</ns2:shopperName>\n",
"<ns:expiryMonth>04</expiryMonth>\n" +
"<ns:expiryYear>2015</expiryYear>\n" +
- "<ns:holderName>*MASKED*</holderName>\n" +
- "<ns:number>*****MASKED*****</number>\n" +
- "<ns2:shopperEmail>****MASKED*****</ns2:shopperEmail>\n" +
+ "<ns:holderName>********</holderName>\n" +
+ "<ns:number>****************</number>\n" +
+ "<ns2:shopperEmail>***************</ns2:shopperEmail>\n" +
"<ns2:shopperIP>127.0.0.1</ns2:shopperIP>\n" +
"<ns2:shopperInteraction xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"true\"/>\n" +
"<ns2:shopperName>\n" +
- " <firstName>MASKED</firstName>\n" +
+ " <firstName>***</firstName>\n" +
" <gender xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"true\"/>\n" +
" <infix xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"true\"/>\n" +
- " <lastName>MASKED</lastName>\n" +
+ " <lastName>*****</lastName>\n" +
"</ns2:shopperName>\n");
}
@@ -131,25 +131,25 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
" <clientLibraryVersion>1.47.0</clientLibraryVersion>\n" +
" <clientEnvironment>java</clientEnvironment>\n" +
"<billTo>\n" +
- " <firstName>MASKED</firstName>\n" +
- " <lastName>MASKED</lastName>\n" +
+ " <firstName>****</firstName>\n" +
+ " <lastName>***</lastName>\n" +
" <street1>5, oakriu road</street1>\n" +
" <street2>apt. 298</street2>\n" +
" <city>Gdio Foia</city>\n" +
" <state>FL</state>\n" +
" <postalCode>49302</postalCode>\n" +
" <country>US</country>\n" +
- " <email>**********MASKED**********</email>\n" +
+ " <email>**************************</email>\n" +
"</billTo>\n" +
"<purchaseTotals>\n" +
" <currency>USD</currency>\n" +
" <grandTotalAmount>0.00</grandTotalAmount>\n" +
"</purchaseTotals>\n" +
"<card>\n" +
- " <accountNumber>*****MASKED*****</accountNumber>\n" +
+ " <accountNumber>****************</accountNumber>\n" +
" <expirationMonth>12</expirationMonth>\n" +
" <expirationYear>2017</expirationYear>\n" +
- " <cvNumber>MASKED</cvNumber>\n" +
+ " <cvNumber>****</cvNumber>\n" +
" <cardType>001</cardType>\n" +
"</card>\n" +
"<subscription>\n" +
@@ -171,7 +171,7 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
@Test(groups = "fast")
public void testLitle() throws Exception {
verify("<litleOnlineRequest merchantId=\\\"merchant_id\\\" version=\\\"8.18\\\" xmlns=\\\"http://www.litle.com/schema\\\"><authentication><user>login</user><password>password</password></authentication><sale id=\\\"615b9cb3-8580-4f57-bf69-9\\\" reportGroup=\\\"Default Report Group\\\"><orderId>615b9cb3-8580-4f57-bf69-9</orderId><amount>10000</amount><orderSource>ecommerce</orderSource><billToAddress><name>John Doe</name><email>1428325948-test@tester.com</email><addressLine1>5, oakriu road</addressLine1><addressLine2>apt. 298</addressLine2><city>Gdio Foia</city><state>FL</state><zip>49302</zip><country>US</country></billToAddress><shipToAddress/><card><type>VI</type><number>4242424242424242</number><expDate>1217</expDate><cardValidationNum>1234</cardValidationNum></card></sale></litleOnlineRequest>",
- "<litleOnlineRequest merchantId=\\\"merchant_id\\\" version=\\\"8.18\\\" xmlns=\\\"http://www.litle.com/schema\\\"><authentication><user>login</user><password>*MASKED*</password></authentication><sale id=\\\"615b9cb3-8580-4f57-bf69-9\\\" reportGroup=\\\"Default Report Group\\\"><orderId>615b9cb3-8580-4f57-bf69-9</orderId><amount>10000</amount><orderSource>ecommerce</orderSource><billToAddress><name>*MASKED*</name><email>**********MASKED**********</email><addressLine1>5, oakriu road</addressLine1><addressLine2>apt. 298</addressLine2><city>Gdio Foia</city><state>FL</state><zip>49302</zip><country>US</country></billToAddress><shipToAddress/><card><type>VI</type><number>*****MASKED*****</number><expDate>1217</expDate><cardValidationNum>MASKED</cardValidationNum></card></sale></litleOnlineRequest>");
+ "<litleOnlineRequest merchantId=\\\"merchant_id\\\" version=\\\"8.18\\\" xmlns=\\\"http://www.litle.com/schema\\\"><authentication><user>login</user><password>********</password></authentication><sale id=\\\"615b9cb3-8580-4f57-bf69-9\\\" reportGroup=\\\"Default Report Group\\\"><orderId>615b9cb3-8580-4f57-bf69-9</orderId><amount>10000</amount><orderSource>ecommerce</orderSource><billToAddress><name>********</name><email>**************************</email><addressLine1>5, oakriu road</addressLine1><addressLine2>apt. 298</addressLine2><city>Gdio Foia</city><state>FL</state><zip>49302</zip><country>US</country></billToAddress><shipToAddress/><card><type>VI</type><number>****************</number><expDate>1217</expDate><cardValidationNum>****</cardValidationNum></card></sale></litleOnlineRequest>");
}
@Test(groups = "fast")
@@ -203,7 +203,7 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
" \"card\": {\n" +
" \"id\": \"card_483etw4er9fg4vF3sQdrt3FG\",\n" +
" \"object\": \"card\",\n" +
- " \"banknumber\": *****MASKED*****,\n" +
+ " \"banknumber\": ****************,\n" +
" \"last4\": \"0000\",\n" +
" \"brand\": \"Visa\",\n" +
" \"funding\": \"credit\",\n" +
@@ -211,7 +211,7 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
" \"exp_year\": 2019,\n" +
" \"fingerprint\": \"HOh74kZU387WlUvy\",\n" +
" \"country\": \"US\",\n" +
- " \"name\": **MASKED***,\n" +
+ " \"name\": ***********,\n" +
" \"address_line1\": null,\n" +
" \"address_line2\": null,\n" +
" \"address_city\": null,\n" +
@@ -244,7 +244,7 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
"</entry>\n",
"<entry>\n" +
" <key xsi:type=\"xsd:string\">PayU.ccvv</key>\n" +
- " <value xsi:type=\"xsd:string\">MASKED</value>\n" +
+ " <value xsi:type=\"xsd:string\">****</value>\n" +
"</entry>\n" +
"<entry>\n" +
" <key xsi:type=\"xsd:string\">PayU.ccnum</key>\n" +
@@ -263,7 +263,7 @@ public class TestPatternObfuscator extends ServerTestSuiteNoDB {
@Test(groups = "fast", description = "Test for ActiveMerchant wiredump_device logging")
public void testWithQuotedNewLines() throws Exception {
verify("[cybersource-plugin] \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><accountNumber>4111111111111111</accountNumber>\\n <expirationMonth>09</expirationMonth>\\n \"",
- "[cybersource-plugin] \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><accountNumber>*****MASKED*****</accountNumber>\\n <expirationMonth>09</expirationMonth>\\n \"");
+ "[cybersource-plugin] \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?><accountNumber>****************</accountNumber>\\n <expirationMonth>09</expirationMonth>\\n \"");
}
@Test(groups = "fast")