Last active
May 26, 2021 20:17
-
-
Save CharlesLuxinger/56d27b41635b122e97c2e2b49e335f6e to your computer and use it in GitHub Desktop.
Anonymizing json logs Sring Boot - Logback
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<configuration> | |
<contextName>api-context</contextName> | |
<!-- Default logs on dev and test environments --> | |
<springProfile name="dev,test,local,default"> | |
<include resource="org/springframework/boot/logging/logback/base.xml"/> | |
</springProfile> | |
<!-- Logs in JSON format on homolog and prod environments --> | |
<springProfile name="homolog,prod,production"> | |
<!-- Append logs to standard output --> | |
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> | |
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> | |
<jsonGeneratorDecorator class="net.logstash.logback.mask.MaskingJsonGeneratorDecorator"> | |
<valueMasker class="com.gist.github.charlesluxinger.port.config.ScrubbingSensitiveDataMasker"/> | |
</jsonGeneratorDecorator> | |
<providers> | |
<contextName> | |
<fieldName>app</fieldName> | |
</contextName> | |
<timestamp> | |
<fieldName>ts</fieldName> | |
<timeZone>UTC</timeZone> | |
</timestamp> | |
<logLevel> | |
<fieldName>level</fieldName> | |
</logLevel> | |
<loggerName> | |
<fieldName>logger</fieldName> | |
</loggerName> | |
<callerData> | |
<classFieldName>class</classFieldName> | |
<methodFieldName>method</methodFieldName> | |
<lineFieldName>line</lineFieldName> | |
<fileFieldName>file</fileFieldName> | |
</callerData> | |
<threadName> | |
<fieldName>thread</fieldName> | |
</threadName> | |
<mdc/> | |
<arguments> | |
<includeNonStructuredArguments>false</includeNonStructuredArguments> | |
</arguments> | |
<stackTrace> | |
<fieldName>stack</fieldName> | |
</stackTrace> | |
<message> | |
<fieldName>msg</fieldName> | |
</message> | |
</providers> | |
</encoder> | |
</appender> | |
<root level="INFO"> | |
<appender-ref ref="CONSOLE"/> | |
</root> | |
</springProfile> | |
</configuration> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.gist.github.charlesluxinger.port.config | |
import br.com.soudonus.credit.port.config.Patterns.Companion.scrubbingSensitiveData | |
import com.fasterxml.jackson.core.JsonStreamContext | |
import java.util.regex.Pattern | |
import java.util.stream.Collectors | |
import net.logstash.logback.mask.ValueMasker | |
class ScrubbingSensitiveDataMasker : ValueMasker { | |
private var multilinePattern: Pattern | |
private val maskPatterns = mutableListOf<String>() | |
init { | |
Patterns | |
.values() | |
.forEach { | |
maskPatterns.add(it.regex) | |
} | |
multilinePattern = Pattern.compile( | |
maskPatterns.stream().collect(Collectors.joining("|")), | |
Pattern.MULTILINE | |
) | |
} | |
companion object { | |
private const val LOG_MESSAGE_PARAMETER_NAME = "msg" | |
} | |
override fun mask(context: JsonStreamContext, value: Any): Any { | |
if (context.currentName == LOG_MESSAGE_PARAMETER_NAME && value is String) { | |
return mask(value) | |
} | |
return value | |
} | |
fun mask(message: String): String { | |
val sb = StringBuilder(message) | |
val matcher = multilinePattern.matcher(sb) | |
while (matcher.find()) { | |
sb.replace( | |
matcher.start(), | |
matcher.end(), | |
scrubbingSensitiveData(matcher.group()) | |
) | |
} | |
return sb.toString() | |
} | |
} | |
enum class Patterns(private val parameterName: String, private val maskIndex: Int, val regex: String) { | |
DOCUMENT("document", 13, "(\\s?|\")document\"?[=:]\"?[0-9]*"), | |
TAX_ID("taxId", 10, "(\\s?|\")taxId\"?[=:]\"?[0-9]*"), | |
PHONE_NUMBER("phone_number", 17, "(\\s?|\")phone_number\"?[=:]\"?[0-9]*"), | |
ADDRESS("address", 14, "(\\s?|\")address\"?[=:]\"?([A-Z0-9a-z]*\\s*)*"), | |
NAME("name", 12, "(\\s?|\")name\"?[=:]\"?([A-Z0-9a-z]*\\s*)*"), | |
EMAIL( | |
"email", 13, | |
"(\\s?|\")email\"?[=:]\"?(?:(?:\\r\\n)?[ \\t])*(?:(?:(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+" + | |
"(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:" + | |
"(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\"" + | |
".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^" + | |
"\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t])*" + | |
"(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:" + | |
"\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ " + | |
"\\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;" + | |
":\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*|(?:[^()<>@,;:" + | |
"\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(" + | |
"?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)*\\<(?:(?:\\r\\n)?[ \\t" + | |
"])*(?:@(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:" + | |
"\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ " + | |
"\\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:" + | |
"\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*(?:,@(?:(?:\\r\\n)?[ " + | |
"\\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:" + | |
"\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t" + | |
"])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\"" + | |
".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*)*:(?:(?:\\r\\n)?[ \\t])*)?(?" + | |
":[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[" + | |
"\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r" + | |
"\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>" + | |
"@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*))" + | |
"*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=" + | |
"[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:" + | |
"\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()" + | |
"<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*\\>(?:(?:\\r\\n)?[" + | |
" \\t])*)|(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:" + | |
"\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)*:(?:(" + | |
"?:\\r\\n)?[ \\t])*(?:(?:(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[" + | |
"\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ " + | |
"\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t]" + | |
")+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:" + | |
"\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)" + | |
"?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t]" + | |
")*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|" + | |
"\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*|(?:" + | |
"[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]" + | |
"))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)*\\<(?:(?:\\r\\n)?[ " + | |
"\\t])*(?:@(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:" + | |
"\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])" + | |
"*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\" + | |
"[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*(?:,@(?:(?:\\r\\n)?[ \\t])*(?:[^(" + | |
")<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|" + | |
"\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:" + | |
"\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^" + | |
"\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*)*:(?:(?:\\r\\n)?[ \\t])*)?(?:[^()<>@,;:\\\\\"." + | |
"\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r" + | |
"\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>" + | |
"@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"" + | |
"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t])*(" + | |
"?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]" + | |
"]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;" + | |
":\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^" + | |
"\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*\\>(?:(?:\\r\\n)?[ \\t])*)(?:,\\s*(?:(?:[^()<>@," + | |
";:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:" + | |
"[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?" + | |
":[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]" + | |
"))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t" + | |
"])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\"." + | |
"\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()" + | |
"<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|" + | |
"\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*|(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+" + | |
"(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:" + | |
"\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)*\\<(?:(?:\\r\\n)?[ \\t])*(?:@(?:[^()<>@,;:\\\\\".\\[\\]" + | |
" \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]" + | |
"|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-" + | |
"\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\." + | |
")*\\](?:(?:\\r\\n)?[ \\t])*))*(?:,@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(" + | |
"?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?" + | |
":\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r" + | |
"\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[" + | |
" \\t])*))*)*:(?:(?:\\r\\n)?[ \\t])*)?(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\" + | |
"t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(" + | |
"?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\" + | |
"r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]" + | |
"))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:" + | |
"(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\" + | |
"n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?" + | |
"[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])" + | |
"*))*\\>(?:(?:\\r\\n)?[ \\t])*))*)?;\\s*)" | |
); | |
companion object { | |
private const val ESCAPE_DOUBLE_QUOTES = 2 | |
private const val DOUBLE_QUOTES_ACSII_CODE = 34 | |
fun scrubbingSensitiveData(data: String): String { | |
return values() | |
.find { data.contains(it.parameterName) } | |
?.run { | |
val sb = StringBuilder() | |
data.forEachIndexed { i, c -> | |
if (c.toInt() == DOUBLE_QUOTES_ACSII_CODE || this.startIndexMask(data) > i) | |
sb.append(c) | |
else | |
sb.append("*") | |
} | |
sb.toString() | |
} ?: data | |
} | |
} | |
private fun startIndexMask(data: String): Int { | |
return if (data.contains("\"")) this.maskIndex + ESCAPE_DOUBLE_QUOTES else this.maskIndex | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package br.com.soudonus.credit.port.config | |
import org.junit.jupiter.api.Assertions.assertEquals | |
import org.junit.jupiter.api.Test | |
internal class ScrubbingSensitiveDataMaskerTest { | |
private val masker = ScrubbingSensitiveDataMasker() | |
@Test | |
fun whenDocumentParameterIsObjectToStringLogShouldScrubbingAfterFirst3Char() { | |
assertEquals(", document=123*,", masker.mask(", document=1234,")) | |
} | |
@Test | |
fun whenDocumentParameterIsObjectToJsonLogShouldScrubbingAfterFirst3Char() { | |
assertEquals(",\"document\":\"123*\",", masker.mask(",\"document\":\"1234\",")) | |
} | |
@Test | |
fun whenTaxIdParameterIsObjectToStringLogShouldScrubbingAfterFirst3Char() { | |
assertEquals(", taxId=123*,", masker.mask(", taxId=1234,")) | |
} | |
@Test | |
fun whenTaxIdParameterIsObjectToJsonLogShouldScrubbingAfterFirst3Char() { | |
assertEquals(",\"taxId\":\"123*\",", masker.mask(",\"taxId\":\"1234\",")) | |
} | |
@Test | |
fun whenPhoneNumberParameterIsObjectToStringLogShouldScrubbingAfterFirst3Char() { | |
assertEquals(", phone_number=123*,", masker.mask(", phone_number=1234,")) | |
} | |
@Test | |
fun whenPhoneNumberParameterIsObjectToJsonLogShouldScrubbingAfterFirst3Char() { | |
assertEquals(",\"phone_number\":\"123*\",", masker.mask(",\"phone_number\":\"1234\",")) | |
} | |
@Test | |
fun whenNameParameterShouldIsObjectToStringLogScrubbingAfterFirst5Char() { | |
assertEquals(", name=Charle**********,", masker.mask(", name=Charles Luxinger,")) | |
} | |
@Test | |
fun whenNameParameterShouldIsObjectToJsonLogScrubbingAfterFirst5Char() { | |
assertEquals(",\"name\":\"Charle**********\",", masker.mask(",\"name\":\"Charles Luxinger\",")) | |
} | |
@Test | |
fun whenAddressParameterIsObjectToStringLogShouldScrubbingAfterFirst5Char() { | |
assertEquals(", address=Rua R**,", masker.mask(", address=Rua Rua,")) | |
} | |
@Test | |
fun whenAddressParameterIsObjectToJsonLogShouldScrubbingAfterFirst5Char() { | |
assertEquals(",\"address\":\"Rua R**\",", masker.mask(",\"address\":\"Rua Rua\",")) | |
} | |
@Test | |
fun whenEmailParameterIsObjectToStringLogShouldScrubbingAfterFirst5Char() { | |
assertEquals(", email=email@*********,", masker.mask(", [email protected],")) | |
} | |
@Test | |
fun whenEmailParameterIsObjectToJsonLogShouldScrubbingAfterFirst5Char() { | |
assertEquals(",\"email\":\"email@*********\",", masker.mask(",\"email\":\"[email protected]\",")) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment