From 5e550dd4ced1aff0180bba0e1805c260ee82140e Mon Sep 17 00:00:00 2001 From: Mel <78050250+mludowise-stripe@users.noreply.github.com> Date: Thu, 8 Jul 2021 15:03:22 -0700 Subject: [PATCH] MOBILESDK-291: Migrate tests to StripeCore and add tests to CI (#276) StripeCore tests: - Migrated tests specific to classes in `StripeCore` to `StripeCoreTests` - Created a `StripeCoreTestUtils` target to contain `MockAnalyticsClient` so the mock can be included in test targets for multiple SDKs - Added StripeCore tests to `Fastfile` & `circleci/config.yml` so they'll run on our CI - Updated the [Configure Tests](https://confluence.corp.stripe.com/display/~mludowise/%5BWIP%5D+iOS+SDK+Runbook%3A+Adding+a+new+module#id-[WIP]iOSSDKRunbook:Addinganewmodule-ConfigureTests) portion of our runbook for adding a new module to match the steps taken in this PR Cleanup: - Renamed `main_tests` and `standard-tests` to `stripeios-tests` in the Fastfile & circle yml so our test names match the module they're testing - Added `DEFAULT_TEST_DEVICE` and `DEFAULT_TEST_VERSION` consts to our Fastfile to help ensure consistent testing platforms across our tests as we add more modules --- .circleci/config.yml | 19 +- Stripe.xcodeproj/project.pbxproj | 16 - .../StripeCore.xcodeproj/project.pbxproj | 287 ++++++++++++++++++ StripeCore/StripeCoreTestUtils/Info.plist | 22 ++ .../Mocks}/MockAnalyticsClient.swift | 12 +- .../StripeCoreTestUtils/StripeCoreTestUtils.h | 18 ++ .../Analytics}/STPAnalyticsClientTest.swift | 4 +- .../NSMutableURLRequest+StripeTest.swift | 8 +- .../Helpers}/URLEncoderTest.swift | 4 +- fastlane/Fastfile | 25 +- 10 files changed, 373 insertions(+), 42 deletions(-) create mode 100644 StripeCore/StripeCoreTestUtils/Info.plist rename {Tests/Tests => StripeCore/StripeCoreTestUtils/Mocks}/MockAnalyticsClient.swift (61%) create mode 100644 StripeCore/StripeCoreTestUtils/StripeCoreTestUtils.h rename {Tests/Tests => StripeCore/StripeCoreTests/Analytics}/STPAnalyticsClientTest.swift (90%) rename {Tests/Tests => StripeCore/StripeCoreTests/Categories}/NSMutableURLRequest+StripeTest.swift (91%) rename {Tests/Tests => StripeCore/StripeCoreTests/Helpers}/URLEncoderTest.swift (94%) diff --git a/.circleci/config.yml b/.circleci/config.yml index c02f49b797..9501e5c49d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -61,14 +61,24 @@ jobs: paths: - . - standard-tests: + stripeios-tests: executor: mac-executor steps: - attach_workspace: at: . - prep_environment - - run: "bundle exec fastlane main_tests" + - run: "bundle exec fastlane stripeios_tests" + - archive_logs + + stripecore-tests: + executor: mac-executor + + steps: + - attach_workspace: + at: . + - prep_environment + - run: "bundle exec fastlane stripecore_tests" - archive_logs e2e-only: @@ -186,7 +196,10 @@ workflows: build-and-test: jobs: - ci-builds - - standard-tests: + - stripeios-tests: + requires: + - ci-builds + - stripecore-tests: requires: - ci-builds - ui-tests: diff --git a/Stripe.xcodeproj/project.pbxproj b/Stripe.xcodeproj/project.pbxproj index f6b6937307..a467808a11 100644 --- a/Stripe.xcodeproj/project.pbxproj +++ b/Stripe.xcodeproj/project.pbxproj @@ -60,7 +60,6 @@ 3111C552252BD00400207E32 /* NSDecimalNumber+StripeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3111C3B3252BC79200207E32 /* NSDecimalNumber+StripeTest.swift */; }; 3111C555252BD8DD00207E32 /* NSDictionary+StripeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3111C3B0252BC79100207E32 /* NSDictionary+StripeTest.swift */; }; 3111C559252BDAA800207E32 /* NSArray+Stripe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317ABD9B25117C9900CC59EF /* NSArray+Stripe.swift */; }; - 3111C55C252BDAEE00207E32 /* NSMutableURLRequest+StripeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3111C415252BC7A200207E32 /* NSMutableURLRequest+StripeTest.swift */; }; 3111C55F252BDB0000207E32 /* NSString+StripeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3111C3F6252BC79D00207E32 /* NSString+StripeTest.swift */; }; 3111C562252BDB8500207E32 /* NSURLComponents_StripeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3111C38D252BC78C00207E32 /* NSURLComponents_StripeTest.swift */; }; 3111C565252BDBCB00207E32 /* PKPayment+StripeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3111C3E5252BC79A00207E32 /* PKPayment+StripeTest.swift */; }; @@ -524,7 +523,6 @@ B6596AC2255C474D00F68826 /* CardDetailsEditView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6596AC1255C474D00F68826 /* CardDetailsEditView.swift */; }; B65E749525832A290080D9B3 /* LoadingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B65E749425832A290080D9B3 /* LoadingViewController.swift */; }; B65E749B258829550080D9B3 /* STPAnalyticsClient+PaymentSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B65E749A258829550080D9B3 /* STPAnalyticsClient+PaymentSheet.swift */; }; - B65E74AC258930500080D9B3 /* STPAnalyticsClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B65E74AB258930500080D9B3 /* STPAnalyticsClientTest.swift */; }; B660B312251D344700919002 /* STPAPIClient+ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317ABDCF25117C9C00CC59EF /* STPAPIClient+ApplePay.swift */; }; B6615A192564849100994B00 /* STPApplePayContext+PaymentSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6615A182564849100994B00 /* STPApplePayContext+PaymentSheet.swift */; }; B66B39B6223045EF006D1CAD /* CardPaymentMethod.json in Resources */ = {isa = PBXBuildFile; fileRef = B66B39B5223045EF006D1CAD /* CardPaymentMethod.json */; }; @@ -671,7 +669,6 @@ C1D7B5251E36C70D002181F5 /* STPSourceFunctionalTest.m in Sources */ = {isa = PBXBuildFile; fileRef = C1D7B5241E36C70D002181F5 /* STPSourceFunctionalTest.m */; }; E60437F225D34316006E2E03 /* STPGenericInputPickerFieldSnapshotTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E60437F125D34316006E2E03 /* STPGenericInputPickerFieldSnapshotTests.swift */; }; E60437F625D37DDC006E2E03 /* STPGenericInputPickerFieldValidatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E60437F525D37DDC006E2E03 /* STPGenericInputPickerFieldValidatorTest.swift */; }; - E61BEEAC265F6B5B0002FA4F /* URLEncoderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E61BEEAB265F6B5B0002FA4F /* URLEncoderTest.swift */; }; E61BEEAE265F6BDC0002FA4F /* STPAnalyticsClientPaymentsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E61BEEAD265F6BDC0002FA4F /* STPAnalyticsClientPaymentsTest.swift */; }; E61BEEB0265F6CAC0002FA4F /* STPAnalyticsClientPaymentSheetTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E61BEEAF265F6CAC0002FA4F /* STPAnalyticsClientPaymentSheetTest.swift */; }; E620F1D8265F5FA200233581 /* PaymentAnalyticTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E620F1D7265F5FA200233581 /* PaymentAnalyticTest.swift */; }; @@ -682,7 +679,6 @@ E69552EB25D1E4F000753FDA /* STPGenericInputPickerField.swift in Sources */ = {isa = PBXBuildFile; fileRef = E69552EA25D1E4EF00753FDA /* STPGenericInputPickerField.swift */; }; E6A73629268E7919004655BF /* STPAnalyticsProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A73628268E7919004655BF /* STPAnalyticsProtocol.swift */; }; E6B0F5592686C0BA00055EAF /* StripeCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E6B0F5582686C0BA00055EAF /* StripeCore.framework */; }; - E6B8971F25FC4FD6002428E1 /* MockAnalyticsClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B8971E25FC4FD6002428E1 /* MockAnalyticsClient.swift */; }; F1122A7E1DFB84E000A8B1AF /* UINavigationBar+StripeTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F1122A7D1DFB84E000A8B1AF /* UINavigationBar+StripeTest.m */; }; F116E94C1D83405E0026A52A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11C74B9B164043050071C2CA /* Foundation.framework */; }; F116E94D1D8340640026A52A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A0D74F918F6106100966D7B /* Security.framework */; }; @@ -841,7 +837,6 @@ 3111C411252BC7A100207E32 /* NSArray+StripeTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSArray+StripeTest.swift"; sourceTree = ""; }; 3111C412252BC7A100207E32 /* STPThreeDSButtonCustomizationTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = STPThreeDSButtonCustomizationTest.swift; sourceTree = ""; }; 3111C413252BC7A200207E32 /* STPPaymentOptionsViewControllerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = STPPaymentOptionsViewControllerTest.swift; sourceTree = ""; }; - 3111C415252BC7A200207E32 /* NSMutableURLRequest+StripeTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSMutableURLRequest+StripeTest.swift"; sourceTree = ""; }; 3113D8C0250AA97700C495F1 /* Stripe.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = Stripe.modulemap; sourceTree = ""; }; 3118D57626260A3100E1A3BD /* STPPaymentMethodWeChatPay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPPaymentMethodWeChatPay.swift; sourceTree = ""; }; 3118D57726260A3100E1A3BD /* STPPaymentMethodWeChatPayParams.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPPaymentMethodWeChatPayParams.swift; sourceTree = ""; }; @@ -1339,7 +1334,6 @@ B6596AC1255C474D00F68826 /* CardDetailsEditView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardDetailsEditView.swift; sourceTree = ""; }; B65E749425832A290080D9B3 /* LoadingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingViewController.swift; sourceTree = ""; }; B65E749A258829550080D9B3 /* STPAnalyticsClient+PaymentSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "STPAnalyticsClient+PaymentSheet.swift"; sourceTree = ""; }; - B65E74AB258930500080D9B3 /* STPAnalyticsClientTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPAnalyticsClientTest.swift; sourceTree = ""; }; B6615A182564849100994B00 /* STPApplePayContext+PaymentSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "STPApplePayContext+PaymentSheet.swift"; sourceTree = ""; }; B66B39B5223045EF006D1CAD /* CardPaymentMethod.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = CardPaymentMethod.json; sourceTree = ""; }; B66D5023222F5A27004A9210 /* STPPaymentMethodThreeDSecureUsageTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = STPPaymentMethodThreeDSecureUsageTest.m; sourceTree = ""; }; @@ -1439,7 +1433,6 @@ C1E4F8051EBBEB0F00E611F5 /* STPCustomerContextTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STPCustomerContextTest.m; sourceTree = ""; }; E60437F125D34316006E2E03 /* STPGenericInputPickerFieldSnapshotTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPGenericInputPickerFieldSnapshotTests.swift; sourceTree = ""; }; E60437F525D37DDC006E2E03 /* STPGenericInputPickerFieldValidatorTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPGenericInputPickerFieldValidatorTest.swift; sourceTree = ""; }; - E61BEEAB265F6B5B0002FA4F /* URLEncoderTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLEncoderTest.swift; sourceTree = ""; }; E61BEEAD265F6BDC0002FA4F /* STPAnalyticsClientPaymentsTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPAnalyticsClientPaymentsTest.swift; sourceTree = ""; }; E61BEEAF265F6CAC0002FA4F /* STPAnalyticsClientPaymentSheetTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPAnalyticsClientPaymentSheetTest.swift; sourceTree = ""; }; E620F1D7265F5FA200233581 /* PaymentAnalyticTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentAnalyticTest.swift; sourceTree = ""; }; @@ -1451,7 +1444,6 @@ E69552EA25D1E4EF00753FDA /* STPGenericInputPickerField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPGenericInputPickerField.swift; sourceTree = ""; }; E6A73628268E7919004655BF /* STPAnalyticsProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPAnalyticsProtocol.swift; sourceTree = ""; }; E6B0F5582686C0BA00055EAF /* StripeCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = StripeCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E6B8971E25FC4FD6002428E1 /* MockAnalyticsClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAnalyticsClient.swift; sourceTree = ""; }; ED627D57207EA348007EFC56 /* nb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = nb; path = Localizations/nb.lproj/Localizable.strings; sourceTree = ""; }; F1122A7D1DFB84E000A8B1AF /* UINavigationBar+StripeTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UINavigationBar+StripeTest.m"; sourceTree = ""; }; F148ABE71D5E805A0014FD92 /* en */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = en; path = Localizations/en.lproj/Localizable.strings; sourceTree = ""; }; @@ -1603,7 +1595,6 @@ 04E01F8421AA36320061402F /* STPNetworkStubbingTestCase.m */, C1D23FAF1D37FC90002FD83C /* STPTestUtils.h */, C1D23FB01D37FC90002FD83C /* STPTestUtils.m */, - E6B8971E25FC4FD6002428E1 /* MockAnalyticsClient.swift */, C18867D81E8B093300A77634 /* Unit */, B6D98971251C07FA00C3D894 /* StripeiOS Tests-Bridging-Header.h */, 3185126B252FE67E008C0C57 /* StripeTests-Prefix.pch */, @@ -2613,7 +2604,6 @@ 3111C411252BC7A100207E32 /* NSArray+StripeTest.swift */, 3111C3B3252BC79200207E32 /* NSDecimalNumber+StripeTest.swift */, 3111C3B0252BC79100207E32 /* NSDictionary+StripeTest.swift */, - 3111C415252BC7A200207E32 /* NSMutableURLRequest+StripeTest.swift */, 3111C3F6252BC79D00207E32 /* NSString+StripeTest.swift */, 3111C38D252BC78C00207E32 /* NSURLComponents_StripeTest.swift */, E620F1D7265F5FA200233581 /* PaymentAnalyticTest.swift */, @@ -2624,7 +2614,6 @@ 3111C3BA252BC79300207E32 /* STPAddressViewModelTest.swift */, E61BEEAF265F6CAC0002FA4F /* STPAnalyticsClientPaymentSheetTest.swift */, E61BEEAD265F6BDC0002FA4F /* STPAnalyticsClientPaymentsTest.swift */, - B65E74AB258930500080D9B3 /* STPAnalyticsClientTest.swift */, 3111C3A9252BC79000207E32 /* STPAPIClientTest.swift */, 3111C401252BC79F00207E32 /* STPApplePayContextTest.swift */, 8B82C5C91F2BC78F009639F7 /* STPApplePayPaymentOptionTest.m */, @@ -2761,7 +2750,6 @@ B646C25326827EE500F4EAE5 /* TextFieldElement+IBANTest.swift */, 3111C3C7252BC79500207E32 /* UIImage+StripeTests.swift */, F1122A7D1DFB84E000A8B1AF /* UINavigationBar+StripeTest.m */, - E61BEEAB265F6B5B0002FA4F /* URLEncoderTest.swift */, B6E8A93D26580A6F00A48CC8 /* UserDefaults+StripeTest.swift */, ); name = Unit; @@ -3112,7 +3100,6 @@ 3111C60B252D224C00207E32 /* STPCardTest.swift in Sources */, 3111C598252BED0500207E32 /* STPPhoneNumberValidatorTest.swift in Sources */, 3619624E244FB2AE0025D60B /* STPPaymentMethodGiropayParamsTests.m in Sources */, - B65E74AC258930500080D9B3 /* STPAnalyticsClientTest.swift in Sources */, B6D98973251C07FA00C3D894 /* APIRequestTest.swift in Sources */, 3111C5D1252BFDFC00207E32 /* STPPaymentMethodCardTest.swift in Sources */, B68F1C792234740B0030B438 /* STPPaymentMethodCardWalletTest.m in Sources */, @@ -3149,7 +3136,6 @@ 3111C64C252D41F800207E32 /* STPFormEncoderTest.swift in Sources */, 36E28407254B38020028C186 /* STPCardCVCInputTextFieldSnapshotTests.swift in Sources */, 36ADAE232523AC7700302DFB /* STPPaymentIntentLastPaymentErrorTest.swift in Sources */, - E61BEEAC265F6B5B0002FA4F /* URLEncoderTest.swift in Sources */, F148ABFB1D5E88C70014FD92 /* STPTestUtils.m in Sources */, 3111C5EE252CE7B900207E32 /* STPThreeDSFooterCustomizationTest.swift in Sources */, 31C5B86E252E518E00A481A7 /* STPAddCardViewControllerTest.swift in Sources */, @@ -3174,7 +3160,6 @@ 3111C42C252BC7A300207E32 /* STPTelemetryClientTest.swift in Sources */, 36AC3D0C2523F18300F252D7 /* STPIntentActionTypeTest.swift in Sources */, E60437F225D34316006E2E03 /* STPGenericInputPickerFieldSnapshotTests.swift in Sources */, - 3111C55C252BDAEE00207E32 /* NSMutableURLRequest+StripeTest.swift in Sources */, B6B41F71223476AE0020BA7F /* STPPaymentMethodCardWalletMasterpassTest.m in Sources */, 316F813F25411877000A80B5 /* STPPaymentMethodPayPalParamsTests.m in Sources */, 3111C61B252D36A100207E32 /* STPCertTest.swift in Sources */, @@ -3229,7 +3214,6 @@ 368E1F6D254CC87300150A2D /* STPPostalCodeInputTextFieldSnapshotTests.swift in Sources */, F3E73D4A2683B78300438FD6 /* STPIntentWithPreferencesTest.swift in Sources */, B3302F462006FBA7005DDBE9 /* STPConnectAccountParamsTest.m in Sources */, - E6B8971F25FC4FD6002428E1 /* MockAnalyticsClient.swift in Sources */, 448895AF245255D800F7D0C2 /* STPPaymentMethodPrzelewy24ParamsTests.m in Sources */, B613DD3C22C54AA800C7603F /* STPSetupIntentTest.m in Sources */, 3111C555252BD8DD00207E32 /* NSDictionary+StripeTest.swift in Sources */, diff --git a/StripeCore/StripeCore.xcodeproj/project.pbxproj b/StripeCore/StripeCore.xcodeproj/project.pbxproj index 49ad00f9e8..7e8e7b5b4e 100644 --- a/StripeCore/StripeCore.xcodeproj/project.pbxproj +++ b/StripeCore/StripeCore.xcodeproj/project.pbxproj @@ -28,6 +28,11 @@ E69D642926855B9B0090B43D /* StripeiOS-Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = E69D641F26855B9B0090B43D /* StripeiOS-Release.xcconfig */; }; E6E38EE8268BE48300233B24 /* StripeAPIConfiguration+Version.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6E38EE7268BE48300233B24 /* StripeAPIConfiguration+Version.swift */; }; E6E38EEA268BE69F00233B24 /* PublishableKeyProviderSPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6E38EE9268BE69F00233B24 /* PublishableKeyProviderSPI.swift */; }; + E6FB9BAB268EA7E1000FDB4F /* MockAnalyticsClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6FB9BAA268EA7E1000FDB4F /* MockAnalyticsClient.swift */; }; + E6FB9BAF268EA890000FDB4F /* NSMutableURLRequest+StripeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6FB9BAE268EA890000FDB4F /* NSMutableURLRequest+StripeTest.swift */; }; + E6FB9BB2268EA911000FDB4F /* STPAnalyticsClientTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6FB9BB1268EA911000FDB4F /* STPAnalyticsClientTest.swift */; }; + E6FB9BBC268EA95F000FDB4F /* StripeCoreTestUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = E6FB9BBA268EA95F000FDB4F /* StripeCoreTestUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E6FB9BC5268EAEF3000FDB4F /* URLEncoderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6FB9BC4268EAEF3000FDB4F /* URLEncoderTest.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -38,6 +43,20 @@ remoteGlobalIDString = E69D63FA26855B250090B43D; remoteInfo = StripeCore; }; + E6FB9BC0268EAA0B000FDB4F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E69D63F226855B250090B43D /* Project object */; + proxyType = 1; + remoteGlobalIDString = E6FB9BB7268EA95F000FDB4F; + remoteInfo = StripeCoreTestUtils; + }; + E6FB9BC2268EAA21000FDB4F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E69D63F226855B250090B43D /* Project object */; + proxyType = 1; + remoteGlobalIDString = E69D63FA26855B250090B43D; + remoteInfo = StripeCore; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -65,6 +84,13 @@ E69D641F26855B9B0090B43D /* StripeiOS-Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "StripeiOS-Release.xcconfig"; sourceTree = ""; }; E6E38EE7268BE48300233B24 /* StripeAPIConfiguration+Version.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StripeAPIConfiguration+Version.swift"; sourceTree = ""; }; E6E38EE9268BE69F00233B24 /* PublishableKeyProviderSPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublishableKeyProviderSPI.swift; sourceTree = ""; }; + E6FB9BAA268EA7E1000FDB4F /* MockAnalyticsClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockAnalyticsClient.swift; sourceTree = ""; }; + E6FB9BAE268EA890000FDB4F /* NSMutableURLRequest+StripeTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSMutableURLRequest+StripeTest.swift"; sourceTree = ""; }; + E6FB9BB1268EA911000FDB4F /* STPAnalyticsClientTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPAnalyticsClientTest.swift; sourceTree = ""; }; + E6FB9BB8268EA95F000FDB4F /* StripeCoreTestUtils.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = StripeCoreTestUtils.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E6FB9BBA268EA95F000FDB4F /* StripeCoreTestUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StripeCoreTestUtils.h; sourceTree = ""; }; + E6FB9BBB268EA95F000FDB4F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E6FB9BC4268EAEF3000FDB4F /* URLEncoderTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLEncoderTest.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -83,6 +109,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E6FB9BB5268EA95F000FDB4F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -129,6 +162,7 @@ E69D641526855B9B0090B43D /* BuildConfigurations */, E69D63FD26855B250090B43D /* StripeCore */, E69D640826855B260090B43D /* StripeCoreTests */, + E6FB9BB9268EA95F000FDB4F /* StripeCoreTestUtils */, E69D63FC26855B250090B43D /* Products */, ); sourceTree = ""; @@ -138,6 +172,7 @@ children = ( E69D63FB26855B250090B43D /* StripeCore.framework */, E69D640426855B260090B43D /* StripeCoreTests.xctest */, + E6FB9BB8268EA95F000FDB4F /* StripeCoreTestUtils.framework */, ); name = Products; sourceTree = ""; @@ -155,6 +190,9 @@ E69D640826855B260090B43D /* StripeCoreTests */ = { isa = PBXGroup; children = ( + E6FB9BC8268EAF87000FDB4F /* Analytics */, + E6FB9BC9268EAF90000FDB4F /* Categories */, + E6FB9BC7268EAF80000FDB4F /* Helpers */, E69D640B26855B260090B43D /* Info.plist */, ); path = StripeCoreTests; @@ -189,6 +227,48 @@ path = Source; sourceTree = ""; }; + E6FB9BA9268EA7BD000FDB4F /* Mocks */ = { + isa = PBXGroup; + children = ( + E6FB9BAA268EA7E1000FDB4F /* MockAnalyticsClient.swift */, + ); + path = Mocks; + sourceTree = ""; + }; + E6FB9BB9268EA95F000FDB4F /* StripeCoreTestUtils */ = { + isa = PBXGroup; + children = ( + E6FB9BA9268EA7BD000FDB4F /* Mocks */, + E6FB9BBA268EA95F000FDB4F /* StripeCoreTestUtils.h */, + E6FB9BBB268EA95F000FDB4F /* Info.plist */, + ); + path = StripeCoreTestUtils; + sourceTree = ""; + }; + E6FB9BC7268EAF80000FDB4F /* Helpers */ = { + isa = PBXGroup; + children = ( + E6FB9BC4268EAEF3000FDB4F /* URLEncoderTest.swift */, + ); + path = Helpers; + sourceTree = ""; + }; + E6FB9BC8268EAF87000FDB4F /* Analytics */ = { + isa = PBXGroup; + children = ( + E6FB9BB1268EA911000FDB4F /* STPAnalyticsClientTest.swift */, + ); + path = Analytics; + sourceTree = ""; + }; + E6FB9BC9268EAF90000FDB4F /* Categories */ = { + isa = PBXGroup; + children = ( + E6FB9BAE268EA890000FDB4F /* NSMutableURLRequest+StripeTest.swift */, + ); + path = Categories; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -200,6 +280,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E6FB9BB3268EA95F000FDB4F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E6FB9BBC268EA95F000FDB4F /* StripeCoreTestUtils.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -233,12 +321,32 @@ ); dependencies = ( E69D640726855B260090B43D /* PBXTargetDependency */, + E6FB9BC1268EAA0B000FDB4F /* PBXTargetDependency */, ); name = StripeCoreTests; productName = StripeCoreTests; productReference = E69D640426855B260090B43D /* StripeCoreTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + E6FB9BB7268EA95F000FDB4F /* StripeCoreTestUtils */ = { + isa = PBXNativeTarget; + buildConfigurationList = E6FB9BBD268EA95F000FDB4F /* Build configuration list for PBXNativeTarget "StripeCoreTestUtils" */; + buildPhases = ( + E6FB9BB3268EA95F000FDB4F /* Headers */, + E6FB9BB4268EA95F000FDB4F /* Sources */, + E6FB9BB5268EA95F000FDB4F /* Frameworks */, + E6FB9BB6268EA95F000FDB4F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + E6FB9BC3268EAA21000FDB4F /* PBXTargetDependency */, + ); + name = StripeCoreTestUtils; + productName = StripeCoreTestUtils; + productReference = E6FB9BB8268EA95F000FDB4F /* StripeCoreTestUtils.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -255,6 +363,9 @@ E69D640326855B260090B43D = { CreatedOnToolsVersion = 12.5; }; + E6FB9BB7268EA95F000FDB4F = { + CreatedOnToolsVersion = 12.5; + }; }; }; buildConfigurationList = E69D63F526855B250090B43D /* Build configuration list for PBXProject "StripeCore" */; @@ -271,6 +382,7 @@ projectRoot = ""; targets = ( E69D63FA26855B250090B43D /* StripeCore */, + E6FB9BB7268EA95F000FDB4F /* StripeCoreTestUtils */, E69D640326855B260090B43D /* StripeCoreTests */, ); }; @@ -301,6 +413,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E6FB9BB6268EA95F000FDB4F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -321,6 +440,17 @@ runOnlyForDeploymentPostprocessing = 0; }; E69D640026855B260090B43D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E6FB9BAF268EA890000FDB4F /* NSMutableURLRequest+StripeTest.swift in Sources */, + E6FB9BB2268EA911000FDB4F /* STPAnalyticsClientTest.swift in Sources */, + E6FB9BC5268EAEF3000FDB4F /* URLEncoderTest.swift in Sources */, + E6FB9BAB268EA7E1000FDB4F /* MockAnalyticsClient.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E6FB9BB4268EA95F000FDB4F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -335,6 +465,16 @@ target = E69D63FA26855B250090B43D /* StripeCore */; targetProxy = E69D640626855B260090B43D /* PBXContainerItemProxy */; }; + E6FB9BC1268EAA0B000FDB4F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = E6FB9BB7268EA95F000FDB4F /* StripeCoreTestUtils */; + targetProxy = E6FB9BC0268EAA0B000FDB4F /* PBXContainerItemProxy */; + }; + E6FB9BC3268EAA21000FDB4F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = E69D63FA26855B250090B43D /* StripeCore */; + targetProxy = E6FB9BC2268EAA21000FDB4F /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -451,6 +591,144 @@ }; name = Release; }; + E6FB9BBE268EA95F000FDB4F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = Y28TH9SHX7; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = StripeCoreTestUtils/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.stripe.StripeCoreTestUtils; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + E6FB9BBF268EA95F000FDB4F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = Y28TH9SHX7; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = StripeCoreTestUtils/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.stripe.StripeCoreTestUtils; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -481,6 +759,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + E6FB9BBD268EA95F000FDB4F /* Build configuration list for PBXNativeTarget "StripeCoreTestUtils" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E6FB9BBE268EA95F000FDB4F /* Debug */, + E6FB9BBF268EA95F000FDB4F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = E69D63F226855B250090B43D /* Project object */; diff --git a/StripeCore/StripeCoreTestUtils/Info.plist b/StripeCore/StripeCoreTestUtils/Info.plist new file mode 100644 index 0000000000..9bcb244429 --- /dev/null +++ b/StripeCore/StripeCoreTestUtils/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/Tests/Tests/MockAnalyticsClient.swift b/StripeCore/StripeCoreTestUtils/Mocks/MockAnalyticsClient.swift similarity index 61% rename from Tests/Tests/MockAnalyticsClient.swift rename to StripeCore/StripeCoreTestUtils/Mocks/MockAnalyticsClient.swift index 450aa1ae04..afb2f8144c 100644 --- a/Tests/Tests/MockAnalyticsClient.swift +++ b/StripeCore/StripeCoreTestUtils/Mocks/MockAnalyticsClient.swift @@ -1,30 +1,28 @@ // // MockAnalyticsClient.swift -// StripeiOS Tests +// StripeCoreTestUtils // // Created by Mel Ludowise on 3/12/21. // Copyright © 2021 Stripe, Inc. All rights reserved. // @_spi(STP) import StripeCore -@testable import Stripe -// TODO(mludowise|MOBILESDK-291): Migrate to StripeCore -final class MockAnalyticsClient: STPAnalyticsClientProtocol { +@_spi(STP) public final class MockAnalyticsClient: STPAnalyticsClientProtocol { private(set) var productUsage: Set = [] private(set) var loggedAnalytics: [Analytic] = [] - func addClass(toProductUsageIfNecessary klass: T.Type) where T : STPAnalyticsProtocolSPI { + public func addClass(toProductUsageIfNecessary klass: T.Type) where T : STPAnalyticsProtocolSPI { productUsage.insert(klass.stp_analyticsIdentifierSPI) } - func log(analytic: Analytic) { + public func log(analytic: Analytic) { loggedAnalytics.append(analytic) } /// Clears `loggedAnalytics` and `productUsage`. - func reset() { + public func reset() { productUsage = [] loggedAnalytics = [] } diff --git a/StripeCore/StripeCoreTestUtils/StripeCoreTestUtils.h b/StripeCore/StripeCoreTestUtils/StripeCoreTestUtils.h new file mode 100644 index 0000000000..4a9c8d949b --- /dev/null +++ b/StripeCore/StripeCoreTestUtils/StripeCoreTestUtils.h @@ -0,0 +1,18 @@ +// +// StripeCoreTestUtils.h +// StripeCoreTestUtils +// +// Created by Mel Ludowise on 7/1/21. +// + +#import + +//! Project version number for StripeCoreTestUtils. +FOUNDATION_EXPORT double StripeCoreTestUtilsVersionNumber; + +//! Project version string for StripeCoreTestUtils. +FOUNDATION_EXPORT const unsigned char StripeCoreTestUtilsVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Tests/Tests/STPAnalyticsClientTest.swift b/StripeCore/StripeCoreTests/Analytics/STPAnalyticsClientTest.swift similarity index 90% rename from Tests/Tests/STPAnalyticsClientTest.swift rename to StripeCore/StripeCoreTests/Analytics/STPAnalyticsClientTest.swift index 4c19914e1d..b04d920ff6 100644 --- a/Tests/Tests/STPAnalyticsClientTest.swift +++ b/StripeCore/StripeCoreTests/Analytics/STPAnalyticsClientTest.swift @@ -1,6 +1,6 @@ // // STPAnalyticsTest.swift -// StripeiOS Tests +// StripeCoreTests // // Created by Yuki Tokuhiro on 12/15/20. // Copyright © 2020 Stripe, Inc. All rights reserved. @@ -10,9 +10,7 @@ import Foundation import XCTest @testable @_spi(STP) import StripeCore -@testable import Stripe -// TODO(mludowise|MOBILESDK-291): Migrate to StripeCore class STPAnalyticsClientTest: XCTestCase { func testShouldCollectAnalytics_alwaysFalseInTest() { diff --git a/Tests/Tests/NSMutableURLRequest+StripeTest.swift b/StripeCore/StripeCoreTests/Categories/NSMutableURLRequest+StripeTest.swift similarity index 91% rename from Tests/Tests/NSMutableURLRequest+StripeTest.swift rename to StripeCore/StripeCoreTests/Categories/NSMutableURLRequest+StripeTest.swift index d0e1c39215..93af5ea800 100644 --- a/Tests/Tests/NSMutableURLRequest+StripeTest.swift +++ b/StripeCore/StripeCoreTests/Categories/NSMutableURLRequest+StripeTest.swift @@ -1,14 +1,14 @@ // NSMutableURLRequest+StripeTest.swift -// Stripe +// StripeCoreTests // // Created by Ben Guo on 4/22/16. // Copyright © 2016 Stripe, Inc. All rights reserved. // -@_spi(STP) import StripeCore -@testable import Stripe +import XCTest + +@_spi(STP) import StripeCore -// TODO(mludowise|MOBILESDK-291): Migrate to StripeCore class NSMutableURLRequest_StripeTest: XCTestCase { func testAddParametersToURL_noQuery() { var request: NSMutableURLRequest? diff --git a/Tests/Tests/URLEncoderTest.swift b/StripeCore/StripeCoreTests/Helpers/URLEncoderTest.swift similarity index 94% rename from Tests/Tests/URLEncoderTest.swift rename to StripeCore/StripeCoreTests/Helpers/URLEncoderTest.swift index 2103d3b5ef..330e57b2c4 100644 --- a/Tests/Tests/URLEncoderTest.swift +++ b/StripeCore/StripeCoreTests/Helpers/URLEncoderTest.swift @@ -1,6 +1,6 @@ // // URLEncoderTest.swift -// StripeiOS Tests +// StripeCoreTests // // Created by Mel Ludowise on 5/26/21. // Copyright © 2021 Stripe, Inc. All rights reserved. @@ -9,9 +9,7 @@ import XCTest @_spi(STP) import StripeCore -@testable import Stripe -// TODO(mludowise|MOBILESDK-291): Migrate to StripeCore final class URLEncoderTest: XCTestCase { func testStringByReplacingSnakeCaseWithCamelCase() { let camelCase = URLEncoder.stringByReplacingSnakeCase(withCamelCase: "test_1_2_34_test") diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 9e670c6de3..34cf1c3d97 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -45,6 +45,10 @@ APPS = { # } } +# TODO(mludowise|RUN_MOBILESDK-120): Update tests for iOS 14.5 & use +# `DEFAULT_TEST_VERSION` for all applicable tests +DEFAULT_TEST_DEVICE = "iPhone 8" +DEFAULT_TEST_VERSION = "13.7" platform :ios do use_cache = false @@ -104,9 +108,15 @@ platform :ios do end end - lane :main_tests do + lane :stripeios_tests do Dir.chdir("..") do - sh("./ci_scripts/test.rb --scheme StripeiOS --device 'iPhone 8' --version 13.7") + sh("./ci_scripts/test.rb --scheme StripeiOS --device '#{DEFAULT_TEST_DEVICE}' --version #{DEFAULT_TEST_VERSION}") + end + end + + lane :stripecore_tests do + Dir.chdir("..") do + sh("./ci_scripts/test.rb --scheme StripeCore --device '#{DEFAULT_TEST_DEVICE}' --version #{DEFAULT_TEST_VERSION}") end end @@ -118,38 +128,40 @@ platform :ios do lane :basic_integration_tests do Dir.chdir("..") do - sh("./ci_scripts/test.rb --scheme 'Basic Integration' --device 'iPhone 11' --version 13.7") + sh("./ci_scripts/test.rb --scheme 'Basic Integration' --device 'iPhone 11' --version #{DEFAULT_TEST_VERSION}") end end lane :integration_all do Dir.chdir("..") do sh("./ci_scripts/test.rb --scheme 'IntegrationTester' --device 'iPhone 12 Pro Max' --version 14.5") - sh("./ci_scripts/test.rb --scheme 'IntegrationTester' --device 'iPhone 8' --version 14.5") + sh("./ci_scripts/test.rb --scheme 'IntegrationTester' --device '#{DEFAULT_TEST_DEVICE}' --version 14.5") end end lane :ui_tests do Dir.chdir("..") do - sh("./ci_scripts/test.rb --scheme 'LocalizationTester' --device 'iPhone 8' --version 13.7") + sh("./ci_scripts/test.rb --scheme 'LocalizationTester' --device '#{DEFAULT_TEST_DEVICE}' --version #{DEFAULT_TEST_VERSION}") end end lane :legacy_tests_11 do Dir.chdir("..") do sh("./ci_scripts/test.rb --scheme 'StripeiOS' --device 'iPhone 6' --version 11.4 --skip-snapshot-tests") + sh("./ci_scripts/test.rb --scheme 'StripeCore' --device 'iPhone 6' --version 11.4 --skip-snapshot-tests") end end lane :legacy_tests_12 do Dir.chdir("..") do sh("./ci_scripts/test.rb --scheme 'StripeiOS' --device 'iPhone 6' --version 12.4 --skip-snapshot-tests") + sh("./ci_scripts/test.rb --scheme 'StripeCore' --device 'iPhone 6' --version 12.4 --skip-snapshot-tests") end end lane :e2e_only do Dir.chdir("..") do - sh("./ci_scripts/test.rb --scheme 'StripeiOS' --device 'iPhone 8' --version 13.7 --only-test 'StripeiOS Tests/STPE2ETest'") + sh("./ci_scripts/test.rb --scheme 'StripeiOS' --device '#{DEFAULT_TEST_DEVICE}' --version #{DEFAULT_TEST_VERSION} --only-test 'StripeiOS Tests/STPE2ETest'") end end @@ -202,6 +214,7 @@ platform :ios do end lane :tests do + # TODO: what this? run_tests(scheme: "StripeiOS", devices: ["iPhone 8"]) end