From 528124913d70d39459b9faa499574cb1768a22b8 Mon Sep 17 00:00:00 2001
From: Matthias Urhahn <matthias.urhahn@sap.com>
Date: Mon, 22 Feb 2021 10:27:22 +0100
Subject: [PATCH] Default app config cleanup (DEV) #2396

* Remove legacy config check, not necessary anymore.

* Unknown serialized fields should be 0.

Co-authored-by: Ralf Gehrer <ralfgehrer@users.noreply.github.com>
---
 Corona-Warn-App/build.gradle                  |   1 +
 .../src/main/assets/default_app_config.bin    | Bin 296 -> 0 bytes
 .../src/main/assets/default_app_config.sha256 |   1 -
 .../fallback/DefaultAppConfigSanityCheck.kt   |  28 +++++-------------
 4 files changed, 9 insertions(+), 21 deletions(-)
 delete mode 100644 Corona-Warn-App/src/main/assets/default_app_config.bin
 delete mode 100644 Corona-Warn-App/src/main/assets/default_app_config.sha256

diff --git a/Corona-Warn-App/build.gradle b/Corona-Warn-App/build.gradle
index 310ecaab8..d5d111ec6 100644
--- a/Corona-Warn-App/build.gradle
+++ b/Corona-Warn-App/build.gradle
@@ -300,6 +300,7 @@ dependencies {
     implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutineVersion"
     implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$coroutineVersion"
     testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutineVersion"
+    testImplementation "org.jetbrains.kotlin:kotlin-reflect:1.4.21"
 
     // ANDROID STANDARD
     def nav_version = "2.3.3"
diff --git a/Corona-Warn-App/src/main/assets/default_app_config.bin b/Corona-Warn-App/src/main/assets/default_app_config.bin
deleted file mode 100644
index d04532907debe2eaf94fb70f39a3a0ccb7d9937a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 296
zcmd<!77E}}<zn{n4;NsN;8&8$C@Co@w$j%xFE7_i&M(T(ODs<;%F|0MDBx1(V)5{F
z_YmNh==Z~?P%4K@fP(>O9J2z82CD&^1-k=>AOje9I!HmJ7!(*a7!4RL7#$cDVNzNG
z9IOJY608cWKwYdBtPZS(5GfM}E08WG2_^+54JHF73nm99N0=@pptCs41?+{SIUzzH
z?4g!Du$P30Ffd3kC>Uv}a0zg+fgQ#m1fwxTj2N64yx1fTF)KV^4r1b9jAG?r6lh@w
E0A)8TOaK4?

diff --git a/Corona-Warn-App/src/main/assets/default_app_config.sha256 b/Corona-Warn-App/src/main/assets/default_app_config.sha256
deleted file mode 100644
index 686b1764c..000000000
--- a/Corona-Warn-App/src/main/assets/default_app_config.sha256
+++ /dev/null
@@ -1 +0,0 @@
-a562bf5940b8c149138634d313db69a298a50e8c52c0b42d18ddf608c385b598
\ No newline at end of file
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/fallback/DefaultAppConfigSanityCheck.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/fallback/DefaultAppConfigSanityCheck.kt
index 9f565b912..65fbea732 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/fallback/DefaultAppConfigSanityCheck.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/sources/fallback/DefaultAppConfigSanityCheck.kt
@@ -3,7 +3,7 @@ package de.rki.coronawarnapp.appconfig.sources.fallback
 import android.content.Context
 import android.os.Build
 import androidx.test.core.app.ApplicationProvider
-import de.rki.coronawarnapp.server.protocols.internal.AppConfig
+import com.google.protobuf.UnknownFieldSetLite
 import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid
 import de.rki.coronawarnapp.util.HashExtensions.toSHA256
 import io.kotest.assertions.throwables.shouldNotThrowAny
@@ -24,9 +24,6 @@ import testhelpers.EmptyApplication
 @RunWith(RobolectricTestRunner::class)
 class DefaultAppConfigSanityCheck : BaseTest() {
 
-    private val legacyConfigName = "default_app_config.bin"
-    private val legacyCheckSumName = "default_app_config.sha256"
-
     private val configName = "default_app_config_android.bin"
     private val checkSumName = "default_app_config_android.sha256"
 
@@ -55,23 +52,14 @@ class DefaultAppConfigSanityCheck : BaseTest() {
     fun `current default config can be parsed`() {
         shouldNotThrowAny {
             val config = context.assets.open(configName).readBytes()
-            AppConfigAndroid.ApplicationConfigurationAndroid.parseFrom(config) shouldNotBe null
-        }
-    }
+            val parsedConfig = AppConfigAndroid.ApplicationConfigurationAndroid.parseFrom(config)
+            parsedConfig shouldNotBe null
 
-    @Test
-    fun `legacy config - current default matches checksum`() {
-        val config = context.assets.open(legacyConfigName).readBytes()
-        val sha256 = context.assets.open(legacyCheckSumName).readBytes().toString(Charsets.UTF_8)
-        sha256 shouldBe "a562bf5940b8c149138634d313db69a298a50e8c52c0b42d18ddf608c385b598"
-        config.toSHA256() shouldBe sha256
-    }
-
-    @Test
-    fun `legacy config - current default config can be parsed`() {
-        shouldNotThrowAny {
-            val config = context.assets.open(legacyConfigName).readBytes()
-            AppConfig.ApplicationConfiguration.parseFrom(config) shouldNotBe null
+            val unknownFields = parsedConfig.javaClass.superclass!!.getDeclaredField("unknownFields").let {
+                it.isAccessible = true
+                it.get(parsedConfig) as UnknownFieldSetLite
+            }
+            unknownFields.serializedSize shouldBe 0
         }
     }
 }
-- 
GitLab