From 36ffdf6f6cb1fb8eb0ef344748a2aca7c61435fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20M=C3=B6ller?= Date: Mon, 8 Jun 2020 09:19:58 +0200 Subject: [PATCH 1/3] Fix/appbuild release minified instantiates jacoco (#266) * Remove Jacoco Plugin for Coverage Upload Signed-off-by: d067928 * Separate Jacoco Task * Revert "Separate Jacoco Task" This reverts commit a1f6a67f8319f7f4874e51d6222628ac498c276a. * Removing Jacoco Circle Ci Step * Removing testCoverageEnabled Parameter Co-authored-by: Hee Tatt Ooi Co-authored-by: Thomas Kowark --- .circleci/config.yml | 6 ------ Corona-Warn-App/build.gradle | 1 - build.gradle | 6 ------ 3 files changed, 13 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ed0062ff57d..5f3a483cbe6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -24,12 +24,6 @@ jobs: environment: JVM_OPTS: -Xmx2048m GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false - - run: - name: JaCoCo report - command: ./gradlew :Corona-Warn-App:jacocoTestReportDeviceRelease - environment: - JVM_OPTS: -Xmx2048m - GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false - scan-sonar - save-build-cache - save_cache: diff --git a/Corona-Warn-App/build.gradle b/Corona-Warn-App/build.gradle index a48d1106680..06076f1a88e 100644 --- a/Corona-Warn-App/build.gradle +++ b/Corona-Warn-App/build.gradle @@ -82,7 +82,6 @@ android { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - testCoverageEnabled true buildConfigField "String", "EXPORT_SIGNATURE_ID", "\"de.rki.coronawarnapp-dev\"" } } diff --git a/build.gradle b/build.gradle index 6c962032830..7c9cabba680 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,6 @@ buildscript { classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navVersion" classpath "org.jlleitschuh.gradle:ktlint-gradle:9.2.1" classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.9.1" - classpath "com.vanniktech:gradle-android-junit-jacoco-plugin:0.16.0" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -29,7 +28,6 @@ buildscript { subprojects { apply plugin: "io.gitlab.arturbosch.detekt" apply plugin: "org.jlleitschuh.gradle.ktlint" - apply plugin: "com.vanniktech.android.junit.jacoco" detekt { debug = true @@ -51,10 +49,6 @@ subprojects { ignoreFailures = false coloredOutput = false } - - junitJacoco { - jacocoVersion = '0.8.5' - } } allprojects { From f1377e0e5cc361c06f39d4ea5a4bba6e47c4b0bf Mon Sep 17 00:00:00 2001 From: oemerb <66002424+oemerb@users.noreply.github.com> Date: Mon, 8 Jun 2020 09:21:13 +0200 Subject: [PATCH 2/3] version bumped to 0.8.7 (#269) --- Corona-Warn-App/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Corona-Warn-App/build.gradle b/Corona-Warn-App/build.gradle index 06076f1a88e..3fb91cf51eb 100644 --- a/Corona-Warn-App/build.gradle +++ b/Corona-Warn-App/build.gradle @@ -32,8 +32,8 @@ android { applicationId 'de.rki.coronawarnapp' minSdkVersion 23 targetSdkVersion 29 - versionCode 13 - versionName "0.8.6" + versionCode 14 + versionName "0.8.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" buildConfigField "String", "DOWNLOAD_CDN_URL", "\"$DOWNLOAD_CDN_URL\"" From 4dc73f1a4403c0f58a950450b570c470473217e8 Mon Sep 17 00:00:00 2001 From: Thomas Klingbeil <64434904+tklingbeil@users.noreply.github.com> Date: Mon, 8 Jun 2020 09:22:29 +0200 Subject: [PATCH 3/3] Revert "Extend teleTAN to 10 characters + input validation (#252)" (#267) This reverts commit 8577f8d4c3e70ded43a693df9ac67d4bd6c48808. --- .../ui/submission/SubmissionTanViewModel.kt | 17 +--- .../ui/submission/TanConstants.kt | 2 +- .../coronawarnapp/ui/submission/TanInput.kt | 43 +-------- .../de/rki/coronawarnapp/util/TanHelper.kt | 33 ------- .../formatter/FormatterSubmissionHelper.kt | 5 -- .../src/main/res/drawable/tan_input_digit.xml | 29 +++--- .../res/drawable/tan_input_digit_entered.xml | 6 -- .../res/drawable/tan_input_digit_error.xml | 20 ----- .../res/layout/fragment_submission_tan.xml | 28 ------ .../src/main/res/layout/view_tan_input.xml | 52 +---------- .../src/main/res/values/dimens.xml | 6 +- .../src/main/res/values/strings.xml | 6 +- .../src/main/res/values/styles.xml | 7 -- .../submission/SubmissionTanViewModelTest.kt | 44 ---------- .../rki/coronawarnapp/util/TanHelperTest.kt | 88 ------------------- 15 files changed, 22 insertions(+), 364 deletions(-) delete mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TanHelper.kt delete mode 100644 Corona-Warn-App/src/main/res/drawable/tan_input_digit_entered.xml delete mode 100644 Corona-Warn-App/src/main/res/drawable/tan_input_digit_error.xml delete mode 100644 Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/SubmissionTanViewModelTest.kt delete mode 100644 Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/TanHelperTest.kt diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTanViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTanViewModel.kt index cae07743b57..c18d49a0153 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTanViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTanViewModel.kt @@ -5,7 +5,6 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Transformations import androidx.lifecycle.ViewModel import de.rki.coronawarnapp.storage.SubmissionRepository -import de.rki.coronawarnapp.util.TanHelper class SubmissionTanViewModel : ViewModel() { @@ -17,21 +16,7 @@ class SubmissionTanViewModel : ViewModel() { val isValidTanFormat = Transformations.map(tan) { - it != null && - it.length == TanConstants.MAX_LENGTH && - TanHelper.isChecksumValid(it) && - TanHelper.allCharactersValid(it) - } - - val tanChecksumValid = - Transformations.map(tan) { - ((it !== null && it.trim().length == TanConstants.MAX_LENGTH) && - TanHelper.isChecksumValid(it).not()).not() - } - - val tanCharactersValid = - Transformations.map(tan) { - !((it != null) && TanHelper.allCharactersValid(it).not()) + it != null && it.length == TanConstants.MAX_LENGTH } fun storeTeletan() { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/TanConstants.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/TanConstants.kt index 644cf1ee0f3..b6be13be81d 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/TanConstants.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/TanConstants.kt @@ -1,6 +1,6 @@ package de.rki.coronawarnapp.ui.submission object TanConstants { - const val MAX_LENGTH = 10 + const val MAX_LENGTH = 7 val ALPHA_NUMERIC_CHARS = ('a'..'z').plus('A'..'Z').plus('0'..'9') } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/TanInput.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/TanInput.kt index f95bafeb917..70cc48b6833 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/TanInput.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/TanInput.kt @@ -8,9 +8,6 @@ import android.view.inputmethod.InputMethodManager import android.widget.FrameLayout import androidx.core.widget.doOnTextChanged import de.rki.coronawarnapp.R -import de.rki.coronawarnapp.ui.submission.TanConstants.MAX_LENGTH -import de.rki.coronawarnapp.util.TanHelper -import java.util.Locale import kotlinx.android.synthetic.main.view_tan_input.view.tan_input_edittext import kotlinx.android.synthetic.main.view_tan_input.view.tan_input_textview_1 import kotlinx.android.synthetic.main.view_tan_input.view.tan_input_textview_2 @@ -19,11 +16,6 @@ import kotlinx.android.synthetic.main.view_tan_input.view.tan_input_textview_4 import kotlinx.android.synthetic.main.view_tan_input.view.tan_input_textview_5 import kotlinx.android.synthetic.main.view_tan_input.view.tan_input_textview_6 import kotlinx.android.synthetic.main.view_tan_input.view.tan_input_textview_7 -import kotlinx.android.synthetic.main.view_tan_input.view.tan_input_textview_8 -import kotlinx.android.synthetic.main.view_tan_input.view.tan_input_textview_9 -import kotlinx.android.synthetic.main.view_tan_input.view.tan_input_textview_10 -import kotlinx.android.synthetic.main.view_tan_input.view.dash_view_1 -import kotlinx.android.synthetic.main.view_tan_input.view.dash_view_2 class TanInput(context: Context, attrs: AttributeSet) : FrameLayout(context, attrs) { @@ -38,7 +30,7 @@ class TanInput(context: Context, attrs: AttributeSet) : FrameLayout(context, att TanConstants.ALPHA_NUMERIC_CHARS.contains(it) } } - private var lengthFilter = InputFilter.LengthFilter(MAX_LENGTH) + private val lengthFilter = InputFilter.LengthFilter(TanConstants.MAX_LENGTH) var listener: ((String?) -> Unit)? = null @@ -49,9 +41,6 @@ class TanInput(context: Context, attrs: AttributeSet) : FrameLayout(context, att tan_input_edittext.filters = arrayOf(whitespaceFilter, alphaNumericFilter, lengthFilter) - dash_view_1.text = "-" - dash_view_2.text = "-" - // register listener tan_input_edittext.doOnTextChanged { text, _, _, _ -> updateTan(text) } setOnClickListener { showKeyboard() } @@ -67,20 +56,9 @@ class TanInput(context: Context, attrs: AttributeSet) : FrameLayout(context, att } } - private fun limitLength(length: Int?) { - lengthFilter = InputFilter.LengthFilter(if (length != null) length else MAX_LENGTH) - tan_input_edittext.filters = arrayOf(whitespaceFilter, alphaNumericFilter, lengthFilter) - } - private fun updateTan(text: CharSequence?) { - this.tan = text?.toString()?.toUpperCase(Locale.getDefault()) + this.tan = text?.toString() updateDigits() - tan?.let { - limitLength( - if (TanHelper.allCharactersValid(it)) null - else it.length - ) - } notifyListener() } @@ -93,24 +71,9 @@ class TanInput(context: Context, attrs: AttributeSet) : FrameLayout(context, att tan_input_textview_4, tan_input_textview_5, tan_input_textview_6, - tan_input_textview_7, - tan_input_textview_8, - tan_input_textview_9, - tan_input_textview_10 + tan_input_textview_7 ).forEachIndexed { i, tanDigit -> tanDigit.text = digitAtIndex(i) - tanDigit.background = - if (digitAtIndex(i) == "") - resources.getDrawable(R.drawable.tan_input_digit, null) - else if (TanHelper.isTanCharacterValid(digitAtIndex(i))) - resources.getDrawable(R.drawable.tan_input_digit_entered, null) - else resources.getDrawable(R.drawable.tan_input_digit_error, null) - - tanDigit.setTextColor( - if (TanHelper.isTanCharacterValid(digitAtIndex(i))) - resources.getColor(R.color.colorTextSemanticNeutral, null) - else resources.getColor(R.color.colorTextSemanticRed, null) - ) } private fun digitAtIndex(index: Int): String = tan?.getOrNull(index)?.toString() ?: "" diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TanHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TanHelper.kt deleted file mode 100644 index 9693fab69ac..00000000000 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TanHelper.kt +++ /dev/null @@ -1,33 +0,0 @@ -package de.rki.coronawarnapp.util - -import de.rki.coronawarnapp.ui.submission.TanConstants.MAX_LENGTH -import java.security.MessageDigest -import java.util.Locale - -object TanHelper { - private const val VALID_CHARACTERS = "23456789ABCDEFGHJKMNPQRSTUVWXYZ" - - fun isChecksumValid(tan: String): Boolean { - if (tan.trim().length != MAX_LENGTH) - return false - val subTan = tan.substring(0, MAX_LENGTH - 1).toUpperCase(Locale.getDefault()) - val tanDigest = MessageDigest.getInstance("SHA-256").digest(subTan.toByteArray()) - var checkChar = "%02x".format(tanDigest[0])[0] - if (checkChar == '0') checkChar = 'G' - if (checkChar == '1') checkChar = 'H' - - return checkChar.toUpperCase() == tan.last().toUpperCase() - } - - fun allCharactersValid(tan: String): Boolean { - for (character in tan) { - if (!isTanCharacterValid(character.toString())) - return false - } - return true - } - - fun isTanCharacterValid(character: String): Boolean { - return VALID_CHARACTERS.contains(character) - } -} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt index c9502ce5d27..dbe3e29ed71 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSubmissionHelper.kt @@ -193,8 +193,3 @@ fun formatShowRiskStatusCard(deviceUiState: DeviceUIState?): Int = deviceUiState != DeviceUIState.PAIRED_POSITIVE_TELETAN && deviceUiState != DeviceUIState.SUBMITTED_FINAL ) - -fun formatShowTanCharacterError( - charactersValid: Boolean, - checksumValid: Boolean -): Int = formatVisibility(checksumValid && !charactersValid) diff --git a/Corona-Warn-App/src/main/res/drawable/tan_input_digit.xml b/Corona-Warn-App/src/main/res/drawable/tan_input_digit.xml index 48e3d0c51a8..d06cdb9200e 100644 --- a/Corona-Warn-App/src/main/res/drawable/tan_input_digit.xml +++ b/Corona-Warn-App/src/main/res/drawable/tan_input_digit.xml @@ -1,20 +1,11 @@ - - - - - - - - - - - - - - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/drawable/tan_input_digit_entered.xml b/Corona-Warn-App/src/main/res/drawable/tan_input_digit_entered.xml deleted file mode 100644 index 0550164c034..00000000000 --- a/Corona-Warn-App/src/main/res/drawable/tan_input_digit_entered.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/drawable/tan_input_digit_error.xml b/Corona-Warn-App/src/main/res/drawable/tan_input_digit_error.xml deleted file mode 100644 index 01780eeb09b..00000000000 --- a/Corona-Warn-App/src/main/res/drawable/tan_input_digit_error.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/Corona-Warn-App/src/main/res/layout/fragment_submission_tan.xml b/Corona-Warn-App/src/main/res/layout/fragment_submission_tan.xml index 4337a0b5e99..c940d704475 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_submission_tan.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_submission_tan.xml @@ -5,7 +5,6 @@ - - - - - -