Skip to content

Commit 31f8629

Browse files
sumeruchatjoaodordioevantk91megha-iterableEvan Greer
authored
[MOB-10402] Fix Tests (#876)
Co-authored-by: Joao Dordio <[email protected]> Co-authored-by: Evan Takeo Kanaiaupuni Greer <[email protected]> Co-authored-by: Megha Pithadiya <[email protected]> Co-authored-by: Evan Greer <[email protected]>
1 parent 51686ac commit 31f8629

File tree

19 files changed

+436
-276
lines changed

19 files changed

+436
-276
lines changed

.github/workflows/build-and-test.yml

+6-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on: pull_request
44

55
jobs:
66
run-tests-job:
7-
runs-on: macos-14
7+
runs-on: macos-15
88

99
steps:
1010
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -18,10 +18,13 @@ jobs:
1818
gem install erb
1919
gem install xcpretty
2020
21+
- name: Print available simulators
22+
run: xcrun simctl list devices | cat
23+
2124
- name: Build and test
2225
run: |
23-
xcodebuild test -project swift-sdk.xcodeproj -scheme swift-sdk -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 16 Pro' -enableCodeCoverage YES CODE_SIGNING_REQUIRED=NO | xcpretty && exit ${PIPESTATUS[0]}
24-
26+
xcodebuild test -project swift-sdk.xcodeproj -scheme swift-sdk -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 16 Pro,OS=18.2' -enableCodeCoverage YES -resultBundlePath TestResults.xcresult CODE_SIGNING_REQUIRED=NO | xcpretty && exit ${PIPESTATUS[0]}
27+
2528
- name: CocoaPods lint
2629
run: pod lib lint --allow-warnings
2730

.github/workflows/e2e.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on: pull_request
44

55
jobs:
66
run-e2e-job:
7-
runs-on: macos-14
7+
runs-on: macos-15
88

99
steps:
1010
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -23,3 +23,5 @@ jobs:
2323
in_app_template_id: ${{secrets.E2E_IN_APP_TEMPLATE_ID}}
2424
run: |
2525
./tests/endpoint-tests/scripts/run_test.sh
26+
27+

swift-sdk.xcodeproj/project.pbxproj

+4
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,8 @@
710710
8AAA8C832D074C2000DF8220 /* RequestProcessorUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestProcessorUtil.swift; sourceTree = "<group>"; };
711711
8AAA8C842D074C2000DF8220 /* RequestSender.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestSender.swift; sourceTree = "<group>"; };
712712
8AB8D7D12D3805A900DECFE5 /* IterableAPIMobileFrameworkDetector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IterableAPIMobileFrameworkDetector.swift; sourceTree = "<group>"; };
713+
8AC534392D760B6C00F84F44 /* swift-sdk.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "swift-sdk.xctestplan"; sourceTree = "<group>"; };
714+
8AC5343A2D760BD400F84F44 /* endpoint-tests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "endpoint-tests.xctestplan"; sourceTree = "<group>"; };
713715
9FF05EAB2AFEA5FA005311F7 /* MockAuthManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAuthManager.swift; sourceTree = "<group>"; };
714716
AC02CAA5234E50B5006617E0 /* RegistrationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegistrationTests.swift; sourceTree = "<group>"; };
715717
AC05644A26387B54001FB810 /* MockPersistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockPersistence.swift; sourceTree = "<group>"; };
@@ -1538,6 +1540,8 @@
15381540
ACFCA72920EB02DB00BFB277 /* tests */ = {
15391541
isa = PBXGroup;
15401542
children = (
1543+
8AC534392D760B6C00F84F44 /* swift-sdk.xctestplan */,
1544+
8AC5343A2D760BD400F84F44 /* endpoint-tests.xctestplan */,
15411545
AC995F932166EC310099A184 /* common */,
15421546
AC28480824AA44C600C1FC7F /* endpoint-tests */,
15431547
ACFBEA15262DC68C000935DD /* hosting-apps */,

swift-sdk.xcodeproj/xcshareddata/xcschemes/endpoint-tests.xcscheme

+7-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
33
LastUpgradeVersion = "1420"
4-
version = "1.3">
4+
version = "1.7">
55
<BuildAction
66
parallelizeBuildables = "YES"
77
buildImplicitDependencies = "YES">
@@ -11,6 +11,12 @@
1111
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
1212
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
1313
shouldUseLaunchSchemeArgsEnv = "YES">
14+
<TestPlans>
15+
<TestPlanReference
16+
reference = "container:tests/endpoint-tests.xctestplan"
17+
default = "YES">
18+
</TestPlanReference>
19+
</TestPlans>
1420
<Testables>
1521
<TestableReference
1622
skipped = "NO">
@@ -51,15 +57,6 @@
5157
savedToolIdentifier = ""
5258
useCustomWorkingDirectory = "NO"
5359
debugDocumentVersioning = "YES">
54-
<MacroExpansion>
55-
<BuildableReference
56-
BuildableIdentifier = "primary"
57-
BlueprintIdentifier = "ACF560D220E443BF000AAC23"
58-
BuildableName = "host-app.app"
59-
BlueprintName = "host-app"
60-
ReferencedContainer = "container:swift-sdk.xcodeproj">
61-
</BuildableReference>
62-
</MacroExpansion>
6360
</ProfileAction>
6461
<AnalyzeAction
6562
buildConfiguration = "Debug">

swift-sdk.xcodeproj/xcshareddata/xcschemes/swift-sdk.xcscheme

+7-65
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
33
LastUpgradeVersion = "1420"
4-
version = "1.3">
4+
version = "1.7">
55
<BuildAction
66
parallelizeBuildables = "YES"
77
buildImplicitDependencies = "YES">
@@ -110,6 +110,12 @@
110110
ReferencedContainer = "container:swift-sdk.xcodeproj">
111111
</BuildableReference>
112112
</CodeCoverageTargets>
113+
<TestPlans>
114+
<TestPlanReference
115+
reference = "container:tests/swift-sdk.xctestplan"
116+
default = "YES">
117+
</TestPlanReference>
118+
</TestPlans>
113119
<Testables>
114120
<TestableReference
115121
skipped = "NO">
@@ -120,56 +126,6 @@
120126
BlueprintName = "unit-tests"
121127
ReferencedContainer = "container:swift-sdk.xcodeproj">
122128
</BuildableReference>
123-
<SkippedTests>
124-
<Test
125-
Identifier = "AuthTests/testAsyncAuthTokenRetrieval()">
126-
</Test>
127-
<Test
128-
Identifier = "AuthTests/testAuthTokenChangeWithSameEmail()">
129-
</Test>
130-
<Test
131-
Identifier = "AuthTests/testAuthTokenChangeWithSameUserId()">
132-
</Test>
133-
<Test
134-
Identifier = "AuthTests/testAuthTokenDeletedOnLogout()">
135-
</Test>
136-
<Test
137-
Identifier = "AuthTests/testAuthTokenRetrievalFailureReset()">
138-
</Test>
139-
<Test
140-
Identifier = "AuthTests/testEmailWithTokenPersistence()">
141-
</Test>
142-
<Test
143-
Identifier = "AuthTests/testLogoutUser()">
144-
</Test>
145-
<Test
146-
Identifier = "AuthTests/testNewEmailAndThenChangeToken()">
147-
</Test>
148-
<Test
149-
Identifier = "AuthTests/testNewUserIdAndThenChangeToken()">
150-
</Test>
151-
<Test
152-
Identifier = "AuthTests/testOnNewAuthTokenCallbackCalled()">
153-
</Test>
154-
<Test
155-
Identifier = "AuthTests/testPushRegistrationAfterAuthTokenRetrieval()">
156-
</Test>
157-
<Test
158-
Identifier = "AuthTests/testRefreshTimerQueueRejection()">
159-
</Test>
160-
<Test
161-
Identifier = "AuthTests/testRetryJwtFailure()">
162-
</Test>
163-
<Test
164-
Identifier = "AuthTests/testUpdateEmailAndThenChangeToken()">
165-
</Test>
166-
<Test
167-
Identifier = "AuthTests/testUpdateEmailWithTokenParam()">
168-
</Test>
169-
<Test
170-
Identifier = "AuthTests/testUserIdWithTokenPersistence()">
171-
</Test>
172-
</SkippedTests>
173129
</TestableReference>
174130
<TestableReference
175131
skipped = "NO">
@@ -210,20 +166,6 @@
210166
BlueprintName = "offline-events-tests"
211167
ReferencedContainer = "container:swift-sdk.xcodeproj">
212168
</BuildableReference>
213-
<SkippedTests>
214-
<Test
215-
Identifier = "NetworkConnectivityManagerTests/testConnectivityChange()">
216-
</Test>
217-
<Test
218-
Identifier = "NetworkConnectivityManagerTests/testPollingNetworkMonitor()">
219-
</Test>
220-
<Test
221-
Identifier = "RequestHandlerTests/testFeatureFlagTurnOnOfflineMode()">
222-
</Test>
223-
<Test
224-
Identifier = "TaskRunnerTests/testResumeWhenNetworkIsBackOnline()">
225-
</Test>
226-
</SkippedTests>
227169
</TestableReference>
228170
</Testables>
229171
</TestAction>

swift-sdk/Internal/AuthManager.swift

+7-7
Original file line numberDiff line numberDiff line change
@@ -150,19 +150,19 @@ class AuthManager: IterableAuthManagerProtocol {
150150

151151
pendingAuth = false
152152

153+
// Set the new token first
154+
authToken = retrievedAuthToken
155+
storeAuthToken()
156+
153157
if retrievedAuthToken != nil {
154158
let isRefreshQueued = queueAuthTokenExpirationRefresh(retrievedAuthToken, onSuccess: onSuccess)
155159
if !isRefreshQueued {
156-
onSuccess?(authToken)
160+
onSuccess?(retrievedAuthToken) // Use retrievedAuthToken instead of authToken
157161
}
158162
} else {
159163
handleAuthFailure(failedAuthToken: nil, reason: .authTokenNull)
160164
scheduleAuthTokenRefreshTimer(interval: getNextRetryInterval(), successCallback: onSuccess)
161165
}
162-
163-
authToken = retrievedAuthToken
164-
165-
storeAuthToken()
166166
}
167167

168168
func handleAuthFailure(failedAuthToken: String?, reason: AuthFailureReason) {
@@ -180,13 +180,13 @@ class AuthManager: IterableAuthManagerProtocol {
180180
/// schedule a default timer of 10 seconds if we fall into this case
181181
scheduleAuthTokenRefreshTimer(interval: getNextRetryInterval(), successCallback: onSuccess)
182182

183-
return true
183+
return false // Return false since we couldn't queue a valid refresh
184184
}
185185

186186
let timeIntervalToRefresh = TimeInterval(expirationDate) - dateProvider.currentDate.timeIntervalSince1970 - expirationRefreshPeriod
187187
if timeIntervalToRefresh > 0 {
188188
scheduleAuthTokenRefreshTimer(interval: timeIntervalToRefresh, isScheduledRefresh: true, successCallback: onSuccess)
189-
return true
189+
return true // Only return true when we successfully queue a refresh
190190
}
191191
return false
192192
}

swift-sdk/Resources/IterableDataModel.xcdatamodeld/IterableDataModel.xcdatamodel/contents

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="16119" systemVersion="19G2021" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
2+
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23605" systemVersion="23G80" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
33
<entity name="IterableTaskManagedObject" representedClassName="IterableTaskManagedObject" syncable="YES">
44
<attribute name="attempts" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
55
<attribute name="blocking" attributeType="Boolean" usesScalarValueType="YES"/>
@@ -23,7 +23,4 @@
2323
<fetchIndexElement property="scheduledAt" type="Binary" order="ascending"/>
2424
</fetchIndex>
2525
</entity>
26-
<elements>
27-
<element name="IterableTaskManagedObject" positionX="-63" positionY="-18" width="128" height="268"/>
28-
</elements>
2926
</model>

tests/endpoint-tests.xctestplan

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"configurations" : [
3+
{
4+
"id" : "D4401795-4D16-4709-9480-E9D329384AB3",
5+
"name" : "Configuration 1",
6+
"options" : {
7+
8+
}
9+
}
10+
],
11+
"defaultOptions" : {
12+
"codeCoverage" : false,
13+
"targetForVariableExpansion" : {
14+
"containerPath" : "container:swift-sdk.xcodeproj",
15+
"identifier" : "ACF560D220E443BF000AAC23",
16+
"name" : "host-app"
17+
}
18+
},
19+
"testTargets" : [
20+
{
21+
"target" : {
22+
"containerPath" : "container:swift-sdk.xcodeproj",
23+
"identifier" : "AC28480624AA44C600C1FC7F",
24+
"name" : "endpoint-tests"
25+
}
26+
}
27+
],
28+
"version" : 1
29+
}

tests/endpoint-tests/scripts/run_test.sh

+1
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ xcodebuild -project swift-sdk.xcodeproj \
2424
-scheme endpoint-tests \
2525
-sdk iphonesimulator \
2626
-destination 'platform=iOS Simulator,OS=18.1,name=iPhone 16 Pro' \
27+
-resultBundlePath TestResults.xcresult \
2728
test | xcpretty

0 commit comments

Comments
 (0)