@stripe/stripe-react-native 0.57.0 → 0.57.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -8
- package/android/.idea/AndroidProjectSystem.xml +6 -0
- package/android/.idea/caches/deviceStreaming.xml +1029 -0
- package/android/.idea/compiler.xml +6 -0
- package/android/.idea/gradle.xml +19 -0
- package/android/.idea/migrations.xml +10 -0
- package/android/.idea/misc.xml +10 -0
- package/android/.idea/runConfigurations.xml +17 -0
- package/android/.idea/vcs.xml +6 -0
- package/android/build.gradle +76 -118
- package/android/gradle.properties +1 -1
- package/android/local.properties +8 -0
- package/android/settings.gradle +2 -0
- package/android/spotless.gradle +1 -1
- package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormView.kt +20 -17
- package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +13 -11
- package/android/src/main/java/com/reactnativestripesdk/CardFormView.kt +17 -21
- package/android/src/main/java/com/reactnativestripesdk/CollectBankAccountLauncherManager.kt +2 -0
- package/android/src/main/java/com/reactnativestripesdk/CustomPaymentMethodActivity.kt +2 -0
- package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementView.kt +53 -11
- package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementViewManager.kt +105 -117
- package/android/src/main/java/com/reactnativestripesdk/EventEmitterCompat.kt +4 -8
- package/android/src/main/java/com/reactnativestripesdk/FakeOnrampSdkModule.kt +154 -0
- package/android/src/main/java/com/reactnativestripesdk/FinancialConnectionsSheetManager.kt +13 -15
- package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt +1 -1
- package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherManager.kt +1 -1
- package/android/src/main/java/com/reactnativestripesdk/GooglePayRequestHelper.kt +7 -5
- package/android/src/main/java/com/reactnativestripesdk/NavigationBarManager.kt +31 -0
- package/android/src/main/java/com/reactnativestripesdk/NavigationBarView.kt +120 -0
- package/android/src/main/java/com/reactnativestripesdk/PaymentElementConfig.kt +228 -0
- package/android/src/main/java/com/reactnativestripesdk/PaymentLauncherManager.kt +1 -0
- package/android/src/main/java/com/reactnativestripesdk/PaymentMethodCreateParamsFactory.kt +3 -0
- package/android/src/main/java/com/reactnativestripesdk/PaymentOptionDisplayDataMapper.kt +4 -6
- package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +73 -30
- package/android/src/main/java/com/reactnativestripesdk/PaymentSheetManager.kt +19 -245
- package/android/src/main/java/com/reactnativestripesdk/StripeAbstractComposeView.kt +53 -17
- package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +52 -14
- package/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +21 -2
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetView.kt +4 -4
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetViewManager.kt +2 -2
- package/android/src/main/java/com/reactnativestripesdk/customersheet/CustomerSheetManager.kt +15 -35
- package/android/src/main/java/com/reactnativestripesdk/customersheet/ReactNativeCustomerSessionProvider.kt +2 -1
- package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonManager.kt +5 -10
- package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonView.kt +90 -77
- package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/TapAndPayProxy.kt +6 -4
- package/android/src/main/java/com/reactnativestripesdk/utils/Errors.kt +13 -3
- package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +41 -0
- package/android/src/main/java/com/reactnativestripesdk/utils/KeepJsAwakeTask.kt +1 -1
- package/android/src/main/java/com/reactnativestripesdk/utils/Mappers.kt +92 -44
- package/android/src/oldarch/java/com/facebook/react/viewmanagers/EmbeddedPaymentElementViewManagerDelegate.java +3 -0
- package/android/src/oldarch/java/com/facebook/react/viewmanagers/EmbeddedPaymentElementViewManagerInterface.java +2 -0
- package/android/src/oldarch/java/com/reactnativestripesdk/NativeOnrampSdkModuleSpec.java +118 -0
- package/android/src/oldarch/java/com/reactnativestripesdk/NativeStripeSdkModuleSpec.java +4 -0
- package/android/src/onramp/java/com/reactnativestripesdk/OnrampSdkModule.kt +922 -0
- package/android/src/test/java/com/facebook/testutils/shadows/ShadowArguments.kt +29 -0
- package/android/src/test/java/com/reactnativestripesdk/EmbeddedPaymentElementViewManagerTest.kt +163 -0
- package/android/src/test/java/com/reactnativestripesdk/PaymentElementConfigTest.kt +976 -0
- package/android/src/test/java/com/reactnativestripesdk/PaymentSheetAppearanceTest.kt +801 -0
- package/android/src/test/java/com/reactnativestripesdk/PaymentSheetManagerTest.kt +523 -0
- package/android/src/test/java/com/reactnativestripesdk/addresssheet/AddressSheetViewTest.kt +551 -0
- package/android/src/test/java/com/reactnativestripesdk/mappers/MappersTest.kt +567 -0
- package/android/src/test/java/com/reactnativestripesdk/mappers/PaymentOptionDisplayDataMapperTest.kt +456 -0
- package/android/src/test/java/com/reactnativestripesdk/pushprovisioning/PushProvisioningProxyTest.kt +43 -0
- package/android/src/test/resources/robolectric.properties +2 -0
- package/ios/AddressSheet/AddressSheetUtils.swift +3 -3
- package/ios/AddressSheet/AddressSheetView.swift +25 -25
- package/ios/AddressSheet/AddressSheetViewManager.swift +2 -2
- package/ios/ApplePayButtonManager.swift +1 -1
- package/ios/ApplePayButtonView.swift +9 -10
- package/ios/ApplePayUtils.swift +51 -51
- package/ios/ApplePayViewController.swift +25 -29
- package/ios/AuBECSDebitFormManager.swift +1 -1
- package/ios/AuBECSDebitFormView.swift +13 -15
- package/ios/CardFieldManager.swift +4 -4
- package/ios/CardFieldView.swift +9 -9
- package/ios/CardFormManager.swift +3 -3
- package/ios/CardFormView.swift +28 -28
- package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingView.swift +97 -0
- package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewController.swift +133 -0
- package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewManager.m +16 -0
- package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewManager.swift +17 -0
- package/ios/CustomerSheet/CustomerSheetUtils.swift +15 -16
- package/ios/CustomerSheet/ReactNativeCustomerAdapter.swift +19 -19
- package/ios/EmbeddedPaymentElementView.swift +2 -2
- package/ios/Errors.swift +22 -23
- package/ios/FinancialConnections.swift +37 -37
- package/ios/Mappers.swift +210 -71
- package/ios/NavigationBarManager.m +13 -0
- package/ios/NavigationBarManager.swift +17 -0
- package/ios/NavigationBarView.swift +65 -0
- package/ios/NewArch/NavigationBarComponentView.h +10 -0
- package/ios/NewArch/NavigationBarComponentView.mm +86 -0
- package/ios/OldArch/StripeSdkEventEmitterCompat.h +1 -0
- package/ios/OldArch/StripeSdkEventEmitterCompat.m +7 -1
- package/ios/PaymentMethodFactory.swift +24 -24
- package/ios/PaymentOptionDisplayData+ReactNative.swift +4 -4
- package/ios/PaymentPassFinder.swift +9 -10
- package/ios/PaymentSheetAppearance.swift +137 -138
- package/ios/PushProvisioning/AddToWalletButtonManager.swift +2 -2
- package/ios/PushProvisioning/AddToWalletButtonView.swift +15 -17
- package/ios/PushProvisioning/PushProvisioningUtils.swift +11 -11
- package/ios/StripeContainerManager.swift +1 -1
- package/ios/StripeContainerView.swift +3 -3
- package/ios/StripeOnrampSdk.h +17 -0
- package/ios/StripeOnrampSdk.mm +158 -0
- package/ios/StripeSdk.mm +8 -0
- package/ios/StripeSdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/StripeSdk.xcodeproj/project.xcworkspace/xcuserdata/tianzhao.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/StripeSdk.xcodeproj/xcuserdata/tianzhao.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- package/ios/StripeSdkEmitter.swift +4 -0
- package/ios/StripeSdkImpl+CustomerSheet.swift +30 -25
- package/ios/StripeSdkImpl+Embedded.swift +11 -9
- package/ios/StripeSdkImpl+PaymentSheet.swift +36 -34
- package/ios/StripeSdkImpl.swift +913 -185
- package/ios/UIColorExtension.swift +72 -0
- package/lib/commonjs/components/AddToWalletButton.js +1 -1
- package/lib/commonjs/components/AddToWalletButton.js.map +1 -1
- package/lib/commonjs/components/AddressSheet.js +1 -1
- package/lib/commonjs/components/AddressSheet.js.map +1 -1
- package/lib/commonjs/components/AuBECSDebitForm.js +1 -1
- package/lib/commonjs/components/AuBECSDebitForm.js.map +1 -1
- package/lib/commonjs/components/CardField.js +1 -1
- package/lib/commonjs/components/CardField.js.map +1 -1
- package/lib/commonjs/components/CardForm.js +1 -1
- package/lib/commonjs/components/CardForm.js.map +1 -1
- package/lib/commonjs/components/PlatformPayButton.js +1 -1
- package/lib/commonjs/components/PlatformPayButton.js.map +1 -1
- package/lib/commonjs/components/StripeContainer.js +1 -1
- package/lib/commonjs/components/StripeContainer.js.map +1 -1
- package/lib/commonjs/components/StripeProvider.js +1 -1
- package/lib/commonjs/components/StripeProvider.js.map +1 -1
- package/lib/commonjs/connect/Components.js +2 -0
- package/lib/commonjs/connect/Components.js.map +1 -0
- package/lib/commonjs/connect/ConnectComponentsProvider.js +2 -0
- package/lib/commonjs/connect/ConnectComponentsProvider.js.map +1 -0
- package/lib/commonjs/connect/EmbeddedComponent.js +19 -0
- package/lib/commonjs/connect/EmbeddedComponent.js.map +1 -0
- package/lib/commonjs/connect/ModalCloseButton.js +2 -0
- package/lib/commonjs/connect/ModalCloseButton.js.map +1 -0
- package/lib/commonjs/connect/NavigationBar.js +2 -0
- package/lib/commonjs/connect/NavigationBar.js.map +1 -0
- package/lib/commonjs/connect/connectTypes.js +2 -0
- package/lib/commonjs/connect/connectTypes.js.map +1 -0
- package/lib/commonjs/events.js +1 -1
- package/lib/commonjs/events.js.map +1 -1
- package/lib/commonjs/helpers.js +1 -1
- package/lib/commonjs/helpers.js.map +1 -1
- package/lib/commonjs/hooks/useOnramp.js +2 -0
- package/lib/commonjs/hooks/useOnramp.js.map +1 -0
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/plugin/withStripe.js +1 -1
- package/lib/commonjs/plugin/withStripe.js.map +1 -1
- package/lib/commonjs/specs/NativeAddToWalletButton.js +1 -1
- package/lib/commonjs/specs/NativeAddToWalletButton.js.map +1 -1
- package/lib/commonjs/specs/NativeAddressSheet.js +1 -1
- package/lib/commonjs/specs/NativeAddressSheet.js.map +1 -1
- package/lib/commonjs/specs/NativeApplePayButton.js +1 -1
- package/lib/commonjs/specs/NativeApplePayButton.js.map +1 -1
- package/lib/commonjs/specs/NativeAuBECSDebitForm.js +1 -1
- package/lib/commonjs/specs/NativeAuBECSDebitForm.js.map +1 -1
- package/lib/commonjs/specs/NativeCardField.js +1 -1
- package/lib/commonjs/specs/NativeCardField.js.map +1 -1
- package/lib/commonjs/specs/NativeCardForm.js +1 -1
- package/lib/commonjs/specs/NativeCardForm.js.map +1 -1
- package/lib/commonjs/specs/NativeConnectAccountOnboardingView.js +2 -0
- package/lib/commonjs/specs/NativeConnectAccountOnboardingView.js.map +1 -0
- package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js +1 -1
- package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js.map +1 -1
- package/lib/commonjs/specs/NativeGooglePayButton.js +1 -1
- package/lib/commonjs/specs/NativeGooglePayButton.js.map +1 -1
- package/lib/commonjs/specs/NativeNavigationBar.js +2 -0
- package/lib/commonjs/specs/NativeNavigationBar.js.map +1 -0
- package/lib/commonjs/specs/NativeOnrampSdkModule.js +2 -0
- package/lib/commonjs/specs/NativeOnrampSdkModule.js.map +1 -0
- package/lib/commonjs/specs/NativeStripeContainer.js +1 -1
- package/lib/commonjs/specs/NativeStripeContainer.js.map +1 -1
- package/lib/commonjs/specs/NativeStripeSdkModule.js.map +1 -1
- package/lib/commonjs/types/EmbeddedPaymentElement.js +1 -1
- package/lib/commonjs/types/EmbeddedPaymentElement.js.map +1 -1
- package/lib/commonjs/types/Errors.js +1 -1
- package/lib/commonjs/types/Errors.js.map +1 -1
- package/lib/commonjs/types/Onramp.js +2 -0
- package/lib/commonjs/types/Onramp.js.map +1 -0
- package/lib/commonjs/types/PaymentSheet.js.map +1 -1
- package/lib/commonjs/types/index.js +1 -1
- package/lib/commonjs/types/index.js.map +1 -1
- package/lib/module/components/AddToWalletButton.js +1 -1
- package/lib/module/components/AddToWalletButton.js.map +1 -1
- package/lib/module/components/AddressSheet.js +1 -1
- package/lib/module/components/AddressSheet.js.map +1 -1
- package/lib/module/components/AuBECSDebitForm.js +1 -1
- package/lib/module/components/AuBECSDebitForm.js.map +1 -1
- package/lib/module/components/CardField.js +1 -1
- package/lib/module/components/CardField.js.map +1 -1
- package/lib/module/components/CardForm.js +1 -1
- package/lib/module/components/CardForm.js.map +1 -1
- package/lib/module/components/PlatformPayButton.js +1 -1
- package/lib/module/components/PlatformPayButton.js.map +1 -1
- package/lib/module/components/StripeContainer.js +1 -1
- package/lib/module/components/StripeContainer.js.map +1 -1
- package/lib/module/components/StripeProvider.js +1 -1
- package/lib/module/components/StripeProvider.js.map +1 -1
- package/lib/module/connect/Components.js +2 -0
- package/lib/module/connect/Components.js.map +1 -0
- package/lib/module/connect/ConnectComponentsProvider.js +2 -0
- package/lib/module/connect/ConnectComponentsProvider.js.map +1 -0
- package/lib/module/connect/EmbeddedComponent.js +19 -0
- package/lib/module/connect/EmbeddedComponent.js.map +1 -0
- package/lib/module/connect/ModalCloseButton.js +2 -0
- package/lib/module/connect/ModalCloseButton.js.map +1 -0
- package/lib/module/connect/NavigationBar.js +2 -0
- package/lib/module/connect/NavigationBar.js.map +1 -0
- package/lib/module/connect/connectTypes.js +2 -0
- package/lib/module/connect/connectTypes.js.map +1 -0
- package/lib/module/events.js +1 -1
- package/lib/module/events.js.map +1 -1
- package/lib/module/helpers.js +1 -1
- package/lib/module/helpers.js.map +1 -1
- package/lib/module/hooks/useOnramp.js +2 -0
- package/lib/module/hooks/useOnramp.js.map +1 -0
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/plugin/withStripe.js +1 -1
- package/lib/module/plugin/withStripe.js.map +1 -1
- package/lib/module/specs/NativeAddToWalletButton.js +1 -1
- package/lib/module/specs/NativeAddToWalletButton.js.map +1 -1
- package/lib/module/specs/NativeAddressSheet.js +1 -1
- package/lib/module/specs/NativeAddressSheet.js.map +1 -1
- package/lib/module/specs/NativeApplePayButton.js +1 -1
- package/lib/module/specs/NativeApplePayButton.js.map +1 -1
- package/lib/module/specs/NativeAuBECSDebitForm.js +1 -1
- package/lib/module/specs/NativeAuBECSDebitForm.js.map +1 -1
- package/lib/module/specs/NativeCardField.js +1 -1
- package/lib/module/specs/NativeCardField.js.map +1 -1
- package/lib/module/specs/NativeCardForm.js +1 -1
- package/lib/module/specs/NativeCardForm.js.map +1 -1
- package/lib/module/specs/NativeConnectAccountOnboardingView.js +2 -0
- package/lib/module/specs/NativeConnectAccountOnboardingView.js.map +1 -0
- package/lib/module/specs/NativeEmbeddedPaymentElement.js +1 -1
- package/lib/module/specs/NativeEmbeddedPaymentElement.js.map +1 -1
- package/lib/module/specs/NativeGooglePayButton.js +1 -1
- package/lib/module/specs/NativeGooglePayButton.js.map +1 -1
- package/lib/module/specs/NativeNavigationBar.js +2 -0
- package/lib/module/specs/NativeNavigationBar.js.map +1 -0
- package/lib/module/specs/NativeOnrampSdkModule.js +2 -0
- package/lib/module/specs/NativeOnrampSdkModule.js.map +1 -0
- package/lib/module/specs/NativeStripeContainer.js +1 -1
- package/lib/module/specs/NativeStripeContainer.js.map +1 -1
- package/lib/module/specs/NativeStripeSdkModule.js.map +1 -1
- package/lib/module/types/EmbeddedPaymentElement.js +1 -1
- package/lib/module/types/EmbeddedPaymentElement.js.map +1 -1
- package/lib/module/types/Errors.js +1 -1
- package/lib/module/types/Errors.js.map +1 -1
- package/lib/module/types/Onramp.js +2 -0
- package/lib/module/types/Onramp.js.map +1 -0
- package/lib/module/types/PaymentSheet.js.map +1 -1
- package/lib/module/types/index.js +1 -1
- package/lib/module/types/index.js.map +1 -1
- package/lib/typescript/src/components/StripeProvider.d.ts.map +1 -1
- package/lib/typescript/src/connect/Components.d.ts +23 -0
- package/lib/typescript/src/connect/Components.d.ts.map +1 -0
- package/lib/typescript/src/connect/ConnectComponentsProvider.d.ts +22 -0
- package/lib/typescript/src/connect/ConnectComponentsProvider.d.ts.map +1 -0
- package/lib/typescript/src/connect/EmbeddedComponent.d.ts +18 -0
- package/lib/typescript/src/connect/EmbeddedComponent.d.ts.map +1 -0
- package/lib/typescript/src/connect/ModalCloseButton.d.ts +7 -0
- package/lib/typescript/src/connect/ModalCloseButton.d.ts.map +1 -0
- package/lib/typescript/src/connect/NavigationBar.d.ts +8 -0
- package/lib/typescript/src/connect/NavigationBar.d.ts.map +1 -0
- package/lib/typescript/src/connect/connectTypes.d.ts +464 -0
- package/lib/typescript/src/connect/connectTypes.d.ts.map +1 -0
- package/lib/typescript/src/events.d.ts +4 -0
- package/lib/typescript/src/events.d.ts.map +1 -1
- package/lib/typescript/src/functions.d.ts.map +1 -1
- package/lib/typescript/src/helpers.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useOnramp.d.ts +158 -0
- package/lib/typescript/src/hooks/useOnramp.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/plugin/withStripe.d.ts +15 -0
- package/lib/typescript/src/plugin/withStripe.d.ts.map +1 -1
- package/lib/typescript/src/specs/NativeConnectAccountOnboardingView.d.ts +14 -0
- package/lib/typescript/src/specs/NativeConnectAccountOnboardingView.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeEmbeddedPaymentElement.d.ts +1 -0
- package/lib/typescript/src/specs/NativeEmbeddedPaymentElement.d.ts.map +1 -1
- package/lib/typescript/src/specs/NativeNavigationBar.d.ts +11 -0
- package/lib/typescript/src/specs/NativeNavigationBar.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeOnrampSdkModule.d.ts +28 -0
- package/lib/typescript/src/specs/NativeOnrampSdkModule.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts +3 -0
- package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts.map +1 -1
- package/lib/typescript/src/types/EmbeddedPaymentElement.d.ts.map +1 -1
- package/lib/typescript/src/types/Errors.d.ts +5 -0
- package/lib/typescript/src/types/Errors.d.ts.map +1 -1
- package/lib/typescript/src/types/Onramp.d.ts +275 -0
- package/lib/typescript/src/types/Onramp.d.ts.map +1 -0
- package/lib/typescript/src/types/PaymentSheet.d.ts +7 -0
- package/lib/typescript/src/types/PaymentSheet.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +7 -1
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/package.json +25 -14
- package/src/components/StripeProvider.tsx +5 -0
- package/src/connect/Components.tsx +279 -0
- package/src/connect/ConnectComponentsProvider.tsx +93 -0
- package/src/connect/EmbeddedComponent.tsx +407 -0
- package/src/connect/ModalCloseButton.tsx +44 -0
- package/src/connect/NavigationBar.tsx +29 -0
- package/src/connect/connectTypes.ts +626 -0
- package/src/events.ts +23 -0
- package/src/hooks/useOnramp.tsx +334 -0
- package/src/index.tsx +13 -0
- package/src/plugin/withStripe.ts +104 -7
- package/src/specs/NativeConnectAccountOnboardingView.ts +19 -0
- package/src/specs/NativeEmbeddedPaymentElement.ts +5 -1
- package/src/specs/NativeNavigationBar.ts +16 -0
- package/src/specs/NativeOnrampSdkModule.ts +47 -0
- package/src/specs/NativeStripeSdkModule.ts +5 -0
- package/src/types/EmbeddedPaymentElement.tsx +24 -3
- package/src/types/Errors.ts +6 -0
- package/src/types/Onramp.ts +317 -0
- package/src/types/PaymentSheet.ts +7 -0
- package/src/types/index.ts +8 -0
- package/stripe-react-native.podspec +20 -7
|
@@ -0,0 +1,976 @@
|
|
|
1
|
+
package com.reactnativestripesdk
|
|
2
|
+
|
|
3
|
+
import com.reactnativestripesdk.utils.PaymentSheetException
|
|
4
|
+
import com.reactnativestripesdk.utils.readableArrayOf
|
|
5
|
+
import com.reactnativestripesdk.utils.readableMapOf
|
|
6
|
+
import com.stripe.android.paymentelement.PaymentMethodOptionsSetupFutureUsagePreview
|
|
7
|
+
import com.stripe.android.paymentsheet.PaymentSheet
|
|
8
|
+
import org.junit.Assert.assertEquals
|
|
9
|
+
import org.junit.Assert.assertNotNull
|
|
10
|
+
import org.junit.Assert.assertNull
|
|
11
|
+
import org.junit.Test
|
|
12
|
+
import org.junit.runner.RunWith
|
|
13
|
+
import org.robolectric.RobolectricTestRunner
|
|
14
|
+
|
|
15
|
+
@RunWith(RobolectricTestRunner::class)
|
|
16
|
+
@OptIn(PaymentMethodOptionsSetupFutureUsagePreview::class)
|
|
17
|
+
class PaymentElementConfigTest {
|
|
18
|
+
// ============================================
|
|
19
|
+
// buildIntentConfiguration Tests
|
|
20
|
+
// ============================================
|
|
21
|
+
|
|
22
|
+
@Test
|
|
23
|
+
fun buildIntentConfiguration_NullParams_ReturnsNull() {
|
|
24
|
+
val result = buildIntentConfiguration(null)
|
|
25
|
+
assertNull(result)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@Test(expected = PaymentSheetException::class)
|
|
29
|
+
fun buildIntentConfiguration_MissingMode_ThrowsException() {
|
|
30
|
+
val params = readableMapOf()
|
|
31
|
+
buildIntentConfiguration(params)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@Test
|
|
35
|
+
fun buildIntentConfiguration_WithPaymentMode_Success() {
|
|
36
|
+
val params =
|
|
37
|
+
readableMapOf(
|
|
38
|
+
"mode" to
|
|
39
|
+
readableMapOf(
|
|
40
|
+
"amount" to 1000,
|
|
41
|
+
"currencyCode" to "usd",
|
|
42
|
+
),
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
val result = buildIntentConfiguration(params)
|
|
46
|
+
|
|
47
|
+
assertNotNull(result)
|
|
48
|
+
val mode = result?.mode as? PaymentSheet.IntentConfiguration.Mode.Payment
|
|
49
|
+
assertEquals(1000L, mode?.amount)
|
|
50
|
+
assertEquals("usd", mode?.currency)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@Test
|
|
54
|
+
fun buildIntentConfiguration_WithPaymentMethodTypes_Success() {
|
|
55
|
+
val params =
|
|
56
|
+
readableMapOf(
|
|
57
|
+
"mode" to
|
|
58
|
+
readableMapOf(
|
|
59
|
+
"amount" to 1000,
|
|
60
|
+
"currencyCode" to "usd",
|
|
61
|
+
),
|
|
62
|
+
"paymentMethodTypes" to readableArrayOf("card", "klarna"),
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
val result = buildIntentConfiguration(params)
|
|
66
|
+
|
|
67
|
+
assertNotNull(result)
|
|
68
|
+
assertEquals(2, result?.paymentMethodTypes?.size)
|
|
69
|
+
assertEquals("card", result?.paymentMethodTypes?.get(0))
|
|
70
|
+
assertEquals("klarna", result?.paymentMethodTypes?.get(1))
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@Test
|
|
74
|
+
fun buildIntentConfiguration_EmptyPaymentMethodTypes_ReturnsEmptyList() {
|
|
75
|
+
val params =
|
|
76
|
+
readableMapOf(
|
|
77
|
+
"mode" to
|
|
78
|
+
readableMapOf(
|
|
79
|
+
"amount" to 1000,
|
|
80
|
+
"currencyCode" to "usd",
|
|
81
|
+
),
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
val result = buildIntentConfiguration(params)
|
|
85
|
+
|
|
86
|
+
assertNotNull(result)
|
|
87
|
+
assertEquals(0, result?.paymentMethodTypes?.size)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@Test
|
|
91
|
+
fun buildIntentConfiguration_WithOnBehalfOf_Success() {
|
|
92
|
+
val params =
|
|
93
|
+
readableMapOf(
|
|
94
|
+
"mode" to
|
|
95
|
+
readableMapOf(
|
|
96
|
+
"amount" to 1000,
|
|
97
|
+
"currencyCode" to "usd",
|
|
98
|
+
),
|
|
99
|
+
"onBehalfOf" to "acct_connected_account_a",
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
val result = buildIntentConfiguration(params)
|
|
103
|
+
|
|
104
|
+
assertNotNull(result)
|
|
105
|
+
assertEquals("acct_connected_account_a", result?.onBehalfOf)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@Test
|
|
109
|
+
fun buildIntentConfiguration_WithOnBehalfOf_Failure() {
|
|
110
|
+
val params =
|
|
111
|
+
readableMapOf(
|
|
112
|
+
"mode" to
|
|
113
|
+
readableMapOf(
|
|
114
|
+
"amount" to 1000,
|
|
115
|
+
"currencyCode" to "usd",
|
|
116
|
+
),
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
val result = buildIntentConfiguration(params)
|
|
120
|
+
|
|
121
|
+
assertNotNull(result)
|
|
122
|
+
assertNull(result?.onBehalfOf)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ============================================
|
|
126
|
+
// buildIntentConfigurationMode Tests
|
|
127
|
+
// ============================================
|
|
128
|
+
|
|
129
|
+
@Test
|
|
130
|
+
fun buildIntentConfigurationMode_PaymentMode_MinimalParams() {
|
|
131
|
+
val params =
|
|
132
|
+
readableMapOf(
|
|
133
|
+
"mode" to
|
|
134
|
+
readableMapOf(
|
|
135
|
+
"amount" to 5000,
|
|
136
|
+
"currencyCode" to "eur",
|
|
137
|
+
),
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
val result = buildIntentConfiguration(params)
|
|
141
|
+
|
|
142
|
+
val mode = result?.mode as? PaymentSheet.IntentConfiguration.Mode.Payment
|
|
143
|
+
assertNotNull(mode)
|
|
144
|
+
assertEquals(5000L, mode?.amount)
|
|
145
|
+
assertEquals("eur", mode?.currency)
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@Test(expected = PaymentSheetException::class)
|
|
149
|
+
fun buildIntentConfigurationMode_PaymentMode_MissingCurrency_ThrowsException() {
|
|
150
|
+
val params =
|
|
151
|
+
readableMapOf(
|
|
152
|
+
"mode" to
|
|
153
|
+
readableMapOf(
|
|
154
|
+
"amount" to 5000,
|
|
155
|
+
),
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
buildIntentConfiguration(params)
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@Test
|
|
162
|
+
fun buildIntentConfigurationMode_PaymentMode_WithSetupFutureUsage() {
|
|
163
|
+
val params =
|
|
164
|
+
readableMapOf(
|
|
165
|
+
"mode" to
|
|
166
|
+
readableMapOf(
|
|
167
|
+
"amount" to 5000,
|
|
168
|
+
"currencyCode" to "usd",
|
|
169
|
+
"setupFutureUsage" to "OffSession",
|
|
170
|
+
),
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
val result = buildIntentConfiguration(params)
|
|
174
|
+
|
|
175
|
+
assertNotNull(result?.mode as? PaymentSheet.IntentConfiguration.Mode.Payment)
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
@Test
|
|
179
|
+
fun buildIntentConfigurationMode_PaymentMode_WithCaptureMethod() {
|
|
180
|
+
val params =
|
|
181
|
+
readableMapOf(
|
|
182
|
+
"mode" to
|
|
183
|
+
readableMapOf(
|
|
184
|
+
"amount" to 5000,
|
|
185
|
+
"currencyCode" to "usd",
|
|
186
|
+
"captureMethod" to "Manual",
|
|
187
|
+
),
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
val result = buildIntentConfiguration(params)
|
|
191
|
+
|
|
192
|
+
assertNotNull(result?.mode as? PaymentSheet.IntentConfiguration.Mode.Payment)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@Test
|
|
196
|
+
fun buildIntentConfigurationMode_PaymentMode_WithPaymentMethodOptions() {
|
|
197
|
+
val params =
|
|
198
|
+
readableMapOf(
|
|
199
|
+
"mode" to
|
|
200
|
+
readableMapOf(
|
|
201
|
+
"amount" to 5000,
|
|
202
|
+
"currencyCode" to "usd",
|
|
203
|
+
"paymentMethodOptions" to
|
|
204
|
+
readableMapOf(
|
|
205
|
+
"setupFutureUsageValues" to
|
|
206
|
+
readableMapOf(
|
|
207
|
+
"card" to "OffSession",
|
|
208
|
+
"us_bank_account" to "OnSession",
|
|
209
|
+
),
|
|
210
|
+
),
|
|
211
|
+
),
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
val result = buildIntentConfiguration(params)
|
|
215
|
+
|
|
216
|
+
assertNotNull(result?.mode as? PaymentSheet.IntentConfiguration.Mode.Payment)
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
@Test
|
|
220
|
+
fun buildIntentConfigurationMode_SetupMode_Success() {
|
|
221
|
+
val params =
|
|
222
|
+
readableMapOf(
|
|
223
|
+
"mode" to
|
|
224
|
+
readableMapOf(
|
|
225
|
+
"setupFutureUsage" to "OffSession",
|
|
226
|
+
),
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
val result = buildIntentConfiguration(params)
|
|
230
|
+
|
|
231
|
+
assertNotNull(result?.mode as? PaymentSheet.IntentConfiguration.Mode.Setup)
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
@Test
|
|
235
|
+
fun buildIntentConfigurationMode_SetupMode_WithCurrency() {
|
|
236
|
+
val params =
|
|
237
|
+
readableMapOf(
|
|
238
|
+
"mode" to
|
|
239
|
+
readableMapOf(
|
|
240
|
+
"setupFutureUsage" to "OnSession",
|
|
241
|
+
"currencyCode" to "gbp",
|
|
242
|
+
),
|
|
243
|
+
)
|
|
244
|
+
|
|
245
|
+
val result = buildIntentConfiguration(params)
|
|
246
|
+
assertNotNull(result?.mode as? PaymentSheet.IntentConfiguration.Mode.Setup)
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
@Test(expected = PaymentSheetException::class)
|
|
250
|
+
fun buildIntentConfigurationMode_SetupMode_MissingSetupFutureUsage_ThrowsException() {
|
|
251
|
+
val params =
|
|
252
|
+
readableMapOf(
|
|
253
|
+
"mode" to readableMapOf(),
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
buildIntentConfiguration(params)
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
@Test
|
|
260
|
+
fun buildIntentConfigurationMode_PaymentMode_InvalidSetupFutureUsage_UsesNull() {
|
|
261
|
+
val params =
|
|
262
|
+
readableMapOf(
|
|
263
|
+
"mode" to
|
|
264
|
+
readableMapOf(
|
|
265
|
+
"amount" to 5000,
|
|
266
|
+
"currencyCode" to "usd",
|
|
267
|
+
"setupFutureUsage" to "Unknown",
|
|
268
|
+
),
|
|
269
|
+
)
|
|
270
|
+
|
|
271
|
+
val result = buildIntentConfiguration(params)
|
|
272
|
+
|
|
273
|
+
assertNotNull(result?.mode as? PaymentSheet.IntentConfiguration.Mode.Payment)
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
@Test
|
|
277
|
+
fun buildIntentConfigurationMode_PaymentMode_InvalidCaptureMethod_DefaultsToAutomatic() {
|
|
278
|
+
val params =
|
|
279
|
+
readableMapOf(
|
|
280
|
+
"mode" to
|
|
281
|
+
readableMapOf(
|
|
282
|
+
"amount" to 5000,
|
|
283
|
+
"currencyCode" to "usd",
|
|
284
|
+
"captureMethod" to "InvalidMethod",
|
|
285
|
+
),
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
val result = buildIntentConfiguration(params)
|
|
289
|
+
|
|
290
|
+
assertNotNull(result?.mode as? PaymentSheet.IntentConfiguration.Mode.Payment)
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
@Test
|
|
294
|
+
fun buildIntentConfigurationMode_PaymentMode_NullPaymentMethodOptions() {
|
|
295
|
+
val params =
|
|
296
|
+
readableMapOf(
|
|
297
|
+
"mode" to
|
|
298
|
+
readableMapOf(
|
|
299
|
+
"amount" to 5000,
|
|
300
|
+
"currencyCode" to "usd",
|
|
301
|
+
"paymentMethodOptions" to null,
|
|
302
|
+
),
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
val result = buildIntentConfiguration(params)
|
|
306
|
+
|
|
307
|
+
assertNotNull(result?.mode as? PaymentSheet.IntentConfiguration.Mode.Payment)
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
@Test
|
|
311
|
+
fun buildIntentConfigurationMode_PaymentMode_EmptyPaymentMethodOptions() {
|
|
312
|
+
val params =
|
|
313
|
+
readableMapOf(
|
|
314
|
+
"mode" to
|
|
315
|
+
readableMapOf(
|
|
316
|
+
"amount" to 5000,
|
|
317
|
+
"currencyCode" to "usd",
|
|
318
|
+
"paymentMethodOptions" to
|
|
319
|
+
readableMapOf(
|
|
320
|
+
"setupFutureUsageValues" to readableMapOf(),
|
|
321
|
+
),
|
|
322
|
+
),
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
val result = buildIntentConfiguration(params)
|
|
326
|
+
|
|
327
|
+
assertNotNull(result?.mode as? PaymentSheet.IntentConfiguration.Mode.Payment)
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
@Test
|
|
331
|
+
fun buildIntentConfigurationMode_PaymentMode_InvalidPaymentMethodCodesInOptions() {
|
|
332
|
+
val params =
|
|
333
|
+
readableMapOf(
|
|
334
|
+
"mode" to
|
|
335
|
+
readableMapOf(
|
|
336
|
+
"amount" to 5000,
|
|
337
|
+
"currencyCode" to "usd",
|
|
338
|
+
"paymentMethodOptions" to
|
|
339
|
+
readableMapOf(
|
|
340
|
+
"setupFutureUsageValues" to
|
|
341
|
+
readableMapOf(
|
|
342
|
+
"invalid_code" to "OffSession",
|
|
343
|
+
"another_invalid" to "OnSession",
|
|
344
|
+
),
|
|
345
|
+
),
|
|
346
|
+
),
|
|
347
|
+
)
|
|
348
|
+
|
|
349
|
+
val result = buildIntentConfiguration(params)
|
|
350
|
+
|
|
351
|
+
assertNotNull(result?.mode as? PaymentSheet.IntentConfiguration.Mode.Payment)
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
@Test(expected = PaymentSheetException::class)
|
|
355
|
+
fun buildIntentConfigurationMode_SetupMode_InvalidSetupFutureUsage_ThrowsException() {
|
|
356
|
+
val params =
|
|
357
|
+
readableMapOf(
|
|
358
|
+
"mode" to
|
|
359
|
+
readableMapOf(
|
|
360
|
+
"setupFutureUsage" to "Unknown",
|
|
361
|
+
),
|
|
362
|
+
)
|
|
363
|
+
|
|
364
|
+
buildIntentConfiguration(params)
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// ============================================
|
|
368
|
+
// buildLinkConfig Tests
|
|
369
|
+
// ============================================
|
|
370
|
+
|
|
371
|
+
@Test
|
|
372
|
+
fun buildLinkConfig_NullParams_ReturnsDefaultConfig() {
|
|
373
|
+
val result = buildLinkConfig(null)
|
|
374
|
+
|
|
375
|
+
assertNotNull(result)
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
@Test
|
|
379
|
+
fun buildLinkConfig_EmptyParams_ReturnsDefaultConfig() {
|
|
380
|
+
val params = readableMapOf()
|
|
381
|
+
val result = buildLinkConfig(params)
|
|
382
|
+
|
|
383
|
+
assertNotNull(result)
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
@Test
|
|
387
|
+
fun buildLinkConfig_DisplayAutomatic() {
|
|
388
|
+
val params =
|
|
389
|
+
readableMapOf(
|
|
390
|
+
"display" to "automatic",
|
|
391
|
+
)
|
|
392
|
+
val result = buildLinkConfig(params)
|
|
393
|
+
|
|
394
|
+
assertNotNull(result)
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
@Test
|
|
398
|
+
fun buildLinkConfig_DisplayNever() {
|
|
399
|
+
val params =
|
|
400
|
+
readableMapOf(
|
|
401
|
+
"display" to "never",
|
|
402
|
+
)
|
|
403
|
+
val result = buildLinkConfig(params)
|
|
404
|
+
|
|
405
|
+
assertNotNull(result)
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
@Test
|
|
409
|
+
fun buildLinkConfig_InvalidDisplay_DefaultsToAutomatic() {
|
|
410
|
+
val params =
|
|
411
|
+
readableMapOf(
|
|
412
|
+
"display" to "invalid_value",
|
|
413
|
+
)
|
|
414
|
+
val result = buildLinkConfig(params)
|
|
415
|
+
|
|
416
|
+
assertNotNull(result)
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
// ============================================
|
|
420
|
+
// buildGooglePayConfig Tests
|
|
421
|
+
// ============================================
|
|
422
|
+
|
|
423
|
+
@Test
|
|
424
|
+
fun buildGooglePayConfig_NullParams_ReturnsNull() {
|
|
425
|
+
val result = buildGooglePayConfig(null)
|
|
426
|
+
assertNull(result)
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
@Test
|
|
430
|
+
fun buildGooglePayConfig_EmptyParams_ReturnsNull() {
|
|
431
|
+
val params = readableMapOf()
|
|
432
|
+
val result = buildGooglePayConfig(params)
|
|
433
|
+
assertNull(result)
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
@Test
|
|
437
|
+
fun buildGooglePayConfig_MinimalParams_TestEnvironment() {
|
|
438
|
+
val params =
|
|
439
|
+
readableMapOf(
|
|
440
|
+
"merchantCountryCode" to "US",
|
|
441
|
+
"currencyCode" to "usd",
|
|
442
|
+
"testEnv" to true,
|
|
443
|
+
)
|
|
444
|
+
|
|
445
|
+
val result = buildGooglePayConfig(params)
|
|
446
|
+
|
|
447
|
+
assertNotNull(result)
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
@Test
|
|
451
|
+
fun buildGooglePayConfig_ProductionEnvironment() {
|
|
452
|
+
val params =
|
|
453
|
+
readableMapOf(
|
|
454
|
+
"merchantCountryCode" to "CA",
|
|
455
|
+
"currencyCode" to "cad",
|
|
456
|
+
"testEnv" to false,
|
|
457
|
+
)
|
|
458
|
+
|
|
459
|
+
val result = buildGooglePayConfig(params)
|
|
460
|
+
|
|
461
|
+
assertNotNull(result)
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
@Test
|
|
465
|
+
fun buildGooglePayConfig_WithAmount() {
|
|
466
|
+
val params =
|
|
467
|
+
readableMapOf(
|
|
468
|
+
"merchantCountryCode" to "US",
|
|
469
|
+
"currencyCode" to "usd",
|
|
470
|
+
"testEnv" to true,
|
|
471
|
+
"amount" to "2500",
|
|
472
|
+
)
|
|
473
|
+
|
|
474
|
+
val result = buildGooglePayConfig(params)
|
|
475
|
+
|
|
476
|
+
assertNotNull(result)
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
@Test
|
|
480
|
+
fun buildGooglePayConfig_WithInvalidAmount() {
|
|
481
|
+
val params =
|
|
482
|
+
readableMapOf(
|
|
483
|
+
"merchantCountryCode" to "US",
|
|
484
|
+
"currencyCode" to "usd",
|
|
485
|
+
"testEnv" to true,
|
|
486
|
+
"amount" to "not_a_number",
|
|
487
|
+
)
|
|
488
|
+
|
|
489
|
+
val result = buildGooglePayConfig(params)
|
|
490
|
+
|
|
491
|
+
assertNotNull(result)
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
@Test
|
|
495
|
+
fun buildGooglePayConfig_WithLabel() {
|
|
496
|
+
val params =
|
|
497
|
+
readableMapOf(
|
|
498
|
+
"merchantCountryCode" to "US",
|
|
499
|
+
"currencyCode" to "usd",
|
|
500
|
+
"testEnv" to true,
|
|
501
|
+
"label" to "Total",
|
|
502
|
+
)
|
|
503
|
+
|
|
504
|
+
val result = buildGooglePayConfig(params)
|
|
505
|
+
|
|
506
|
+
assertNotNull(result)
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
@Test
|
|
510
|
+
fun buildGooglePayConfig_TestEnvNotProvided_DefaultsToFalse() {
|
|
511
|
+
val params =
|
|
512
|
+
readableMapOf(
|
|
513
|
+
"merchantCountryCode" to "US",
|
|
514
|
+
"currencyCode" to "usd",
|
|
515
|
+
)
|
|
516
|
+
|
|
517
|
+
val result = buildGooglePayConfig(params)
|
|
518
|
+
|
|
519
|
+
assertNotNull(result)
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
@Test
|
|
523
|
+
fun buildGooglePayConfig_EmptyMerchantCountryCode() {
|
|
524
|
+
val params =
|
|
525
|
+
readableMapOf(
|
|
526
|
+
"merchantCountryCode" to "",
|
|
527
|
+
"currencyCode" to "usd",
|
|
528
|
+
"testEnv" to true,
|
|
529
|
+
)
|
|
530
|
+
|
|
531
|
+
val result = buildGooglePayConfig(params)
|
|
532
|
+
|
|
533
|
+
assertNotNull(result)
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
@Test
|
|
537
|
+
fun buildGooglePayConfig_EmptyCurrencyCode() {
|
|
538
|
+
val params =
|
|
539
|
+
readableMapOf(
|
|
540
|
+
"merchantCountryCode" to "US",
|
|
541
|
+
"currencyCode" to "",
|
|
542
|
+
"testEnv" to true,
|
|
543
|
+
)
|
|
544
|
+
|
|
545
|
+
val result = buildGooglePayConfig(params)
|
|
546
|
+
|
|
547
|
+
assertNotNull(result)
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
@Test
|
|
551
|
+
fun buildGooglePayConfig_MissingMerchantCountryCode() {
|
|
552
|
+
val params =
|
|
553
|
+
readableMapOf(
|
|
554
|
+
"currencyCode" to "usd",
|
|
555
|
+
"testEnv" to true,
|
|
556
|
+
)
|
|
557
|
+
|
|
558
|
+
val result = buildGooglePayConfig(params)
|
|
559
|
+
|
|
560
|
+
assertNotNull(result)
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
@Test
|
|
564
|
+
fun buildGooglePayConfig_MissingCurrencyCode() {
|
|
565
|
+
val params =
|
|
566
|
+
readableMapOf(
|
|
567
|
+
"merchantCountryCode" to "US",
|
|
568
|
+
"testEnv" to true,
|
|
569
|
+
)
|
|
570
|
+
|
|
571
|
+
val result = buildGooglePayConfig(params)
|
|
572
|
+
|
|
573
|
+
assertNotNull(result)
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
@Test
|
|
577
|
+
fun buildGooglePayConfig_ButtonTypes() {
|
|
578
|
+
val testCases =
|
|
579
|
+
listOf(
|
|
580
|
+
1 to PaymentSheet.GooglePayConfiguration.ButtonType.Buy,
|
|
581
|
+
6 to PaymentSheet.GooglePayConfiguration.ButtonType.Book,
|
|
582
|
+
5 to PaymentSheet.GooglePayConfiguration.ButtonType.Checkout,
|
|
583
|
+
4 to PaymentSheet.GooglePayConfiguration.ButtonType.Donate,
|
|
584
|
+
11 to PaymentSheet.GooglePayConfiguration.ButtonType.Order,
|
|
585
|
+
1000 to PaymentSheet.GooglePayConfiguration.ButtonType.Pay,
|
|
586
|
+
7 to PaymentSheet.GooglePayConfiguration.ButtonType.Subscribe,
|
|
587
|
+
1001 to PaymentSheet.GooglePayConfiguration.ButtonType.Plain,
|
|
588
|
+
9999 to PaymentSheet.GooglePayConfiguration.ButtonType.Pay, // Invalid defaults to Pay
|
|
589
|
+
)
|
|
590
|
+
|
|
591
|
+
for ((buttonTypeValue) in testCases) {
|
|
592
|
+
val params =
|
|
593
|
+
readableMapOf(
|
|
594
|
+
"merchantCountryCode" to "US",
|
|
595
|
+
"currencyCode" to "usd",
|
|
596
|
+
"testEnv" to true,
|
|
597
|
+
"buttonType" to buttonTypeValue,
|
|
598
|
+
)
|
|
599
|
+
|
|
600
|
+
val result = buildGooglePayConfig(params)
|
|
601
|
+
|
|
602
|
+
assertNotNull(result)
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
@Test
|
|
607
|
+
fun buildGooglePayConfig_CompleteConfig() {
|
|
608
|
+
val params =
|
|
609
|
+
readableMapOf(
|
|
610
|
+
"merchantCountryCode" to "GB",
|
|
611
|
+
"currencyCode" to "gbp",
|
|
612
|
+
"testEnv" to false,
|
|
613
|
+
"amount" to "10000",
|
|
614
|
+
"label" to "Order Total",
|
|
615
|
+
"buttonType" to 5,
|
|
616
|
+
)
|
|
617
|
+
|
|
618
|
+
val result = buildGooglePayConfig(params)
|
|
619
|
+
|
|
620
|
+
assertNotNull(result)
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
// ============================================
|
|
624
|
+
// buildCustomerConfiguration Tests
|
|
625
|
+
// ============================================
|
|
626
|
+
|
|
627
|
+
@Test
|
|
628
|
+
fun buildCustomerConfiguration_NullParams_ReturnsNull() {
|
|
629
|
+
val result = buildCustomerConfiguration(null)
|
|
630
|
+
assertNull(result)
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
@Test
|
|
634
|
+
fun buildCustomerConfiguration_EmptyParams_ReturnsNull() {
|
|
635
|
+
val params = readableMapOf()
|
|
636
|
+
val result = buildCustomerConfiguration(params)
|
|
637
|
+
assertNull(result)
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
@Test
|
|
641
|
+
fun buildCustomerConfiguration_OnlyCustomerId_ReturnsNull() {
|
|
642
|
+
val params =
|
|
643
|
+
readableMapOf(
|
|
644
|
+
"customerId" to "cus_123",
|
|
645
|
+
)
|
|
646
|
+
|
|
647
|
+
val result = buildCustomerConfiguration(params)
|
|
648
|
+
assertNull(result)
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
@Test
|
|
652
|
+
fun buildCustomerConfiguration_WithEphemeralKey_Success() {
|
|
653
|
+
val params =
|
|
654
|
+
readableMapOf(
|
|
655
|
+
"customerId" to "cus_123",
|
|
656
|
+
"customerEphemeralKeySecret" to "ek_test_123",
|
|
657
|
+
)
|
|
658
|
+
|
|
659
|
+
val result = buildCustomerConfiguration(params)
|
|
660
|
+
|
|
661
|
+
assertNotNull(result)
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
@Test
|
|
665
|
+
fun buildCustomerConfiguration_WithCustomerSession_Success() {
|
|
666
|
+
val params =
|
|
667
|
+
readableMapOf(
|
|
668
|
+
"customerId" to "cus_456",
|
|
669
|
+
"customerSessionClientSecret" to "cuss_test_456",
|
|
670
|
+
)
|
|
671
|
+
|
|
672
|
+
val result = buildCustomerConfiguration(params)
|
|
673
|
+
|
|
674
|
+
assertNotNull(result)
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
@Test(expected = PaymentSheetException::class)
|
|
678
|
+
fun buildCustomerConfiguration_BothSecretsProvided_ThrowsException() {
|
|
679
|
+
val params =
|
|
680
|
+
readableMapOf(
|
|
681
|
+
"customerId" to "cus_789",
|
|
682
|
+
"customerEphemeralKeySecret" to "ek_test_789",
|
|
683
|
+
"customerSessionClientSecret" to "cuss_test_789",
|
|
684
|
+
)
|
|
685
|
+
|
|
686
|
+
buildCustomerConfiguration(params)
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
@Test
|
|
690
|
+
fun buildCustomerConfiguration_OnlyEphemeralKey_NoCustomerId_ReturnsNull() {
|
|
691
|
+
val params =
|
|
692
|
+
readableMapOf(
|
|
693
|
+
"customerEphemeralKeySecret" to "ek_test_123",
|
|
694
|
+
)
|
|
695
|
+
|
|
696
|
+
val result = buildCustomerConfiguration(params)
|
|
697
|
+
assertNull(result)
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
@Test
|
|
701
|
+
fun buildCustomerConfiguration_OnlyCustomerSession_NoCustomerId_ReturnsNull() {
|
|
702
|
+
val params =
|
|
703
|
+
readableMapOf(
|
|
704
|
+
"customerSessionClientSecret" to "cuss_test_456",
|
|
705
|
+
)
|
|
706
|
+
|
|
707
|
+
val result = buildCustomerConfiguration(params)
|
|
708
|
+
assertNull(result)
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
// ============================================
|
|
712
|
+
// buildBillingDetails Tests
|
|
713
|
+
// ============================================
|
|
714
|
+
|
|
715
|
+
@Test
|
|
716
|
+
fun buildBillingDetails_NullMap_ReturnsNull() {
|
|
717
|
+
val result = buildBillingDetails(null)
|
|
718
|
+
assertNull(result)
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
@Test
|
|
722
|
+
fun buildBillingDetails_EmptyMap_ReturnsEmptyBillingDetails() {
|
|
723
|
+
val params = readableMapOf()
|
|
724
|
+
|
|
725
|
+
val result = buildBillingDetails(params)
|
|
726
|
+
assertNotNull(result)
|
|
727
|
+
assertNotNull(result!!.address)
|
|
728
|
+
assertNull(result.address?.city)
|
|
729
|
+
assertNull(result.address?.country)
|
|
730
|
+
assertNull(result.address?.line1)
|
|
731
|
+
assertNull(result.address?.line2)
|
|
732
|
+
assertNull(result.address?.postalCode)
|
|
733
|
+
assertNull(result.address?.state)
|
|
734
|
+
assertNull(result.email)
|
|
735
|
+
assertNull(result.name)
|
|
736
|
+
assertNull(result.phone)
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
@Test
|
|
740
|
+
fun buildBillingDetails_FullDetails_ReturnsComplete() {
|
|
741
|
+
val params =
|
|
742
|
+
readableMapOf(
|
|
743
|
+
"email" to "test@example.com",
|
|
744
|
+
"name" to "John Doe",
|
|
745
|
+
"phone" to "+1234567890",
|
|
746
|
+
"address" to
|
|
747
|
+
readableMapOf(
|
|
748
|
+
"city" to "San Francisco",
|
|
749
|
+
"country" to "US",
|
|
750
|
+
"line1" to "123 Main St",
|
|
751
|
+
"line2" to "Apt 4",
|
|
752
|
+
"postalCode" to "94111",
|
|
753
|
+
"state" to "CA",
|
|
754
|
+
),
|
|
755
|
+
)
|
|
756
|
+
|
|
757
|
+
val result = buildBillingDetails(params)
|
|
758
|
+
assertNotNull(result)
|
|
759
|
+
assertEquals("test@example.com", result!!.email)
|
|
760
|
+
assertEquals("John Doe", result.name)
|
|
761
|
+
assertEquals("+1234567890", result.phone)
|
|
762
|
+
assertNotNull(result.address)
|
|
763
|
+
assertEquals("San Francisco", result.address?.city)
|
|
764
|
+
assertEquals("US", result.address?.country)
|
|
765
|
+
assertEquals("123 Main St", result.address?.line1)
|
|
766
|
+
assertEquals("Apt 4", result.address?.line2)
|
|
767
|
+
assertEquals("94111", result.address?.postalCode)
|
|
768
|
+
assertEquals("CA", result.address?.state)
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
@Test
|
|
772
|
+
fun buildBillingDetails_OnlyEmail_ReturnsPartialDetails() {
|
|
773
|
+
val params =
|
|
774
|
+
readableMapOf(
|
|
775
|
+
"email" to "test@example.com",
|
|
776
|
+
)
|
|
777
|
+
|
|
778
|
+
val result = buildBillingDetails(params)
|
|
779
|
+
assertNotNull(result)
|
|
780
|
+
assertEquals("test@example.com", result!!.email)
|
|
781
|
+
assertNull(result.name)
|
|
782
|
+
assertNull(result.phone)
|
|
783
|
+
assertNotNull(result.address)
|
|
784
|
+
assertNull(result.address?.city)
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
@Test
|
|
788
|
+
fun buildBillingDetails_OnlyName_ReturnsPartialDetails() {
|
|
789
|
+
val params =
|
|
790
|
+
readableMapOf(
|
|
791
|
+
"name" to "John Doe",
|
|
792
|
+
)
|
|
793
|
+
|
|
794
|
+
val result = buildBillingDetails(params)
|
|
795
|
+
assertNotNull(result)
|
|
796
|
+
assertNull(result!!.email)
|
|
797
|
+
assertEquals("John Doe", result.name)
|
|
798
|
+
assertNull(result.phone)
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
@Test
|
|
802
|
+
fun buildBillingDetails_OnlyPhone_ReturnsPartialDetails() {
|
|
803
|
+
val params =
|
|
804
|
+
readableMapOf(
|
|
805
|
+
"phone" to "+1234567890",
|
|
806
|
+
)
|
|
807
|
+
|
|
808
|
+
val result = buildBillingDetails(params)
|
|
809
|
+
assertNotNull(result)
|
|
810
|
+
assertNull(result!!.email)
|
|
811
|
+
assertNull(result.name)
|
|
812
|
+
assertEquals("+1234567890", result.phone)
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
@Test
|
|
816
|
+
fun buildBillingDetails_OnlyAddress_ReturnsPartialDetails() {
|
|
817
|
+
val params =
|
|
818
|
+
readableMapOf(
|
|
819
|
+
"address" to
|
|
820
|
+
readableMapOf(
|
|
821
|
+
"city" to "San Francisco",
|
|
822
|
+
"country" to "US",
|
|
823
|
+
),
|
|
824
|
+
)
|
|
825
|
+
|
|
826
|
+
val result = buildBillingDetails(params)
|
|
827
|
+
assertNotNull(result)
|
|
828
|
+
assertNull(result!!.email)
|
|
829
|
+
assertNull(result.name)
|
|
830
|
+
assertNull(result.phone)
|
|
831
|
+
assertNotNull(result.address)
|
|
832
|
+
assertEquals("San Francisco", result.address?.city)
|
|
833
|
+
assertEquals("US", result.address?.country)
|
|
834
|
+
assertNull(result.address?.line1)
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
@Test
|
|
838
|
+
fun buildBillingDetails_PartialAddress_ReturnsPartialDetails() {
|
|
839
|
+
val params =
|
|
840
|
+
readableMapOf(
|
|
841
|
+
"email" to "test@example.com",
|
|
842
|
+
"address" to
|
|
843
|
+
readableMapOf(
|
|
844
|
+
"line1" to "123 Main St",
|
|
845
|
+
"postalCode" to "94111",
|
|
846
|
+
),
|
|
847
|
+
)
|
|
848
|
+
|
|
849
|
+
val result = buildBillingDetails(params)
|
|
850
|
+
assertNotNull(result)
|
|
851
|
+
assertEquals("test@example.com", result!!.email)
|
|
852
|
+
assertNotNull(result.address)
|
|
853
|
+
assertNull(result.address?.city)
|
|
854
|
+
assertNull(result.address?.country)
|
|
855
|
+
assertEquals("123 Main St", result.address?.line1)
|
|
856
|
+
assertNull(result.address?.line2)
|
|
857
|
+
assertEquals("94111", result.address?.postalCode)
|
|
858
|
+
assertNull(result.address?.state)
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
@Test
|
|
862
|
+
fun buildBillingDetails_EmptyAddress_ReturnsEmptyAddressObject() {
|
|
863
|
+
val params =
|
|
864
|
+
readableMapOf(
|
|
865
|
+
"email" to "test@example.com",
|
|
866
|
+
"address" to readableMapOf(),
|
|
867
|
+
)
|
|
868
|
+
|
|
869
|
+
val result = buildBillingDetails(params)
|
|
870
|
+
assertNotNull(result)
|
|
871
|
+
assertEquals("test@example.com", result!!.email)
|
|
872
|
+
assertNotNull(result.address)
|
|
873
|
+
assertNull(result.address?.city)
|
|
874
|
+
assertNull(result.address?.country)
|
|
875
|
+
assertNull(result.address?.line1)
|
|
876
|
+
assertNull(result.address?.line2)
|
|
877
|
+
assertNull(result.address?.postalCode)
|
|
878
|
+
assertNull(result.address?.state)
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
@Test
|
|
882
|
+
fun buildBillingDetails_MixedFields_ReturnsPartialDetails() {
|
|
883
|
+
val params =
|
|
884
|
+
readableMapOf(
|
|
885
|
+
"name" to "Jane Smith",
|
|
886
|
+
"address" to
|
|
887
|
+
readableMapOf(
|
|
888
|
+
"country" to "CA",
|
|
889
|
+
"state" to "ON",
|
|
890
|
+
),
|
|
891
|
+
)
|
|
892
|
+
|
|
893
|
+
val result = buildBillingDetails(params)
|
|
894
|
+
assertNotNull(result)
|
|
895
|
+
assertNull(result!!.email)
|
|
896
|
+
assertEquals("Jane Smith", result.name)
|
|
897
|
+
assertNull(result.phone)
|
|
898
|
+
assertNotNull(result.address)
|
|
899
|
+
assertNull(result.address?.city)
|
|
900
|
+
assertEquals("CA", result.address?.country)
|
|
901
|
+
assertNull(result.address?.line1)
|
|
902
|
+
assertNull(result.address?.line2)
|
|
903
|
+
assertNull(result.address?.postalCode)
|
|
904
|
+
assertEquals("ON", result.address?.state)
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
// ============================================
|
|
908
|
+
// buildBillingDetailsCollectionConfiguration Tests
|
|
909
|
+
// ============================================
|
|
910
|
+
|
|
911
|
+
@Test
|
|
912
|
+
fun buildBillingDetailsCollectionConfiguration_NullMap_ReturnsDefaults() {
|
|
913
|
+
val result = buildBillingDetailsCollectionConfiguration(null)
|
|
914
|
+
assertNotNull(result)
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
@Test
|
|
918
|
+
fun buildBillingDetailsCollectionConfiguration_EmptyMap_ReturnsDefaults() {
|
|
919
|
+
val params = readableMapOf()
|
|
920
|
+
|
|
921
|
+
val result = buildBillingDetailsCollectionConfiguration(params)
|
|
922
|
+
assertNotNull(result)
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
@Test
|
|
926
|
+
fun buildBillingDetailsCollectionConfiguration_AllFieldsSet_ReturnsComplete() {
|
|
927
|
+
val params =
|
|
928
|
+
readableMapOf(
|
|
929
|
+
"name" to "always",
|
|
930
|
+
"phone" to "never",
|
|
931
|
+
"email" to "automatic",
|
|
932
|
+
"address" to "full",
|
|
933
|
+
"attachDefaultsToPaymentMethod" to true,
|
|
934
|
+
)
|
|
935
|
+
|
|
936
|
+
val result = buildBillingDetailsCollectionConfiguration(params)
|
|
937
|
+
assertNotNull(result)
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
@Test
|
|
941
|
+
fun buildBillingDetailsCollectionConfiguration_PartialFields_ReturnsPartial() {
|
|
942
|
+
val params =
|
|
943
|
+
readableMapOf(
|
|
944
|
+
"name" to "always",
|
|
945
|
+
"address" to "never",
|
|
946
|
+
)
|
|
947
|
+
|
|
948
|
+
val result = buildBillingDetailsCollectionConfiguration(params)
|
|
949
|
+
assertNotNull(result)
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
@Test
|
|
953
|
+
fun buildBillingDetailsCollectionConfiguration_InvalidValues_DefaultsToAutomatic() {
|
|
954
|
+
val params =
|
|
955
|
+
readableMapOf(
|
|
956
|
+
"name" to "invalid",
|
|
957
|
+
"phone" to "wrong",
|
|
958
|
+
"email" to "bad",
|
|
959
|
+
"address" to "incorrect",
|
|
960
|
+
)
|
|
961
|
+
|
|
962
|
+
val result = buildBillingDetailsCollectionConfiguration(params)
|
|
963
|
+
assertNotNull(result)
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
@Test
|
|
967
|
+
fun buildBillingDetailsCollectionConfiguration_AttachDefaultsFalse() {
|
|
968
|
+
val params =
|
|
969
|
+
readableMapOf(
|
|
970
|
+
"attachDefaultsToPaymentMethod" to false,
|
|
971
|
+
)
|
|
972
|
+
|
|
973
|
+
val result = buildBillingDetailsCollectionConfiguration(params)
|
|
974
|
+
assertNotNull(result)
|
|
975
|
+
}
|
|
976
|
+
}
|