From 2b828505135f64ad07b7525da2cb627a54fcaa6c Mon Sep 17 00:00:00 2001 From: Juraj Kusnier <jurajkusnier@users.noreply.github.com> Date: Mon, 22 Feb 2021 17:34:35 +0100 Subject: [PATCH] Exposure Checks are continued in End-of-Life State (EXPOSUREAPP-5298) #2435 * Add check for positive test in DownloadDiagnosisKeysTask * Update DownloadDiagnosisKeysTaskTest * Suppress detekt rule Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com> --- .../download/DownloadDiagnosisKeysTask.kt | 7 +++++++ .../download/DownloadDiagnosisKeysTaskTest.kt | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTask.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTask.kt index db52d23dc..b545c807e 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTask.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTask.kt @@ -8,6 +8,7 @@ import de.rki.coronawarnapp.environment.EnvironmentSetup import de.rki.coronawarnapp.nearby.ENFClient import de.rki.coronawarnapp.nearby.modules.detectiontracker.TrackedExposureDetection import de.rki.coronawarnapp.risk.RollbackItem +import de.rki.coronawarnapp.storage.LocalData import de.rki.coronawarnapp.task.Task import de.rki.coronawarnapp.task.TaskCancellationException import de.rki.coronawarnapp.task.TaskFactory @@ -25,6 +26,7 @@ import java.util.Date import javax.inject.Inject import javax.inject.Provider +@Suppress("ReturnCount") class DownloadDiagnosisKeysTask @Inject constructor( private val enfClient: ENFClient, private val environmentSetup: EnvironmentSetup, @@ -111,6 +113,11 @@ class DownloadDiagnosisKeysTask @Inject constructor( // remember version code of this execution for next time settings.updateLastVersionCodeToCurrent() + if (LocalData.isAllowedToSubmitDiagnosisKeys()) { + Timber.tag(TAG).i("task aborted, positive test result") + return object : Task.Result {} + } + Timber.tag(TAG).d("Attempting submission to ENF") val isSubmissionSuccessful = enfClient.provideDiagnosisKeys( availableKeyFiles, diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTaskTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTaskTest.kt index c22593689..df2e2ce3d 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTaskTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/diagnosiskeys/download/DownloadDiagnosisKeysTaskTest.kt @@ -8,6 +8,7 @@ import de.rki.coronawarnapp.environment.BuildConfigWrap import de.rki.coronawarnapp.environment.EnvironmentSetup import de.rki.coronawarnapp.nearby.ENFClient import de.rki.coronawarnapp.nearby.modules.detectiontracker.TrackedExposureDetection +import de.rki.coronawarnapp.storage.LocalData import de.rki.coronawarnapp.util.TimeStamper import io.mockk.MockKAnnotations import io.mockk.Runs @@ -54,6 +55,8 @@ class DownloadDiagnosisKeysTaskTest : BaseTest() { mockkObject(BuildConfigWrap) every { BuildConfigWrap.VERSION_CODE } returns 1080005 + mockkObject(LocalData) + every { LocalData.isAllowedToSubmitDiagnosisKeys() } returns false availableKey1.apply { every { path } returns File("availableKey1") @@ -230,4 +233,20 @@ class DownloadDiagnosisKeysTaskTest : BaseTest() { enfClient.provideDiagnosisKeys(any(), any()) } } + + @Test + fun `we do not submit keys if user got positive test results`() = runBlockingTest { + every { LocalData.isAllowedToSubmitDiagnosisKeys() } returns true + + createInstance().run(DownloadDiagnosisKeysTask.Arguments()) + + coVerifySequence { + enfClient.isTracingEnabled + enfClient.latestTrackedExposureDetection() + } + + coVerify(exactly = 0) { + enfClient.provideDiagnosisKeys(any(), any()) + } + } } -- GitLab