@@ -2,13 +2,12 @@ package com.paypal.android.cardpayments
22
33import android.content.Intent
44import android.net.Uri
5+ import androidx.core.net.toUri
56import androidx.fragment.app.FragmentActivity
6- import com.braintreepayments.api.BrowserSwitchClient
7- import com.braintreepayments.api.BrowserSwitchFinalResult
8- import com.braintreepayments.api.BrowserSwitchOptions
9- import com.braintreepayments.api.BrowserSwitchStartResult
107import com.paypal.android.corepayments.BrowserSwitchRequestCodes
118import com.paypal.android.corepayments.browserswitch.BrowserSwitchClient
9+ import com.paypal.android.corepayments.browserswitch.BrowserSwitchOptions
10+ import com.paypal.android.corepayments.browserswitch.BrowserSwitchPendingState
1211import com.paypal.android.corepayments.browserswitch.BrowserSwitchStartResult
1312import io.mockk.every
1413import io.mockk.mockk
@@ -66,7 +65,7 @@ class CardAuthLauncherUnitTest {
6665 @Test
6766 fun `presentAuthChallenge() browser switches to approve order auth challenge url` () {
6867 val slot = slot<BrowserSwitchOptions >()
69- val browserSwitchResult = BrowserSwitchStartResult .Started ( " pending request " )
68+ val browserSwitchResult = BrowserSwitchStartResult .Success
7069 every { browserSwitchClient.start(activity, capture(slot)) } returns browserSwitchResult
7170
7271 val returnUrl = " merchant.app://return.com/deep-link"
@@ -81,14 +80,14 @@ class CardAuthLauncherUnitTest {
8180 val metadata = browserSwitchOptions.metadata
8281 assertEquals(" fake-order-id" , metadata?.getString(" order_id" ))
8382 assertEquals(" merchant.app" , browserSwitchOptions.returnUrlScheme)
84- assertEquals(Uri .parse(" https://fake.com/destination" ), browserSwitchOptions.url )
83+ assertEquals(Uri .parse(" https://fake.com/destination" ), browserSwitchOptions.targetUri )
8584 assertEquals(BrowserSwitchRequestCodes .CARD_APPROVE_ORDER , browserSwitchOptions.requestCode)
8685 }
8786
8887 @Test
8988 fun `presentAuthChallenge() browser switches to vault auth challenge url` () {
9089 val slot = slot<BrowserSwitchOptions >()
91- val browserSwitchResult = BrowserSwitchStartResult .Started ( " pending request " )
90+ val browserSwitchResult = BrowserSwitchStartResult .Success
9291 every { browserSwitchClient.start(activity, capture(slot)) } returns browserSwitchResult
9392
9493 val returnUrl = " merchant.app://return.com/deep-link"
@@ -103,7 +102,7 @@ class CardAuthLauncherUnitTest {
103102 val metadata = browserSwitchOptions.metadata
104103 assertEquals(" fake-setup-token-id" , metadata?.getString(" setup_token_id" ))
105104 assertEquals(" merchant.app" , browserSwitchOptions.returnUrlScheme)
106- assertEquals(Uri .parse(" https://fake.com/destination" ), browserSwitchOptions.url )
105+ assertEquals(Uri .parse(" https://fake.com/destination" ), browserSwitchOptions.targetUri )
107106 assertEquals(BrowserSwitchRequestCodes .CARD_VAULT , browserSwitchOptions.requestCode)
108107 }
109108
@@ -115,17 +114,17 @@ class CardAuthLauncherUnitTest {
115114 val domain = " example.com"
116115 val successDeepLink =
117116 " $scheme ://$domain /return_url?state=undefined&code=undefined&liability_shift=NO"
118-
119- val finalResult = createBrowserSwitchSuccessFinalResult(
120- BrowserSwitchRequestCodes .CARD_APPROVE_ORDER ,
121- approveOrderMetadata,
122- Uri .parse(successDeepLink)
117+ val options = BrowserSwitchOptions (
118+ targetUri = " https://fake.com/destination" .toUri(),
119+ requestCode = BrowserSwitchRequestCodes .CARD_APPROVE_ORDER ,
120+ returnUrlScheme = scheme,
121+ appLinkUrl = null ,
122+ metadata = approveOrderMetadata
123123 )
124- every {
125- browserSwitchClient.completeRequest(intent, " pending request" )
126- } returns finalResult
124+ val authState = BrowserSwitchPendingState (options).toBase64EncodedJSON()
125+ intent.data = successDeepLink.toUri()
127126
128- val result = sut.completeApproveOrderAuthRequest(intent, " pending request " )
127+ val result = sut.completeApproveOrderAuthRequest(intent, authState )
129128 as CardFinishApproveOrderResult .Success
130129
131130 assertEquals(" fake-order-id" , result.orderId)
@@ -140,32 +139,19 @@ class CardAuthLauncherUnitTest {
140139 val scheme = " com.paypal.android.demo"
141140 val domain = " example.com"
142141 val successDeepLink = " $scheme ://$domain /success"
143-
144- val finalResult = createBrowserSwitchSuccessFinalResult(
145- BrowserSwitchRequestCodes .CARD_VAULT ,
146- vaultMetadata,
147- Uri .parse(successDeepLink)
142+ val options = BrowserSwitchOptions (
143+ targetUri = " https://fake.com/destination" .toUri(),
144+ requestCode = BrowserSwitchRequestCodes .CARD_VAULT ,
145+ returnUrlScheme = scheme,
146+ appLinkUrl = null ,
147+ metadata = vaultMetadata
148148 )
149- every {
150- browserSwitchClient.completeRequest(intent, " pending request" )
151- } returns finalResult
149+ val authState = BrowserSwitchPendingState (options).toBase64EncodedJSON()
150+ intent.data = successDeepLink.toUri()
152151
153152 val result =
154- sut.completeVaultAuthRequest(intent, " pending request " ) as CardFinishVaultResult .Success
153+ sut.completeVaultAuthRequest(intent, authState ) as CardFinishVaultResult .Success
155154 assertEquals(" fake-setup-token-id" , result.setupTokenId)
156155 assertNull(result.status)
157156 }
158-
159- private fun createBrowserSwitchSuccessFinalResult (
160- requestCode : Int ,
161- metadata : JSONObject ,
162- deepLinkUrl : Uri
163- ): BrowserSwitchFinalResult .Success {
164- val finalResult = mockk<BrowserSwitchFinalResult .Success >(relaxed = true )
165- every { finalResult.returnUrl } returns deepLinkUrl
166- every { finalResult.requestMetadata } returns metadata
167- every { finalResult.requestCode } returns requestCode
168- every { finalResult.requestUrl } returns Uri .parse(" https://example.com/url" )
169- return finalResult
170- }
171157}
0 commit comments