diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProvider.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProvider.kt index 2452ac44b62c3ab3b127e9e083ff96a803bcd373..756128817bbf0c7af6c7b91ca01f7ce88e7cf1f8 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProvider.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProvider.kt @@ -130,29 +130,16 @@ class DefaultTEKHistoryProvider @Inject constructor( } private suspend fun getPreAuthTEKHistoryOnV18(): List<TemporaryExposureKey> { - val isPreAuthorized = try { - preAuthorizeExposureKeyHistory() + return try { + Timber.d("Pre-Auth retrieving TEK.") + getPreAuthorizedExposureKeys().also { + Timber.d("Pre-Auth TEK: %s", it.joinToString("\n")) + } } catch (exception: Exception) { - Timber.d(exception, "Requesting Pre-Auth history failed") + Timber.d(exception, "Pre-Auth retrieving TEK failed") if (exception.isResolvable) throw exception - false - } - - return if (isPreAuthorized) { - try { - Timber.d("Pre-Auth retrieving TEK.") - getPreAuthorizedExposureKeys().also { - Timber.d("Pre-Auth TEK: %s", it.joinToString("\n")) - } - } catch (exception: Exception) { - Timber.d(exception, "Pre-Auth retrieving TEK failed") - if (exception.isResolvable) throw exception - Timber.d("Fallback: Retrieving TEK on pre v1.8") - getTEKHistoryOnPreV18() - } - } else { - Timber.d("Retrieving TEK on pre v1.8") + Timber.d("Fallback: Retrieving TEK on pre v1.8") getTEKHistoryOnPreV18() } } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProviderTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProviderTest.kt index 3202a9622b856686646335c54ddb2552484385d2..129e488001b32d78090f9dd151e81879b9a9aa07 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProviderTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/nearby/modules/tekhistory/DefaultTEKHistoryProviderTest.kt @@ -185,7 +185,7 @@ class DefaultTEKHistoryProviderTest : BaseTest() { every { status.hasResolution() } returns true every { printStackTrace(any<PrintWriter>()) } just Runs } - every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } answers { MockGMSTask.forError(error) } + every { client.requestPreAuthorizedTemporaryExposureKeyRelease() } answers { MockGMSTask.forError(error) } shouldThrow<ApiException> { createInstance().getTEKHistory() @@ -195,13 +195,25 @@ class DefaultTEKHistoryProviderTest : BaseTest() { @Test fun `ENFV1_8 getTEKHistory request keys from new Api fallback to old Api on error`() = runBlockingTest { coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true - every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } answers { MockGMSTask.forError(Exception()) } + every { client.requestPreAuthorizedTemporaryExposureKeyRelease() } answers { MockGMSTask.forError(Exception()) } val mockTEK = mockk<TemporaryExposureKey>() every { client.temporaryExposureKeyHistory } answers { MockGMSTask.forValue(listOf(mockTEK)) } createInstance().getTEKHistory() shouldBe listOf(mockTEK) verify(exactly = 1) { client.temporaryExposureKeyHistory } + verify { client.requestPreAuthorizedTemporaryExposureKeyHistory() wasNot Called } + } + + @Test + fun `ENFV1_8 getTEKHistory request keys from new Api does not check for preAuth`() = runBlockingTest { + coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true + every { client.requestPreAuthorizedTemporaryExposureKeyRelease() } answers { MockGMSTask.forValue(null) } + + createInstance().getTEKHistory() + + verify(exactly = 1) { client.requestPreAuthorizedTemporaryExposureKeyRelease() } + verify { client.requestPreAuthorizedTemporaryExposureKeyHistory() wasNot Called } } @Test @@ -265,7 +277,7 @@ class DefaultTEKHistoryProviderTest : BaseTest() { @Test fun `ENFV1_8 getTEKHistoryOrRequestPermission - if not preauthorized and no resolution then use the old API`() { coEvery { enfVersion.isAtLeast(ENFVersion.V1_8) } returns true - every { client.requestPreAuthorizedTemporaryExposureKeyHistory() } returns MockGMSTask.forError(Exception()) + every { client.requestPreAuthorizedTemporaryExposureKeyRelease() } returns MockGMSTask.forError(Exception()) val onTEKHistoryAvailable = mockk<(List<TemporaryExposureKey>) -> Unit>(relaxed = true) val onPermissionRequired = mockk<(Status) -> Unit>(relaxed = true) @@ -320,7 +332,6 @@ class DefaultTEKHistoryProviderTest : BaseTest() { onPermissionRequired wasNot Called } verifyOrder { - client.requestPreAuthorizedTemporaryExposureKeyHistory() client.requestPreAuthorizedTemporaryExposureKeyRelease() client.temporaryExposureKeyHistory }