Skip to content

Commit 8ff0a40

Browse files
Merge pull request #525 from Ecwid/ECWID-172338
ECWID-172338 Option and attribute names are masked in logs
2 parents 896b2a6 + 1282f37 commit 8ff0a40

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

src/main/kotlin/com/ecwid/apiclient/v3/util/SecurePatterns.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ private val GLOBAL_SECURE_PATTERNS = listOf(
1818
createKeyValueSecurePattern("postalCode"),
1919
createKeyValueSecurePattern("stateOrProvinceCode"),
2020
createKeyValueSecurePattern("phone"),
21-
createKeyValueSecurePattern("name"),
21+
createKeyValueSecurePattern("BillingPerson\\([^)]*name"),
22+
createKeyValueSecurePattern("PersonInfo\\([^)]*name"),
23+
createKeyValueSecurePattern("ShippingAddress\\([^)]*name"),
2224
createKeyValueSecurePattern("contact"),
2325
createKeyValueSecurePattern("note"),
2426
createJsonSecurePattern("email"),

src/test/kotlin/com/ecwid/apiclient/v3/MaskUtilsUnitTest.kt

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.ecwid.apiclient.v3
22

3-
import com.ecwid.apiclient.v3.util.SecurePattern
3+
4+
import com.ecwid.apiclient.v3.util.createSecurePatterns
45
import com.ecwid.apiclient.v3.util.maskLogString
56
import com.ecwid.apiclient.v3.util.maskSensitive
67
import org.junit.jupiter.api.Assertions.assertEquals
@@ -11,35 +12,49 @@ class MaskUtilsUnitTest {
1112
@Test
1213
fun testMaskLogKeyValueString() {
1314
val logString =
14-
"token=secret_RandomToken0jwOrgYc5sSKBYcvO0DbP; PasswordCredentials([email protected], password=123456)"
15-
val securePatterns = listOf(
16-
SecurePattern(Regex("token=(?:secret_|public_|)([^;,)]+)"), 6),
17-
SecurePattern(Regex("email=([^;,)]+)"), 4),
18-
SecurePattern(Regex("password=([^;,)]+)"), 2),
19-
)
15+
"token=secret_RandomToken0jwOrgYc5sSKBYcvO0DbP; PasswordCredentials([email protected], password=1234567890)"
16+
val securePatterns = createSecurePatterns()
2017

2118
val maskedLogString = logString.maskLogString(securePatterns)
22-
val expectedMaskedLogString = "token=secret_Ran***DbP; PasswordCredentials(email=te***om, password=1***6)"
19+
val expectedMaskedLogString = "token=sec***DbP; PasswordCredentials(email=tes***com, password=12***890)"
2320
assertEquals(expectedMaskedLogString, maskedLogString)
2421
}
2522

2623
@Test
2724
fun testMaskLogJsonString() {
2825
val logString =
2926
"""{"billingPerson":{"email":"[email protected]","firstName":"John","lastName":"Smith","phone":"123467890"}}"""
30-
val securePatterns = listOf(
31-
SecurePattern(Regex(""""email":\s*"([^"]*)""""), 6),
32-
SecurePattern(Regex(""""firstName":\s*"([^"]*)""""), 6),
33-
SecurePattern(Regex(""""lastName":\s*"([^"]*)""""), 6),
34-
SecurePattern(Regex(""""phone":\s*"([^"]*)""""), 6),
35-
)
27+
val securePatterns = createSecurePatterns()
3628

3729
val maskedLogString = logString.maskLogString(securePatterns)
3830
val expectedMaskedLogString =
3931
"""{"billingPerson":{"email":"ale***com","firstName":"***","lastName":"***","phone":"***"}}"""
4032
assertEquals(expectedMaskedLogString, maskedLogString)
4133
}
4234

35+
@Test
36+
fun testMaskLogKeyValueStringWithNameParameter() {
37+
val logString =
38+
"UpdatedProduct(name={unmasked}, " +
39+
"attributes=[AttributeValue(name={unmasked})], " +
40+
"options=[RadioOption(name={unmasked})], " +
41+
"billingPerson=BillingPerson(name={unmasked}), " +
42+
"shippingAddresses=[ShippingAddress(name={unmasked}), " +
43+
"ShippingAddress(name={unmasked})], " +
44+
"personInfo=PersonInfo(name={unmasked}))"
45+
val securePatterns = createSecurePatterns()
46+
val maskedLogString = logString.maskLogString(securePatterns)
47+
val expectedMaskedLogString =
48+
"UpdatedProduct(name={unmasked}, " +
49+
"attributes=[AttributeValue(name={unmasked})], " +
50+
"options=[RadioOption(name={unmasked})], " +
51+
"billingPerson=BillingPerson(name={u***ed}), " +
52+
"shippingAddresses=[ShippingAddress(name={u***ed}), " +
53+
"ShippingAddress(name={u***ed})], " +
54+
"personInfo=PersonInfo(name={u***ed}))"
55+
assertEquals(expectedMaskedLogString, maskedLogString)
56+
}
57+
4358
@Test
4459
fun testMaskSensitive() {
4560
assertEquals("te***ng", "test string".maskSensitive(4))

0 commit comments

Comments
 (0)