diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/util/SecurePatterns.kt b/src/main/kotlin/com/ecwid/apiclient/v3/util/SecurePatterns.kt index fb4df914..4df54a07 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/util/SecurePatterns.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/util/SecurePatterns.kt @@ -18,7 +18,9 @@ private val GLOBAL_SECURE_PATTERNS = listOf( createKeyValueSecurePattern("postalCode"), createKeyValueSecurePattern("stateOrProvinceCode"), createKeyValueSecurePattern("phone"), - createKeyValueSecurePattern("name"), + createKeyValueSecurePattern("BillingPerson\\([^)]*name"), + createKeyValueSecurePattern("PersonInfo\\([^)]*name"), + createKeyValueSecurePattern("ShippingAddress\\([^)]*name"), createKeyValueSecurePattern("contact"), createKeyValueSecurePattern("note"), createJsonSecurePattern("email"), diff --git a/src/test/kotlin/com/ecwid/apiclient/v3/MaskUtilsUnitTest.kt b/src/test/kotlin/com/ecwid/apiclient/v3/MaskUtilsUnitTest.kt index a5b6c906..9326fc25 100644 --- a/src/test/kotlin/com/ecwid/apiclient/v3/MaskUtilsUnitTest.kt +++ b/src/test/kotlin/com/ecwid/apiclient/v3/MaskUtilsUnitTest.kt @@ -1,6 +1,7 @@ package com.ecwid.apiclient.v3 -import com.ecwid.apiclient.v3.util.SecurePattern + +import com.ecwid.apiclient.v3.util.createSecurePatterns import com.ecwid.apiclient.v3.util.maskLogString import com.ecwid.apiclient.v3.util.maskSensitive import org.junit.jupiter.api.Assertions.assertEquals @@ -11,15 +12,11 @@ class MaskUtilsUnitTest { @Test fun testMaskLogKeyValueString() { val logString = - "token=secret_RandomToken0jwOrgYc5sSKBYcvO0DbP; PasswordCredentials(email=test@example.com, password=123456)" - val securePatterns = listOf( - SecurePattern(Regex("token=(?:secret_|public_|)([^;,)]+)"), 6), - SecurePattern(Regex("email=([^;,)]+)"), 4), - SecurePattern(Regex("password=([^;,)]+)"), 2), - ) + "token=secret_RandomToken0jwOrgYc5sSKBYcvO0DbP; PasswordCredentials(email=test@example.com, password=1234567890)" + val securePatterns = createSecurePatterns() val maskedLogString = logString.maskLogString(securePatterns) - val expectedMaskedLogString = "token=secret_Ran***DbP; PasswordCredentials(email=te***om, password=1***6)" + val expectedMaskedLogString = "token=sec***DbP; PasswordCredentials(email=tes***com, password=12***890)" assertEquals(expectedMaskedLogString, maskedLogString) } @@ -27,12 +24,7 @@ class MaskUtilsUnitTest { fun testMaskLogJsonString() { val logString = """{"billingPerson":{"email":"alexis@ecwid.com","firstName":"John","lastName":"Smith","phone":"123467890"}}""" - val securePatterns = listOf( - SecurePattern(Regex(""""email":\s*"([^"]*)""""), 6), - SecurePattern(Regex(""""firstName":\s*"([^"]*)""""), 6), - SecurePattern(Regex(""""lastName":\s*"([^"]*)""""), 6), - SecurePattern(Regex(""""phone":\s*"([^"]*)""""), 6), - ) + val securePatterns = createSecurePatterns() val maskedLogString = logString.maskLogString(securePatterns) val expectedMaskedLogString = @@ -40,6 +32,29 @@ class MaskUtilsUnitTest { assertEquals(expectedMaskedLogString, maskedLogString) } + @Test + fun testMaskLogKeyValueStringWithNameParameter() { + val logString = + "UpdatedProduct(name={unmasked}, " + + "attributes=[AttributeValue(name={unmasked})], " + + "options=[RadioOption(name={unmasked})], " + + "billingPerson=BillingPerson(name={unmasked}), " + + "shippingAddresses=[ShippingAddress(name={unmasked}), " + + "ShippingAddress(name={unmasked})], " + + "personInfo=PersonInfo(name={unmasked}))" + val securePatterns = createSecurePatterns() + val maskedLogString = logString.maskLogString(securePatterns) + val expectedMaskedLogString = + "UpdatedProduct(name={unmasked}, " + + "attributes=[AttributeValue(name={unmasked})], " + + "options=[RadioOption(name={unmasked})], " + + "billingPerson=BillingPerson(name={u***ed}), " + + "shippingAddresses=[ShippingAddress(name={u***ed}), " + + "ShippingAddress(name={u***ed})], " + + "personInfo=PersonInfo(name={u***ed}))" + assertEquals(expectedMaskedLogString, maskedLogString) + } + @Test fun testMaskSensitive() { assertEquals("te***ng", "test string".maskSensitive(4))