Skip to content
This repository was archived by the owner on Jun 20, 2023. It is now read-only.

Commit 5cbec7f

Browse files
Error report censoring (EXPOSUREAPP-14698) (#5833)
* update RapidQrCodeCensor * update RapidQrCodeCensor --------- Co-authored-by: Mohamed <mohamed.metwalli@sap.com>
1 parent f7fe0bc commit 5cbec7f

File tree

3 files changed

+42
-32
lines changed

3 files changed

+42
-32
lines changed

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/censors/submission/RapidQrCodeCensor.kt

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,30 @@ class RapidQrCodeCensor @Inject constructor() : BugCensor {
1616

1717
override suspend fun checkLog(message: String): CensorContainer? {
1818

19-
val dataToCensor = dataToCensor ?: return null
19+
if (dataToCensor.isEmpty()) return null
2020

2121
var newMessage = CensorContainer(message)
2222

23-
with(dataToCensor) {
24-
newMessage = newMessage.censor(rawString, createReplacement(input = "ScannedRawString"))
23+
dataToCensor.forEach { data ->
24+
with(data) {
25+
newMessage = newMessage.censor(rawString, createReplacement(input = "ScannedRawString"))
2526

26-
newMessage = newMessage.censor(hash, PLACEHOLDER + hash.takeLast(4))
27+
newMessage = newMessage.censor(hash, PLACEHOLDER + hash.takeLast(4))
2728

28-
withValidName(firstName) { firstName ->
29-
newMessage = newMessage.censor(firstName, createReplacement(input = "FirstName"))
30-
}
29+
withValidName(firstName) { firstName ->
30+
newMessage = newMessage.censor(firstName, createReplacement(input = "FirstName"))
31+
newMessage = newMessage.censor(firstName.uppercase(), createReplacement(input = "FirstName"))
32+
}
3133

32-
withValidName(lastName) { lastName ->
33-
newMessage = newMessage.censor(lastName, createReplacement(input = "LastName"))
34-
}
34+
withValidName(lastName) { lastName ->
35+
newMessage = newMessage.censor(lastName, createReplacement(input = "LastName"))
36+
newMessage = newMessage.censor(lastName.uppercase(), createReplacement(input = "FirstName"))
37+
}
3538

36-
val dateOfBirthString = dateOfBirth?.format(dayOfBirthFormatter) ?: return@with
39+
val dateOfBirthString = dateOfBirth?.format(dayOfBirthFormatter) ?: return@with
3740

38-
newMessage = newMessage.censor(dateOfBirthString, createReplacement(input = "DateOfBirth"))
41+
newMessage = newMessage.censor(dateOfBirthString, createReplacement(input = "DateOfBirth"))
42+
}
3943
}
4044

4145
return newMessage.nullIfEmpty()
@@ -44,7 +48,7 @@ class RapidQrCodeCensor @Inject constructor() : BugCensor {
4448
private fun createReplacement(input: String): String = "$PLACEHOLDER_TYPE/$input"
4549

4650
companion object {
47-
var dataToCensor: CensorData? = null
51+
val dataToCensor = mutableSetOf<CensorData>()
4852

4953
private const val PLACEHOLDER = "SHA256HASH-ENDING-WITH-"
5054
private const val PLACEHOLDER_TYPE = "RapidTest"

Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/qrcode/rapid/RapidQrCodeExtractor.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ abstract class RapidQrCodeExtractor : QrCodeExtractor<CoronaTestQRCode> {
2525
Timber.tag(loggingTag).v("extract(rawString=%s)", rawString)
2626
val payload = CleanPayload(extractData(rawString))
2727

28-
RapidQrCodeCensor.dataToCensor = RapidQrCodeCensor.CensorData(
29-
rawString = rawString,
30-
hash = payload.hash,
31-
firstName = payload.firstName,
32-
lastName = payload.lastName,
33-
dateOfBirth = payload.dateOfBirth
28+
RapidQrCodeCensor.dataToCensor.add(
29+
RapidQrCodeCensor.CensorData(
30+
rawString = rawString,
31+
hash = payload.hash,
32+
firstName = payload.firstName,
33+
lastName = payload.lastName,
34+
dateOfBirth = payload.dateOfBirth
35+
)
3436
)
3537

3638
payload.requireValidData()

Corona-Warn-App/src/test/java/de/rki/coronawarnapp/bugreporting/censors/RapidQrCodeCensorTest.kt

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,21 @@ internal class RapidQrCodeCensorTest {
2222

2323
@AfterEach
2424
fun teardown() {
25-
RapidQrCodeCensor.dataToCensor = null
25+
RapidQrCodeCensor.dataToCensor.clear()
2626
}
2727

2828
private fun createInstance() = RapidQrCodeCensor()
2929

3030
@Test
3131
fun `checkLog() should return censored LogLine`() = runTest {
32-
RapidQrCodeCensor.dataToCensor = RapidQrCodeCensor.CensorData(
33-
rawString = testRawString,
34-
hash = testHash,
35-
firstName = "Milhouse",
36-
lastName = "Van Houten",
37-
dateOfBirth = LocalDate.parse("1980-07-01")
32+
RapidQrCodeCensor.dataToCensor.add(
33+
RapidQrCodeCensor.CensorData(
34+
rawString = testRawString,
35+
hash = testHash,
36+
firstName = "Milhouse",
37+
lastName = "Van Houten",
38+
dateOfBirth = LocalDate.parse("1980-07-01")
39+
)
3840
)
3941

4042
val censor = createInstance()
@@ -57,12 +59,14 @@ internal class RapidQrCodeCensorTest {
5759

5860
@Test
5961
fun `checkLog() should return null if nothing should be censored`() = runTest {
60-
RapidQrCodeCensor.dataToCensor = RapidQrCodeCensor.CensorData(
61-
rawString = testRawString,
62-
hash = testHash.replace("8", "9"),
63-
firstName = null,
64-
lastName = null,
65-
dateOfBirth = null
62+
RapidQrCodeCensor.dataToCensor.add(
63+
RapidQrCodeCensor.CensorData(
64+
rawString = testRawString,
65+
hash = testHash.replace("8", "9"),
66+
firstName = null,
67+
lastName = null,
68+
dateOfBirth = null
69+
)
6670
)
6771

6872
val censor = createInstance()

0 commit comments

Comments
 (0)