diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-12-02 14:00:41 +0100 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-12-03 10:28:16 +0100 |
| commit | 41e9feafddaabc9ab42793cd4242ec5059b4136b (patch) | |
| tree | 697adf3083ff88f75f23614d7bd85a32aa74caa9 /android/lib/billing/src/test | |
| parent | ce8c122ca8983ce72d8362c7054ec318ed80b7f4 (diff) | |
| download | mullvadvpn-41e9feafddaabc9ab42793cd4242ec5059b4136b.tar.xz mullvadvpn-41e9feafddaabc9ab42793cd4242ec5059b4136b.zip | |
Add check for empty play purchase payment token
Diffstat (limited to 'android/lib/billing/src/test')
2 files changed, 47 insertions, 0 deletions
diff --git a/android/lib/billing/src/test/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepositoryTest.kt b/android/lib/billing/src/test/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepositoryTest.kt index 48618feb2b..d04c40029e 100644 --- a/android/lib/billing/src/test/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepositoryTest.kt +++ b/android/lib/billing/src/test/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepositoryTest.kt @@ -184,6 +184,32 @@ class BillingPaymentRepositoryTest { } @Test + fun `purchaseProduct should return TransactionIdError when PlayPurchasePaymentToken is empty`() = + runTest { + // Arrange + val mockProductId = ProductId("MOCK") + val mockProductDetailsResult = mockk<ProductDetailsResult>() + val mockProductDetails: ProductDetails = mockk() + every { mockProductDetails.productId } returns mockProductId.value + every { mockProductDetailsResult.billingResult.responseCode } returns + BillingResponseCode.OK + every { mockProductDetailsResult.productDetailsList } returns listOf(mockProductDetails) + coEvery { mockBillingRepository.queryProducts(listOf(mockProductId.value)) } returns + mockProductDetailsResult + coEvery { mockPlayPurchaseRepository.initializePlayPurchase() } returns + PlayPurchasePaymentToken("").right() + + // Act, Assert + paymentRepository.purchaseProduct(mockProductId, mockk()).test { + assertIs<PurchaseResult.FetchingProducts>(awaitItem()) + assertIs<PurchaseResult.FetchingObfuscationId>(awaitItem()) + val result = awaitItem() + assertIs<PurchaseResult.Error.TransactionIdError>(result) + awaitComplete() + } + } + + @Test fun `purchaseProduct should return BillingError on billing unavailable from startPurchaseFlow`() = runTest { // Arrange diff --git a/android/lib/billing/src/test/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepositoryTest.kt b/android/lib/billing/src/test/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepositoryTest.kt index 3313e2d91e..bce573a6b6 100644 --- a/android/lib/billing/src/test/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepositoryTest.kt +++ b/android/lib/billing/src/test/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepositoryTest.kt @@ -206,6 +206,27 @@ class BillingRepositoryTest { } @Test + fun `starting purchase flow with empty transaction id should return error`() = runTest { + // Arrange + val transactionId = "" + val mockProductDetails: ProductDetails = mockk(relaxed = true) + val mockActivityProvider: () -> Activity = mockk() + every { mockBillingClient.isReady } returns true + every { mockBillingClient.connectionState } returns BillingClient.ConnectionState.CONNECTED + + // Act + val result = + billingRepository.startPurchaseFlow( + mockProductDetails, + transactionId, + mockActivityProvider, + ) + + // Assert + assertEquals(BillingResponseCode.ERROR, result.responseCode) + } + + @Test fun `when billing client query purchases returns OK query purchases should return OK`() = runTest { // Arrange |
