summaryrefslogtreecommitdiffhomepage
path: root/android/lib/billing/src/test
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-12-02 14:00:41 +0100
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-12-03 10:28:16 +0100
commit41e9feafddaabc9ab42793cd4242ec5059b4136b (patch)
tree697adf3083ff88f75f23614d7bd85a32aa74caa9 /android/lib/billing/src/test
parentce8c122ca8983ce72d8362c7054ec318ed80b7f4 (diff)
downloadmullvadvpn-41e9feafddaabc9ab42793cd4242ec5059b4136b.tar.xz
mullvadvpn-41e9feafddaabc9ab42793cd4242ec5059b4136b.zip
Add check for empty play purchase payment token
Diffstat (limited to 'android/lib/billing/src/test')
-rw-r--r--android/lib/billing/src/test/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepositoryTest.kt26
-rw-r--r--android/lib/billing/src/test/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingRepositoryTest.kt21
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