diff --git a/Sources/Brave/Frontend/Browser/BrowserViewController.swift b/Sources/Brave/Frontend/Browser/BrowserViewController.swift index a71a1c24bdd..6ae51ade15a 100644 --- a/Sources/Brave/Frontend/Browser/BrowserViewController.swift +++ b/Sources/Brave/Frontend/Browser/BrowserViewController.swift @@ -1101,8 +1101,12 @@ public class BrowserViewController: UIViewController { } } - private func checkCrashRestorationOrSetupTabs() { - setupTabs() + private func checkCrashRestorationOrSetupTabs() { + if crashedLastSession { + showRestoreTabsAlert() + } else { + setupTabs() + } } fileprivate func showRestoreTabsAlert() { diff --git a/Tests/BraveVPNTests/BraveVPNTests.swift b/Tests/BraveVPNTests/BraveVPNTests.swift index 3e639bf123b..c5fa7ab32e3 100644 --- a/Tests/BraveVPNTests/BraveVPNTests.swift +++ b/Tests/BraveVPNTests/BraveVPNTests.swift @@ -8,6 +8,7 @@ import Foundation import BraveShared import XCTest import GuardianConnect +import Preferences class BraveVPNTests: XCTestCase { @@ -71,11 +72,24 @@ class BraveVPNTests: XCTestCase { "auto_renew_status": "0", "is_in_billing_retry_period": "true"] + let gracePeriod = 16 // days + let modifiedDateWithGracePeriod = Calendar.current.date(byAdding: .day, value: gracePeriod, to: Date())! + let gracePeriodExpiryInMs = Int(modifiedDateWithGracePeriod.timeIntervalSince1970 * 1000) + + let lineItemMetaDataIsInRetryPeriodWithGraceExpiry: NSDictionary = [ + "product_id": "bravevpn.yearly", + "original_transaction_id": "2000000159090000", + "auto_renew_product_id": "bravevpn.yearly", + "auto_renew_status": "0", + "grace_period_expires_date_ms": String(gracePeriodExpiryInMs), + "is_in_billing_retry_period": "true"] + subjectActivePeriodRenewableNotInTrial = generateReceiptResponse(using: lineItemPurchasedNotInTrial, metaData: lineItemMetaDataAutoRenewEnabled) subjectActivePeriodRenewableInTrial = generateReceiptResponse(using: lineItemPurchasedInTrial, metaData: lineItemMetaDataAutoRenewEnabled) subjectActivePeriodNotRenewable = generateReceiptResponse(using: lineItemPurchasedNotInTrial, metaData: lineItemMetaDataAutoRenewCanceled) subjectRetryPeriod = generateReceiptResponse(using: lineItemPurchasedNotInTrial, metaData: lineItemMetaDataIsInRetryPeriod) + subjectRetryPeriodNoMetaGraceExpiry = generateReceiptResponse(using: nil, metaData: lineItemMetaDataIsInRetryPeriodWithGraceExpiry) subjectExpiredPeriod = generateReceiptResponse(using: nil, metaData: lineItemMetaDataAutoRenewCanceled) } @@ -87,6 +101,9 @@ class BraveVPNTests: XCTestCase { subjectExpiredPeriod = nil super.tearDown() + + Preferences.VPN.expirationDate.reset() + Preferences.VPN.gracePeriodExpirationDate.reset() } func testSubscriptionActiveAutoRenewEnabledNotInTrial() { @@ -120,6 +137,14 @@ class BraveVPNTests: XCTestCase { XCTAssertFalse(processedLineItem.isInTrialPeriod) } + func testSubscriptionIsInNoMetaGraceExpiry() { + let processedLineItem = BraveVPN.processReceiptResponse(receiptResponseItem: subjectRetryPeriodNoMetaGraceExpiry) + + XCTAssertTrue(processedLineItem.status == .retryPeriod) + XCTAssertFalse(processedLineItem.autoRenewEnabled) + XCTAssertFalse(processedLineItem.isInTrialPeriod) + } + func testSubscriptionExpiredPeriod() { let processedLineItem = BraveVPN.processReceiptResponse(receiptResponseItem: subjectExpiredPeriod) @@ -153,5 +178,6 @@ class BraveVPNTests: XCTestCase { private var subjectActivePeriodRenewableInTrial: GRDIAPReceiptResponse! private var subjectActivePeriodNotRenewable: GRDIAPReceiptResponse! private var subjectRetryPeriod: GRDIAPReceiptResponse! + private var subjectRetryPeriodNoMetaGraceExpiry: GRDIAPReceiptResponse! private var subjectExpiredPeriod: GRDIAPReceiptResponse! }