From ed3115679a56f7155b6aec661cfd9b39a314d8ce Mon Sep 17 00:00:00 2001 From: Lukas Lechner <lukas.lechner@sap.com> Date: Tue, 1 Jun 2021 15:35:29 +0200 Subject: [PATCH] Risk calculation cannot be restarted after time travel (EXPOSUREAPP-6646) (#3327) * Store Risk Result at current server time in case the device time is incorrect * Fix RiskLevelTaskTest.kt * Fix RiskLevelTaskTest.kt by not using hardcoded instant value Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com> Co-authored-by: Chilja Gossow <49635654+chiljamgossow@users.noreply.github.com> Co-authored-by: AlexanderAlferov <64849422+AlexanderAlferov@users.noreply.github.com> --- .../src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt | 4 +++- .../test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt index 086e96288..8a5d733cb 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt @@ -93,8 +93,10 @@ class RiskLevelTask @Inject constructor( if (!configData.isDeviceTimeCorrect) { Timber.w("Device time is incorrect, offset: %s", configData.localOffset) + val currentServerTime = nowUTC.minus(configData.localOffset) + Timber.d("Calculated current server time: %s", currentServerTime) return EwRiskLevelTaskResult( - calculatedAt = nowUTC, + calculatedAt = currentServerTime, failureReason = FailureReason.INCORRECT_DEVICE_TIME ) } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt index 728fc06a9..3ef494051 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt @@ -137,8 +137,10 @@ class RiskLevelTaskTest : BaseTest() { every { configData.isDeviceTimeCorrect } returns false every { configData.localOffset } returns Duration.standardHours(5) + val serverTime = testTimeNow.minus(configData.localOffset) + createTask().run(arguments) shouldBe EwRiskLevelTaskResult( - calculatedAt = testTimeNow, + calculatedAt = serverTime, failureReason = EwRiskLevelResult.FailureReason.INCORRECT_DEVICE_TIME ) } -- GitLab