Skip to content

Integration Tests: fixed testPurchaseWithAskToBuyPostsReceipt#2040

Merged
NachoSoto merged 1 commit into
mainfrom
integration-test-ask-to-buy
Nov 9, 2022
Merged

Integration Tests: fixed testPurchaseWithAskToBuyPostsReceipt#2040
NachoSoto merged 1 commit into
mainfrom
integration-test-ask-to-buy

Conversation

@NachoSoto

@NachoSoto NachoSoto commented Nov 9, 2022

Copy link
Copy Markdown
Contributor

Fixes https://app.circleci.com/pipelines/github/RevenueCat/purchases-ios/8800/workflows/15003c88-3322-4c55-8cc4-e44d4494b9c3/jobs/43446/tests

This was failing with StoreKit 2 (probably a recent SKTestSession/StoreKit change since it used to pass):

[00:51:46]: ▸ 2022-11-09 00:51:46.820614+0000 BackendIntegrationTestsHostApp[4240:21475] [Default] [StoreKit] Received error that does not have a corresponding StoreKit Error:
[00:51:46]: ▸ Error Domain=ASDServerErrorDomain Code=3532 "You’re currently subscribed to this." UserInfo={storefront-country-code=USA, client-environment-type=XcodeTest(/Users/distiller/Library/Developer/CoreSimulator/Devices/E616C409-03A4-4A07-B2DC-FFF7544CBCCD/data/Containers/Shared/App ... tTestApp), AMSServerErrorCode=3532, NSLocalizedDescription=You’re currently subscribed to this.}
[00:51:46]: ▸ 2022-11-09 00:51:46.820780+0000 BackendIntegrationTestsHostApp[4240:21475] [Default] [StoreKit] Purchase did not return a transaction: Error Domain=ASDServerErrorDomain Code=3532 "You’re currently subscribed to this." UserInfo={storefront-country-code=USA, client-environment-type=XcodeTest(/Users/distiller/Library/Developer/CoreSimulator/Devices/E616C409-03A4-4A07-B2DC-FFF7544CBCCD/data/Containers/Shared/App ... tTestApp), AMSServerErrorCode=3532, NSLocalizedDescription=You’re currently subscribed to this.}
[00:51:46]: ▸ 2022-11-09 00:51:46.821036+0000 BackendIntegrationTestsHostApp[4240:21475] [Purchases] - ERROR: 🍎‼️ There was a problem with the App Store.
[00:51:46]: ▸ 2022-11-09 00:51:46.821236+0000 BackendIntegrationTestsHostApp[4240:21475] [Purchases] - ERROR: 💰 Product purchase for 'com.revenuecat.monthly_4.99.1_week_intro' failed with error: PurchasesError(error: There was a problem with the App Store., userInfo: ["readable_error_code": "STORE_PROBLEM", "NSLocalizedDescription": "There was a problem with the App Store.", "source_file": "RevenueCat/StoreKitError+Extensions.swift:43", "source_function": "asPurchasesError", "NSUnderlyingError": StoreKit.StoreKitError.unknown])
[00:51:46]: ▸ <unknown>:0: error: -[BackendIntegrationTests.StoreKit2IntegrationTests testPurchaseWithAskToBuyPostsReceipt] : failed: caught error: "There was a problem with the App Store."
[00:51:46]: ▸ Test Case '-[BackendIntegrationTests.StoreKit2IntegrationTests testPurchaseWithAskToBuyPostsReceipt]' failed (0.827 seconds).

With this change, instead of trying to purchase it again, we simply restore purchases to confirm that the purchase went through after approving it.

This was failing with `StoreKit 2` (probably a recent `SKTestSession`/`StoreKit` change since it used to pass):
```
[00:51:46]: ▸ 2022-11-09 00:51:46.820614+0000 BackendIntegrationTestsHostApp[4240:21475] [Default] [StoreKit] Received error that does not have a corresponding StoreKit Error:
[00:51:46]: ▸ Error Domain=ASDServerErrorDomain Code=3532 "You’re currently subscribed to this." UserInfo={storefront-country-code=USA, client-environment-type=XcodeTest(/Users/distiller/Library/Developer/CoreSimulator/Devices/E616C409-03A4-4A07-B2DC-FFF7544CBCCD/data/Containers/Shared/App ... tTestApp), AMSServerErrorCode=3532, NSLocalizedDescription=You’re currently subscribed to this.}
[00:51:46]: ▸ 2022-11-09 00:51:46.820780+0000 BackendIntegrationTestsHostApp[4240:21475] [Default] [StoreKit] Purchase did not return a transaction: Error Domain=ASDServerErrorDomain Code=3532 "You’re currently subscribed to this." UserInfo={storefront-country-code=USA, client-environment-type=XcodeTest(/Users/distiller/Library/Developer/CoreSimulator/Devices/E616C409-03A4-4A07-B2DC-FFF7544CBCCD/data/Containers/Shared/App ... tTestApp), AMSServerErrorCode=3532, NSLocalizedDescription=You’re currently subscribed to this.}
[00:51:46]: ▸ 2022-11-09 00:51:46.821036+0000 BackendIntegrationTestsHostApp[4240:21475] [Purchases] - ERROR: 🍎‼️ There was a problem with the App Store.
[00:51:46]: ▸ 2022-11-09 00:51:46.821236+0000 BackendIntegrationTestsHostApp[4240:21475] [Purchases] - ERROR: 💰 Product purchase for 'com.revenuecat.monthly_4.99.1_week_intro' failed with error: PurchasesError(error: There was a problem with the App Store., userInfo: ["readable_error_code": "STORE_PROBLEM", "NSLocalizedDescription": "There was a problem with the App Store.", "source_file": "RevenueCat/StoreKitError+Extensions.swift:43", "source_function": "asPurchasesError", "NSUnderlyingError": StoreKit.StoreKitError.unknown])
[00:51:46]: ▸ <unknown>:0: error: -[BackendIntegrationTests.StoreKit2IntegrationTests testPurchaseWithAskToBuyPostsReceipt] : failed: caught error: "There was a problem with the App Store."
[00:51:46]: ▸ Test Case '-[BackendIntegrationTests.StoreKit2IntegrationTests testPurchaseWithAskToBuyPostsReceipt]' failed (0.827 seconds).
```

With this change, instead of trying to purchase it again, we simply restore purchases to confirm that the purchase went through after approving it.
@NachoSoto NachoSoto added the test label Nov 9, 2022
@NachoSoto NachoSoto requested a review from a team November 9, 2022 01:04
@NachoSoto NachoSoto force-pushed the integration-test-ask-to-buy branch from 277e074 to f36d99c Compare November 9, 2022 14:26
@NachoSoto NachoSoto merged commit 3bf237a into main Nov 9, 2022
@NachoSoto NachoSoto deleted the integration-test-ask-to-buy branch November 9, 2022 14:27
NachoSoto pushed a commit that referenced this pull request Nov 9, 2022
**This is an automatic release.**

### Bugfixes
* `ISO8601DateFormatter.withMilliseconds`: fixed iOS 11 crash (#2037)
via NachoSoto (@NachoSoto)
* Changed `StoreKit2Setting.default` back to
`.enabledOnlyForOptimizations` (#2022) via NachoSoto (@NachoSoto)
### Other Changes
* `Integration Tests`: changed weekly to monthly subscriptions to work
around 0-second subscriptions (#2042) via NachoSoto (@NachoSoto)
* `Integration Tests`: fixed `testPurchaseWithAskToBuyPostsReceipt`
(#2040) via NachoSoto (@NachoSoto)
* `ReceiptRefreshPolicy.retryUntilProductIsFound`: default to returning
"invalid" receipt (#2024) via NachoSoto (@NachoSoto)
* `CachingProductsManager`: use partial cached products (#2014) via
NachoSoto (@NachoSoto)
* Added `BackendErrorCode.purchasedProductMissingInAppleReceipt` (#2033)
via NachoSoto (@NachoSoto)
* `PurchaseTesterSwiftUI`: replaced `Purchases` dependency with `SPM`
(#2027) via NachoSoto (@NachoSoto)
* `Integration Tests`: changed log output to `raw` (#2031) via NachoSoto
(@NachoSoto)
* `Integration Tests`: run on iOS 16 (#2035) via NachoSoto (@NachoSoto)
* CI: fixed `iOS 14` tests Xcode version (#2030) via NachoSoto
(@NachoSoto)
* `Async.call`: added non-throwing overload (#2006) via NachoSoto
(@NachoSoto)
* Documentation: Fixed references in `V4_API_Migration_guide.md` (#2018)
via NachoSoto (@NachoSoto)
* `eligiblePromotionalOffers`: don't log error if response is ineligible
(#2019) via NachoSoto (@NachoSoto)
* Runs push-pods after make-release (#2025) via Cesar de la Vega
(@vegaro)
* Some updates on notify-on-non-patch-release-branches: (#2026) via
Cesar de la Vega (@vegaro)
* Deploy `PurchaseTesterSwiftUI` to TestFlight (#2003) via NachoSoto
(@NachoSoto)
* `PurchaseTesterSwiftUI`: added "logs" screen (#2012) via NachoSoto
(@NachoSoto)
* `PurchaseTesterSwiftUI`: allow configuring API key at runtime (#1999)
via NachoSoto (@NachoSoto)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants