From 289276b0b9713faabf9768622843c5f056780a03 Mon Sep 17 00:00:00 2001 From: Chilja Gossow <49635654+chiljamgossow@users.noreply.github.com> Date: Fri, 23 Apr 2021 12:31:18 +0200 Subject: [PATCH] Add flag to key submission (EXPOSUREAPP-6037) (#2925) * add submission type * fix test Co-authored-by: Juraj Kusnier <jurajkusnier@users.noreply.github.com> --- .../coronawarnapp/playbook/DefaultPlaybook.kt | 3 ++- .../de/rki/coronawarnapp/playbook/Playbook.kt | 4 +++- .../submission/server/SubmissionServer.kt | 4 +++- .../submission/task/SubmissionTask.kt | 9 ++++++++- .../http/playbook/DefaultPlaybookTest.kt | 16 +++++++++++----- .../submission/server/SubmissionServerTest.kt | 10 +++++++--- .../submission/task/SubmissionTaskTest.kt | 11 ++++++++--- 7 files changed, 42 insertions(+), 15 deletions(-) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/playbook/DefaultPlaybook.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/playbook/DefaultPlaybook.kt index a678e0686..a8e4a0367 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/playbook/DefaultPlaybook.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/playbook/DefaultPlaybook.kt @@ -101,7 +101,8 @@ class DefaultPlaybook @Inject constructor( keyList = data.temporaryExposureKeys, consentToFederation = data.consentToFederation, visitedCountries = data.visitedCountries, - checkIns = data.checkIns + checkIns = data.checkIns, + submissionType = data.submissionType ) submissionServer.submitPayload(serverSubmissionData) coroutineScope.launch { followUpPlaybooks() } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/playbook/Playbook.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/playbook/Playbook.kt index b46a6dda6..6c62d63bd 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/playbook/Playbook.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/playbook/Playbook.kt @@ -3,6 +3,7 @@ package de.rki.coronawarnapp.playbook import de.rki.coronawarnapp.coronatest.server.CoronaTestResult import de.rki.coronawarnapp.coronatest.server.VerificationKeyType import de.rki.coronawarnapp.server.protocols.external.exposurenotification.TemporaryExposureKeyExportOuterClass +import de.rki.coronawarnapp.server.protocols.internal.SubmissionPayloadOuterClass.SubmissionPayload import de.rki.coronawarnapp.server.protocols.internal.pt.CheckInOuterClass /** @@ -38,6 +39,7 @@ interface Playbook { val temporaryExposureKeys: List<TemporaryExposureKeyExportOuterClass.TemporaryExposureKey>, val consentToFederation: Boolean, val visitedCountries: List<String>, - val checkIns: List<CheckInOuterClass.CheckIn> + val checkIns: List<CheckInOuterClass.CheckIn>, + val submissionType: SubmissionPayload.SubmissionType ) } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/server/SubmissionServer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/server/SubmissionServer.kt index 7cebbdf7c..659420754 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/server/SubmissionServer.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/server/SubmissionServer.kt @@ -30,7 +30,8 @@ class SubmissionServer @Inject constructor( val keyList: List<TemporaryExposureKey>, val consentToFederation: Boolean, val visitedCountries: List<String>, - val checkIns: List<CheckInOuterClass.CheckIn> + val checkIns: List<CheckInOuterClass.CheckIn>, + val submissionType: SubmissionPayload.SubmissionType ) suspend fun submitPayload( @@ -69,6 +70,7 @@ class SubmissionServer @Inject constructor( .setConsentToFederation(data.consentToFederation) .addAllVisitedCountries(data.visitedCountries) .addAllCheckIns(data.checkIns) + .setSubmissionType(data.submissionType) .build() api.submitPayload( diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt index 85f176783..d95c9e4ad 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt @@ -12,6 +12,7 @@ import de.rki.coronawarnapp.playbook.Playbook import de.rki.coronawarnapp.presencetracing.checkins.CheckInRepository import de.rki.coronawarnapp.presencetracing.checkins.CheckInsTransformer import de.rki.coronawarnapp.presencetracing.checkins.common.completedCheckIns +import de.rki.coronawarnapp.server.protocols.internal.SubmissionPayloadOuterClass.SubmissionPayload.SubmissionType import de.rki.coronawarnapp.submission.SubmissionSettings import de.rki.coronawarnapp.submission.Symptoms import de.rki.coronawarnapp.submission.auto.AutoSubmission @@ -162,7 +163,8 @@ class SubmissionTask @Inject constructor( temporaryExposureKeys = transformedKeys, consentToFederation = true, visitedCountries = getSupportedCountries(), - checkIns = transformedCheckIns + checkIns = transformedCheckIns, + submissionType = coronaTest.type.toSubmissionType() ) checkCancel() @@ -260,3 +262,8 @@ class SubmissionTask @Inject constructor( private const val TAG: String = "SubmissionTask" } } + +private fun CoronaTest.Type.toSubmissionType() = when (this) { + CoronaTest.Type.PCR -> SubmissionType.SUBMISSION_TYPE_PCR_TEST + CoronaTest.Type.RAPID_ANTIGEN -> SubmissionType.SUBMISSION_TYPE_RAPID_TEST +} diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/http/playbook/DefaultPlaybookTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/http/playbook/DefaultPlaybookTest.kt index cdd16544d..a53afe27f 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/http/playbook/DefaultPlaybookTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/http/playbook/DefaultPlaybookTest.kt @@ -7,6 +7,7 @@ import de.rki.coronawarnapp.exception.TanPairingException import de.rki.coronawarnapp.exception.http.BadRequestException import de.rki.coronawarnapp.playbook.DefaultPlaybook import de.rki.coronawarnapp.playbook.Playbook +import de.rki.coronawarnapp.server.protocols.internal.SubmissionPayloadOuterClass.SubmissionPayload.SubmissionType import de.rki.coronawarnapp.submission.server.SubmissionServer import io.kotest.assertions.throwables.shouldThrow import io.kotest.matchers.shouldBe @@ -87,7 +88,8 @@ class DefaultPlaybookTest : BaseTest() { temporaryExposureKeys = listOf(), consentToFederation = true, visitedCountries = listOf("DE"), - checkIns = emptyList() + checkIns = emptyList(), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) ) @@ -109,7 +111,8 @@ class DefaultPlaybookTest : BaseTest() { temporaryExposureKeys = listOf(), consentToFederation = true, visitedCountries = listOf("DE"), - checkIns = emptyList() + checkIns = emptyList(), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) ) } catch (e: Exception) { @@ -129,7 +132,8 @@ class DefaultPlaybookTest : BaseTest() { temporaryExposureKeys = listOf(), consentToFederation = true, visitedCountries = listOf("DE"), - checkIns = emptyList() + checkIns = emptyList(), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) ) } catch (e: Exception) { @@ -150,7 +154,8 @@ class DefaultPlaybookTest : BaseTest() { temporaryExposureKeys = listOf(), consentToFederation = true, visitedCountries = listOf("DE"), - checkIns = emptyList() + checkIns = emptyList(), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) ) } @@ -263,7 +268,8 @@ class DefaultPlaybookTest : BaseTest() { temporaryExposureKeys = listOf(), consentToFederation = true, visitedCountries = listOf("DE"), - checkIns = emptyList() + checkIns = emptyList(), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) ) } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/server/SubmissionServerTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/server/SubmissionServerTest.kt index d20cb37ba..c2a1da142 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/server/SubmissionServerTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/server/SubmissionServerTest.kt @@ -9,6 +9,7 @@ import de.rki.coronawarnapp.appconfig.PresenceTracingConfigContainer import de.rki.coronawarnapp.http.HttpModule import de.rki.coronawarnapp.server.protocols.external.exposurenotification.TemporaryExposureKeyExportOuterClass import de.rki.coronawarnapp.server.protocols.internal.SubmissionPayloadOuterClass +import de.rki.coronawarnapp.server.protocols.internal.SubmissionPayloadOuterClass.SubmissionPayload.SubmissionType import de.rki.coronawarnapp.server.protocols.internal.pt.CheckInOuterClass import de.rki.coronawarnapp.server.protocols.internal.v2.PresenceTracingParametersOuterClass.PresenceTracingPlausibleDeniabilityParameters.NumberOfFakeCheckInsFunctionParameters import de.rki.coronawarnapp.server.protocols.internal.v2.RiskCalculationParametersOuterClass @@ -105,7 +106,8 @@ class SubmissionServerTest : BaseTest() { keyList = listOf(googleKeyList), consentToFederation = true, visitedCountries = listOf("DE"), - checkIns = listOf(checkIn) + checkIns = listOf(checkIn), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) server.submitPayload(submissionData) @@ -174,7 +176,8 @@ class SubmissionServerTest : BaseTest() { keyList = listOf(googleKeyList), consentToFederation = true, visitedCountries = listOf("DE"), - checkIns = listOf(checkIn) + checkIns = listOf(checkIn), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) server.submitPayload(submissionData) @@ -236,7 +239,8 @@ class SubmissionServerTest : BaseTest() { keyList = listOf(googleKeyList), consentToFederation = true, visitedCountries = listOf("DE"), - checkIns = emptyList() + checkIns = emptyList(), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) webServer.enqueue(MockResponse().setBody("{}")) server.submitPayload(submissionData) diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/SubmissionTaskTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/SubmissionTaskTest.kt index db488d6ba..81300aaa5 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/SubmissionTaskTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/SubmissionTaskTest.kt @@ -13,6 +13,7 @@ import de.rki.coronawarnapp.presencetracing.checkins.CheckIn import de.rki.coronawarnapp.presencetracing.checkins.CheckInRepository import de.rki.coronawarnapp.presencetracing.checkins.CheckInsTransformer import de.rki.coronawarnapp.server.protocols.external.exposurenotification.TemporaryExposureKeyExportOuterClass +import de.rki.coronawarnapp.server.protocols.internal.SubmissionPayloadOuterClass.SubmissionPayload.SubmissionType import de.rki.coronawarnapp.submission.SubmissionSettings import de.rki.coronawarnapp.submission.Symptoms import de.rki.coronawarnapp.submission.auto.AutoSubmission @@ -83,6 +84,7 @@ class SubmissionTaskTest : BaseTest() { every { isSubmitted } returns false every { registrationToken } returns "regtoken" every { identifier } returns "coronatest-identifier" + every { type } returns CoronaTest.Type.PCR } ) ) @@ -216,7 +218,8 @@ class SubmissionTaskTest : BaseTest() { temporaryExposureKeys = listOf(transformedKey), consentToFederation = true, visitedCountries = listOf("NL"), - checkIns = emptyList() + checkIns = emptyList(), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) ) @@ -283,7 +286,8 @@ class SubmissionTaskTest : BaseTest() { temporaryExposureKeys = listOf(transformedKey), consentToFederation = true, visitedCountries = listOf("NL"), - checkIns = emptyList() + checkIns = emptyList(), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) ) } @@ -327,7 +331,8 @@ class SubmissionTaskTest : BaseTest() { temporaryExposureKeys = listOf(transformedKey), consentToFederation = true, visitedCountries = listOf("DE"), - checkIns = emptyList() + checkIns = emptyList(), + submissionType = SubmissionType.SUBMISSION_TYPE_PCR_TEST ) ) } -- GitLab