From 8e5663c80d650f7ab219f8503613fb0caa877a5f Mon Sep 17 00:00:00 2001
From: Matthias Urhahn <matthias.urhahn@sap.com>
Date: Fri, 18 Jun 2021 11:19:14 +0200
Subject: [PATCH] Require labId for test certificates only for PCR tests
 (EXPOSUREAPP-7987) (#3494)

* Require labId for test certificates only for PCR tests.

* Good morning detekt.
---
 .../test/core/TestCertificateRepository.kt                | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/core/TestCertificateRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/core/TestCertificateRepository.kt
index b632cea27..7cc52508c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/core/TestCertificateRepository.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/core/TestCertificateRepository.kt
@@ -155,6 +155,8 @@ class TestCertificateRepository @Inject constructor(
      *
      * [refresh] itself will NOT throw an exception.
      */
+    // TODO Will be addressed in 2.5?
+    @Suppress("ComplexMethod")
     suspend fun refresh(identifier: TestCertificateIdentifier? = null): Set<RefreshResult> {
         Timber.tag(TAG).d("refresh(identifier=%s)", identifier)
 
@@ -181,7 +183,7 @@ class TestCertificateRepository @Inject constructor(
 
             val refreshedCerts = values
                 .filter { workedOnIds.contains(it.identifier) } // Refresh targets
-                .filter { it.labId == null } // Targets of this step
+                .filter { it.labId == null && it.data is PCRCertificateData } // Targets of this step
                 .map { cert ->
                     Timber.tag(TAG).d("%s is missing a lab id returning exception", cert)
                     RefreshResult(
@@ -210,7 +212,7 @@ class TestCertificateRepository @Inject constructor(
             val refreshedCerts = values
                 .filter { workedOnIds.contains(it.identifier) } // Refresh targets
                 .filter { !it.isPublicKeyRegistered } // Targets of this step
-                .filter { it.labId != null }
+                .filter { it.labId != null || it.data !is PCRCertificateData }
                 .map { cert ->
                     withContext(dispatcherProvider.IO) {
                         try {
@@ -241,7 +243,7 @@ class TestCertificateRepository @Inject constructor(
             val refreshedCerts = values
                 .filter { workedOnIds.contains(it.identifier) } // Refresh targets
                 .filter { it.isPublicKeyRegistered && it.isCertificateRetrievalPending } // Targets of this step
-                .filter { it.labId != null }
+                .filter { it.labId != null || it.data !is PCRCertificateData }
                 .map { cert ->
                     withContext(dispatcherProvider.IO) {
                         try {
-- 
GitLab