generated from pricelees/issue-pr-template
78 lines
2.7 KiB
Kotlin
78 lines
2.7 KiB
Kotlin
package roomescape.common.log
|
|
|
|
import ch.qos.logback.classic.spi.ILoggingEvent
|
|
import io.kotest.assertions.assertSoftly
|
|
import io.kotest.core.spec.style.FunSpec
|
|
import io.kotest.matchers.equals.shouldBeEqual
|
|
import io.kotest.matchers.string.shouldContain
|
|
import io.mockk.every
|
|
import io.mockk.mockk
|
|
|
|
class RoomescapeLogMaskingConverterTest : FunSpec({
|
|
|
|
val converter = RoomescapeLogMaskingConverter()
|
|
val event: ILoggingEvent = mockk()
|
|
|
|
context("평문 로그에서는 key=value 형식을 처리한다.") {
|
|
|
|
test("2글자 초과이면 맨 앞, 맨 뒤를 제외한 나머지를 가린다.") {
|
|
val email = "a@a.a"
|
|
val password = "password12"
|
|
val accessToken = "accessToken12"
|
|
|
|
every {
|
|
event.formattedMessage
|
|
} returns "email=${email}, password=${password}, accessToken = $accessToken"
|
|
|
|
assertSoftly(converter.convert(event)) {
|
|
this shouldContain "email=${email}"
|
|
this shouldContain "password=${password.first()}****${password.last()}"
|
|
this shouldContain "accessToken = ${accessToken.first()}****${accessToken.last()}"
|
|
}
|
|
|
|
}
|
|
|
|
test("2글자 이하이면 전부 가린다.") {
|
|
val email = "a@a.a"
|
|
val password = "pa"
|
|
val accessToken = "a"
|
|
|
|
every {
|
|
event.formattedMessage
|
|
} returns "email=${email}, password=${password}, accessToken = ${accessToken}"
|
|
|
|
assertSoftly(converter.convert(event)) {
|
|
this shouldContain "email=${email}"
|
|
this shouldContain "password=****"
|
|
this shouldContain "accessToken = ****"
|
|
}
|
|
}
|
|
}
|
|
|
|
context("JSON 형식 로그를 처리한다.") {
|
|
val json = "{\"request_body\":{\"email\":\"a@a.a\",\"password\":\"password12\"}}"
|
|
|
|
test("2글자 초과이면 맨 앞, 맨 뒤를 제외한 나머지를 가린다.") {
|
|
val password = "password12"
|
|
val json = "{\"request_body\":{\"email\":\"a@a.a\",\"password\":\"${password}\"}}"
|
|
|
|
every {
|
|
event.formattedMessage
|
|
} returns json
|
|
|
|
converter.convert(event) shouldBeEqual "{\"request_body\":{\"email\":\"a@a.a\",\"password\":\"${password.first()}****${password.last()}\"}}"
|
|
}
|
|
|
|
test("2글자 이하이면 전부 가린다.") {
|
|
val password = "pa"
|
|
val json = "{\"request_body\":{\"email\":\"a@a.a\",\"password\":\"${password}\"}}"
|
|
|
|
every {
|
|
event.formattedMessage
|
|
} returns json
|
|
|
|
converter.convert(event) shouldBeEqual "{\"request_body\":{\"email\":\"a@a.a\",\"password\":\"****\"}}"
|
|
}
|
|
}
|
|
})
|