From 5862b6a8bf2a094575f93930cc37101f0df08e8d Mon Sep 17 00:00:00 2001 From: Mohamed <mohamed.metwalli@sap.com> Date: Tue, 16 Mar 2021 11:18:35 +0100 Subject: [PATCH] Presence tracing app config (DEV) (#2611) * Map presence tracing configuration parameters * Give priority to config values * Use presence tracing config in QR Code creation * lint * Fix tests Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com> --- .../qrcode/DefaultQRCodeVerifierTest.kt | 2 - .../ui/qrcode/QrCodeCreationTestViewModel.kt | 14 ++- .../appconfig/AppConfigModule.kt | 5 + .../appconfig/PresenceTracingConfig.kt | 13 +++ .../PresenceTracingConfigContainer.kt | 10 ++ ...nceTracingRiskCalculationParamContainer.kt | 10 ++ ...PresenceTracingSubmissionParamContainer.kt | 12 +++ .../appconfig/mapping/ConfigMapping.kt | 5 +- .../appconfig/mapping/ConfigParser.kt | 5 +- .../appconfig/mapping/DefaultConfigMapping.kt | 4 +- .../mapping/PresenceTracingConfigMapper.kt | 93 +++++++++++++++++++ .../appconfig/mapping/ConfigParserTest.kt | 6 +- .../events/DefaultTraceLocationKtTest.kt | 2 +- .../entity/TraceLocationConvertersTest.kt | 2 +- .../storage/entity/TraceLocationEntityTest.kt | 2 +- 15 files changed, 170 insertions(+), 15 deletions(-) create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingConfig.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingConfigContainer.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingRiskCalculationParamContainer.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingSubmissionParamContainer.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/PresenceTracingConfigMapper.kt diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/checkins/qrcode/DefaultQRCodeVerifierTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/checkins/qrcode/DefaultQRCodeVerifierTest.kt index 5e8370105..83f1ef199 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/checkins/qrcode/DefaultQRCodeVerifierTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/eventregistration/checkins/qrcode/DefaultQRCodeVerifierTest.kt @@ -1,8 +1,6 @@ package de.rki.coronawarnapp.eventregistration.checkins.qrcode import de.rki.coronawarnapp.environment.EnvironmentSetup -import de.rki.coronawarnapp.eventregistration.common.decodeBase32 -import de.rki.coronawarnapp.server.protocols.internal.pt.TraceLocationOuterClass import de.rki.coronawarnapp.util.security.SignatureValidation import io.kotest.assertions.throwables.shouldNotThrowAny import io.kotest.assertions.throwables.shouldThrow diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/eventregistration/ui/qrcode/QrCodeCreationTestViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/eventregistration/ui/qrcode/QrCodeCreationTestViewModel.kt index 6dd59f2e6..268db7561 100644 --- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/eventregistration/ui/qrcode/QrCodeCreationTestViewModel.kt +++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/eventregistration/ui/qrcode/QrCodeCreationTestViewModel.kt @@ -10,9 +10,9 @@ import com.google.zxing.BarcodeFormat import com.google.zxing.EncodeHintType import com.google.zxing.MultiFormatWriter import com.google.zxing.common.BitMatrix -import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject +import de.rki.coronawarnapp.appconfig.AppConfigProvider import de.rki.coronawarnapp.util.coroutine.DispatcherProvider import de.rki.coronawarnapp.util.di.AppContext import de.rki.coronawarnapp.util.files.FileSharing @@ -26,7 +26,8 @@ import java.io.FileOutputStream class QrCodeCreationTestViewModel @AssistedInject constructor( private val dispatcher: DispatcherProvider, private val fileSharing: FileSharing, - @AppContext private val context: Context + @AppContext private val context: Context, + private val appConfigProvider: AppConfigProvider, ) : CWAViewModel(dispatcher) { val qrCodeBitmap = SingleLiveEvent<Bitmap>() @@ -82,10 +83,15 @@ class QrCodeCreationTestViewModel @AssistedInject constructor( return File(dir, "CoronaWarnApp-Event.pdf") } - private fun encodeAsBitmap(input: String, size: Int = 1000): Bitmap? { + private suspend fun encodeAsBitmap(input: String, size: Int = 1000): Bitmap? { return try { + val qrCodeErrorCorrectionLevel = appConfigProvider + .getAppConfig() + .presenceTracing + .qrCodeErrorCorrectionLevel + Timber.i("QrCodeErrorCorrectionLevel: $qrCodeErrorCorrectionLevel") val hints = mapOf( - EncodeHintType.ERROR_CORRECTION to ErrorCorrectionLevel.H + EncodeHintType.ERROR_CORRECTION to qrCodeErrorCorrectionLevel // This is not required in the specs and it should not be enabled // it is causing crash on older Android versions ex:API 23 // EncodeHintType.CHARACTER_SET to Charsets.UTF_8 diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AppConfigModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AppConfigModule.kt index 093538159..cf775d6f5 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AppConfigModule.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/AppConfigModule.kt @@ -9,6 +9,7 @@ import de.rki.coronawarnapp.appconfig.mapping.ExposureDetectionConfigMapper import de.rki.coronawarnapp.appconfig.mapping.ExposureWindowRiskCalculationConfigMapper import de.rki.coronawarnapp.appconfig.mapping.KeyDownloadParametersMapper import de.rki.coronawarnapp.appconfig.mapping.LogUploadConfigMapper +import de.rki.coronawarnapp.appconfig.mapping.PresenceTracingConfigMapper import de.rki.coronawarnapp.appconfig.mapping.SurveyConfigMapper import de.rki.coronawarnapp.environment.download.DownloadCDNHttpClient import de.rki.coronawarnapp.environment.download.DownloadCDNServerUrl @@ -78,6 +79,10 @@ class AppConfigModule { fun logUploadMapper(mapper: LogUploadConfigMapper): LogUploadConfig.Mapper = mapper + @Provides + fun presenceTracingMapper(mapper: PresenceTracingConfigMapper): + PresenceTracingConfig.Mapper = mapper + companion object { private val HTTP_TIMEOUT_APPCONFIG = Duration.standardSeconds(10) } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingConfig.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingConfig.kt new file mode 100644 index 000000000..5eaee0af4 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingConfig.kt @@ -0,0 +1,13 @@ +package de.rki.coronawarnapp.appconfig + +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel +import de.rki.coronawarnapp.appconfig.mapping.ConfigMapper + +interface PresenceTracingConfig { + val qrCodeErrorCorrectionLevel: ErrorCorrectionLevel + val revokedTraceLocationVersions: List<Int> + val riskCalculationParameters: PresenceTracingRiskCalculationParamContainer + val submissionParameters: PresenceTracingSubmissionParamContainer + + interface Mapper : ConfigMapper<PresenceTracingConfig> +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingConfigContainer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingConfigContainer.kt new file mode 100644 index 000000000..0067d966b --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingConfigContainer.kt @@ -0,0 +1,10 @@ +package de.rki.coronawarnapp.appconfig + +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel + +data class PresenceTracingConfigContainer( + override val qrCodeErrorCorrectionLevel: ErrorCorrectionLevel, + override val revokedTraceLocationVersions: List<Int>, + override val riskCalculationParameters: PresenceTracingRiskCalculationParamContainer, + override val submissionParameters: PresenceTracingSubmissionParamContainer +) : PresenceTracingConfig diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingRiskCalculationParamContainer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingRiskCalculationParamContainer.kt new file mode 100644 index 000000000..b50b44323 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingRiskCalculationParamContainer.kt @@ -0,0 +1,10 @@ +package de.rki.coronawarnapp.appconfig + +import de.rki.coronawarnapp.server.protocols.internal.v2.RiskCalculationParametersOuterClass.NormalizedTimeToRiskLevelMapping +import de.rki.coronawarnapp.server.protocols.internal.v2.RiskCalculationParametersOuterClass.TransmissionRiskValueMapping + +data class PresenceTracingRiskCalculationParamContainer( + val transmissionRiskValueMapping: List<TransmissionRiskValueMapping>, + val normalizedTimePerCheckInToRiskLevelMapping: List<NormalizedTimeToRiskLevelMapping>, + val normalizedTimePerDayToRiskLevelMapping: List<NormalizedTimeToRiskLevelMapping> +) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingSubmissionParamContainer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingSubmissionParamContainer.kt new file mode 100644 index 000000000..1fdae47da --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/PresenceTracingSubmissionParamContainer.kt @@ -0,0 +1,12 @@ +package de.rki.coronawarnapp.appconfig + +import de.rki.coronawarnapp.server.protocols.internal.v2 + .PresenceTracingParametersOuterClass.PresenceTracingSubmissionParameters.DurationFilter + +import de.rki.coronawarnapp.server.protocols.internal.v2 + .PresenceTracingParametersOuterClass.PresenceTracingSubmissionParameters.AerosoleDecayFunctionLinear + +data class PresenceTracingSubmissionParamContainer( + val durationFilters: List<DurationFilter>, + val aerosoleDecayLinearFunctions: List<AerosoleDecayFunctionLinear> +) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigMapping.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigMapping.kt index 92a3d6849..bad36b65a 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigMapping.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigMapping.kt @@ -6,6 +6,7 @@ import de.rki.coronawarnapp.appconfig.ExposureDetectionConfig import de.rki.coronawarnapp.appconfig.ExposureWindowRiskCalculationConfig import de.rki.coronawarnapp.appconfig.KeyDownloadConfig import de.rki.coronawarnapp.appconfig.LogUploadConfig +import de.rki.coronawarnapp.appconfig.PresenceTracingConfig import de.rki.coronawarnapp.appconfig.SurveyConfig import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid @@ -17,10 +18,8 @@ interface ConfigMapping : @Deprecated("Try to access a more specific config type, avoid the RAW variant.") val rawConfig: AppConfigAndroid.ApplicationConfigurationAndroid - val survey: SurveyConfig - val analytics: AnalyticsConfig - val logUpload: LogUploadConfig + val presenceTracing: PresenceTracingConfig } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParser.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParser.kt index e9bf15f00..de2214177 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParser.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParser.kt @@ -7,6 +7,7 @@ import de.rki.coronawarnapp.appconfig.ExposureDetectionConfig import de.rki.coronawarnapp.appconfig.ExposureWindowRiskCalculationConfig import de.rki.coronawarnapp.appconfig.KeyDownloadConfig import de.rki.coronawarnapp.appconfig.LogUploadConfig +import de.rki.coronawarnapp.appconfig.PresenceTracingConfig import de.rki.coronawarnapp.appconfig.SurveyConfig import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid import timber.log.Timber @@ -21,6 +22,7 @@ class ConfigParser @Inject constructor( private val surveyConfigMapper: SurveyConfig.Mapper, private val analyticsConfigMapper: AnalyticsConfig.Mapper, private val logUploadConfigMapper: LogUploadConfig.Mapper, + private val presenceTracingConfigMapper: PresenceTracingConfig.Mapper, ) { fun parse(configBytes: ByteArray): ConfigMapping = try { @@ -33,7 +35,8 @@ class ConfigParser @Inject constructor( exposureWindowRiskCalculationConfig = exposureWindowRiskCalculationConfigMapper.map(it), survey = surveyConfigMapper.map(it), analytics = analyticsConfigMapper.map(it), - logUpload = logUploadConfigMapper.map(it) + logUpload = logUploadConfigMapper.map(it), + presenceTracing = presenceTracingConfigMapper.map(it) ) } } catch (e: Exception) { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/DefaultConfigMapping.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/DefaultConfigMapping.kt index 9ebbe2116..cdebdff80 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/DefaultConfigMapping.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/DefaultConfigMapping.kt @@ -6,6 +6,7 @@ import de.rki.coronawarnapp.appconfig.ExposureDetectionConfig import de.rki.coronawarnapp.appconfig.ExposureWindowRiskCalculationConfig import de.rki.coronawarnapp.appconfig.KeyDownloadConfig import de.rki.coronawarnapp.appconfig.LogUploadConfig +import de.rki.coronawarnapp.appconfig.PresenceTracingConfig import de.rki.coronawarnapp.appconfig.SurveyConfig import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid @@ -17,7 +18,8 @@ data class DefaultConfigMapping( val exposureWindowRiskCalculationConfig: ExposureWindowRiskCalculationConfig, override val survey: SurveyConfig, override val analytics: AnalyticsConfig, - override val logUpload: LogUploadConfig + override val logUpload: LogUploadConfig, + override val presenceTracing: PresenceTracingConfig, ) : ConfigMapping, CWAConfig by cwaConfig, KeyDownloadConfig by keyDownloadConfig, diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/PresenceTracingConfigMapper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/PresenceTracingConfigMapper.kt new file mode 100644 index 000000000..a25ebee28 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/PresenceTracingConfigMapper.kt @@ -0,0 +1,93 @@ +package de.rki.coronawarnapp.appconfig.mapping + +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel +import dagger.Reusable +import de.rki.coronawarnapp.appconfig.PresenceTracingConfig +import de.rki.coronawarnapp.appconfig.PresenceTracingConfigContainer +import de.rki.coronawarnapp.appconfig.PresenceTracingRiskCalculationParamContainer +import de.rki.coronawarnapp.appconfig.PresenceTracingSubmissionParamContainer +import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid +import de.rki.coronawarnapp.server.protocols.internal.v2 + .PresenceTracingParametersOuterClass.PresenceTracingSubmissionParameters +import de.rki.coronawarnapp.server.protocols.internal.v2 + .PresenceTracingParametersOuterClass.PresenceTracingRiskCalculationParameters +import de.rki.coronawarnapp.server.protocols.internal.v2 + .PresenceTracingParametersOuterClass.PresenceTracingParameters.QRCodeErrorCorrectionLevel +import timber.log.Timber +import javax.inject.Inject + +@Reusable +class PresenceTracingConfigMapper @Inject constructor() : PresenceTracingConfig.Mapper { + override fun map(rawConfig: AppConfigAndroid.ApplicationConfigurationAndroid): PresenceTracingConfig { + if (!rawConfig.hasPresenceTracingParameters()) { + Timber.w("AppConfig does not have PresenceTracingParameters") + return PresenceTracingConfigContainer( + qrCodeErrorCorrectionLevel = ErrorCorrectionLevel.H, + revokedTraceLocationVersions = emptyList(), + riskCalculationParameters = emptyRiskCalculationParameters(), + submissionParameters = emptySubmissionParameters() + ) + } + + return rawConfig.presenceTracingConfig().also { Timber.i("PresenceTracingConfig: $it") } + } + + private fun emptySubmissionParameters() = + PresenceTracingSubmissionParamContainer( + durationFilters = emptyList(), + aerosoleDecayLinearFunctions = emptyList() + ) + + private fun emptyRiskCalculationParameters() = + PresenceTracingRiskCalculationParamContainer( + transmissionRiskValueMapping = emptyList(), + normalizedTimePerCheckInToRiskLevelMapping = emptyList(), + normalizedTimePerDayToRiskLevelMapping = emptyList() + ) + + private fun PresenceTracingSubmissionParameters.mapSubmissionParameters() = + PresenceTracingSubmissionParamContainer( + durationFilters = durationFiltersList, + aerosoleDecayLinearFunctions = aerosoleDecayLinearFunctionsList + ) + + private fun PresenceTracingRiskCalculationParameters.mapRiskCalculationParameters() = + PresenceTracingRiskCalculationParamContainer( + transmissionRiskValueMapping = transmissionRiskValueMappingList, + normalizedTimePerCheckInToRiskLevelMapping = normalizedTimePerCheckInToRiskLevelMappingList, + normalizedTimePerDayToRiskLevelMapping = normalizedTimePerDayToRiskLevelMappingList + ) + + private fun QRCodeErrorCorrectionLevel.mapErrorCorrection(): ErrorCorrectionLevel = + when (this) { + QRCodeErrorCorrectionLevel.LOW -> ErrorCorrectionLevel.L + QRCodeErrorCorrectionLevel.MEDIUM -> ErrorCorrectionLevel.M + QRCodeErrorCorrectionLevel.HIGH -> ErrorCorrectionLevel.H + QRCodeErrorCorrectionLevel.QUANTILE -> ErrorCorrectionLevel.Q + else -> ErrorCorrectionLevel.H + } + + private fun AppConfigAndroid.ApplicationConfigurationAndroid.presenceTracingConfig() = + presenceTracingParameters.run { + val riskCalculationParameters = if (hasRiskCalculationParameters()) { + riskCalculationParameters.mapRiskCalculationParameters() + } else { + Timber.w("RiskCalculationParameters are missing") + emptyRiskCalculationParameters() + } + + val submissionParameters = if (hasSubmissionParameters()) { + submissionParameters.mapSubmissionParameters() + } else { + Timber.w("SubmissionParameters are missing") + emptySubmissionParameters() + } + + PresenceTracingConfigContainer( + qrCodeErrorCorrectionLevel = qrCodeErrorCorrectionLevel.mapErrorCorrection(), + revokedTraceLocationVersions = revokedTraceLocationVersionsList.orEmpty(), + riskCalculationParameters = riskCalculationParameters, + submissionParameters = submissionParameters + ) + } +} diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParserTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParserTest.kt index ab457e818..6f605d32f 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParserTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/ConfigParserTest.kt @@ -7,6 +7,7 @@ import de.rki.coronawarnapp.appconfig.ExposureDetectionConfig import de.rki.coronawarnapp.appconfig.ExposureWindowRiskCalculationConfig import de.rki.coronawarnapp.appconfig.KeyDownloadConfig import de.rki.coronawarnapp.appconfig.LogUploadConfig +import de.rki.coronawarnapp.appconfig.PresenceTracingConfig import de.rki.coronawarnapp.appconfig.SurveyConfig import io.kotest.assertions.throwables.shouldThrow import io.kotest.matchers.shouldBe @@ -30,6 +31,7 @@ class ConfigParserTest : BaseTest() { @MockK lateinit var surveyConfigMapper: SurveyConfig.Mapper @MockK lateinit var analyticsConfigMapper: AnalyticsConfig.Mapper @MockK lateinit var logUploadConfigMapper: LogUploadConfig.Mapper + @MockK lateinit var presenceTracingConfigMapper: PresenceTracingConfig.Mapper private val appConfig171 = File("src/test/resources/appconfig_1_7_1.bin") private val appConfig180 = File("src/test/resources/appconfig_1_8_0.bin") @@ -45,6 +47,7 @@ class ConfigParserTest : BaseTest() { every { surveyConfigMapper.map(any()) } returns mockk() every { analyticsConfigMapper.map(any()) } returns mockk() every { logUploadConfigMapper.map(any()) } returns mockk() + every { presenceTracingConfigMapper.map(any()) } returns mockk() appConfig171.exists() shouldBe true appConfig180.exists() shouldBe true @@ -57,7 +60,8 @@ class ConfigParserTest : BaseTest() { exposureWindowRiskCalculationConfigMapper = exposureWindowRiskCalculationConfigMapper, surveyConfigMapper = surveyConfigMapper, analyticsConfigMapper = analyticsConfigMapper, - logUploadConfigMapper = logUploadConfigMapper + logUploadConfigMapper = logUploadConfigMapper, + presenceTracingConfigMapper = presenceTracingConfigMapper ) @Test diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocationKtTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocationKtTest.kt index 7aefa48ae..4b624abcb 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocationKtTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/events/DefaultTraceLocationKtTest.kt @@ -108,4 +108,4 @@ internal class DefaultTraceLocationKtTest : BaseTest() { ) ) } -} \ No newline at end of file +} diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConvertersTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConvertersTest.kt index b11ff0146..24260f9a9 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConvertersTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationConvertersTest.kt @@ -26,4 +26,4 @@ internal class TraceLocationConvertersTest : BaseTest() { fromTraceLocationType(TraceLocation.Type.TEMPORARY_OTHER) shouldBe 2 } } -} \ No newline at end of file +} diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntityTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntityTest.kt index e796c1838..df49201e4 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntityTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/eventregistration/storage/entity/TraceLocationEntityTest.kt @@ -58,4 +58,4 @@ internal class TraceLocationEntityTest : BaseTest() { signature = "signature" ) } -} \ No newline at end of file +} -- GitLab