From f33fae528011434bfdb7ed005cee72756596bcc6 Mon Sep 17 00:00:00 2001 From: Lukasz Macionczyk Date: Wed, 22 Jan 2025 22:40:02 +0100 Subject: [PATCH] handle 404 response from /subscriptions in the same way as 400 --- .../subscriptions/impl/SubscriptionsManager.kt | 2 +- .../impl/RealSubscriptionsManagerTest.kt | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/SubscriptionsManager.kt b/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/SubscriptionsManager.kt index e3570bad1edb..e8f86e074ed5 100644 --- a/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/SubscriptionsManager.kt +++ b/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/SubscriptionsManager.kt @@ -745,7 +745,7 @@ class RealSubscriptionsManager @Inject constructor( isSignedInV2() -> try { refreshSubscriptionData() } catch (e: HttpException) { - if (e.code() == 400) { + if (e.code() in listOf(400, 404)) { // expected if this is a first ever purchase using this account - ignore } else { throw e diff --git a/subscriptions/subscriptions-impl/src/test/java/com/duckduckgo/subscriptions/impl/RealSubscriptionsManagerTest.kt b/subscriptions/subscriptions-impl/src/test/java/com/duckduckgo/subscriptions/impl/RealSubscriptionsManagerTest.kt index 3c446200b3f8..365a165f2ae6 100644 --- a/subscriptions/subscriptions-impl/src/test/java/com/duckduckgo/subscriptions/impl/RealSubscriptionsManagerTest.kt +++ b/subscriptions/subscriptions-impl/src/test/java/com/duckduckgo/subscriptions/impl/RealSubscriptionsManagerTest.kt @@ -504,9 +504,19 @@ class RealSubscriptionsManagerTest(private val authApiV2Enabled: Boolean) { } @Test - fun whenPurchaseIfSignedInAndSubscriptionRefreshFailsThenLaunchesPurchaseFlow() = runTest { + fun whenPurchaseIfSignedInAndSubscriptionRefreshFailsWith400StatusThenLaunchesPurchaseFlow() = runTest { givenUserIsSignedIn() - givenSubscriptionFails() + givenSubscriptionFails(httpResponseCode = 400) + + subscriptionsManager.purchase(mock(), planId = "") + + verify(playBillingManager).launchBillingFlow(any(), any(), any()) + } + + @Test + fun whenPurchaseIfSignedInAndSubscriptionRefreshFailsWith404StatusThenLaunchesPurchaseFlow() = runTest { + givenUserIsSignedIn() + givenSubscriptionFails(httpResponseCode = 404) subscriptionsManager.purchase(mock(), planId = "")