@@ -40,6 +40,10 @@ @interface FIRMessaging (ExposedForTest)
40
40
+ (BOOL )createSubDirectory : (NSString *)subDirectoryName ;
41
41
@end
42
42
43
+ @interface FIRMessagingBackupExcludedPlist (ExposedForTest)
44
+ - (BOOL )deleteFile : (NSError **)error ;
45
+ @end
46
+
43
47
// Testing constants
44
48
static NSString *const kFakeCheckinPlistName = @" com.google.test.TestCheckin" ;
45
49
static NSString *const kSubDirectoryName = @" FirebaseInstanceIDCheckinTest" ;
@@ -53,21 +57,23 @@ + (BOOL)createSubDirectory:(NSString *)subDirectoryName;
53
57
54
58
@interface FIRMessagingCheckinStoreTest : XCTestCase
55
59
60
+ @property (nonatomic , strong ) FIRMessagingCheckinStore *checkinStore;
61
+ @property (nonatomic , strong ) FIRMessagingBackupExcludedPlist *plist;
56
62
@end
57
63
58
64
@implementation FIRMessagingCheckinStoreTest
59
65
60
66
- (void )setUp {
61
67
[super setUp ];
62
68
[FIRMessaging createSubDirectory: kSubDirectoryName ];
69
+ self.checkinStore = [[FIRMessagingCheckinStore alloc ] init ];
70
+ self.plist = [[FIRMessagingBackupExcludedPlist alloc ] initWithFileName: kFakeCheckinPlistName
71
+ subDirectory: kSubDirectoryName ];
72
+ self.checkinStore .plist = self.plist ;
63
73
}
64
74
65
75
- (void )tearDown {
66
- NSString *path = [self pathForCheckinPlist ];
67
- if ([[NSFileManager defaultManager ] fileExistsAtPath: path]) {
68
- NSError *error;
69
- [[NSFileManager defaultManager ] removeItemAtPath: path error: &error];
70
- }
76
+ [self .plist deleteFile: nil ];
71
77
[super tearDown ];
72
78
}
73
79
@@ -79,23 +85,22 @@ - (void)testInvalidCheckinPreferencesOnKeychainFail {
79
85
expectationWithDescription: @" Checkin preference should be invalid after keychain failure" ];
80
86
81
87
FIRMessagingFakeKeychain *fakeKeychain = [[FIRMessagingFakeKeychain alloc ] init ];
82
- FIRMessagingCheckinStore *checkinStore = [[FIRMessagingCheckinStore alloc ] init ];
83
- checkinStore.keychain = fakeKeychain;
88
+ self.checkinStore .keychain = fakeKeychain;
84
89
__block FIRMessagingCheckinPreferences *preferences =
85
90
[[FIRMessagingCheckinPreferences alloc ] initWithDeviceID: kAuthID secretToken: kSecret ];
86
91
[preferences updateWithCheckinPlistContents: [[self class ] newCheckinPlistPreferences ]];
87
- [checkinStore saveCheckinPreferences: preferences
88
- handler: ^(NSError *error) {
89
- XCTAssertNil (error);
90
- fakeKeychain.cannotReadFromKeychain = YES ;
91
- preferences = [checkinStore cachedCheckinPreferences ];
92
-
93
- XCTAssertNil (preferences.deviceID );
94
- XCTAssertNil (preferences.secretToken );
95
- XCTAssertFalse ([preferences hasValidCheckinInfo ]);
96
-
97
- [checkinInvalidExpectation fulfill ];
98
- }];
92
+ [self . checkinStore saveCheckinPreferences: preferences
93
+ handler: ^(NSError *error) {
94
+ XCTAssertNil (error);
95
+ fakeKeychain.cannotReadFromKeychain = YES ;
96
+ preferences = [self ->_checkinStore cachedCheckinPreferences ];
97
+
98
+ XCTAssertNil (preferences.deviceID );
99
+ XCTAssertNil (preferences.secretToken );
100
+ XCTAssertFalse ([preferences hasValidCheckinInfo ]);
101
+
102
+ [checkinInvalidExpectation fulfill ];
103
+ }];
99
104
[self waitForExpectationsWithTimeout: kExpectationTimeout handler: nil ];
100
105
}
101
106
@@ -108,56 +113,49 @@ - (void)testCheckinSaveFailsOnKeychainWriteFailure {
108
113
[self expectationWithDescription: @" Checkin save should fail after keychain write failure" ];
109
114
FIRMessagingFakeKeychain *fakeKeychain = [[FIRMessagingFakeKeychain alloc ] init ];
110
115
fakeKeychain.cannotWriteToKeychain = YES ;
111
-
112
- FIRMessagingCheckinStore *checkinStore = [[FIRMessagingCheckinStore alloc ] init ];
113
- checkinStore.keychain = fakeKeychain;
116
+ self.checkinStore .keychain = fakeKeychain;
114
117
115
118
__block FIRMessagingCheckinPreferences *preferences =
116
119
[[FIRMessagingCheckinPreferences alloc ] initWithDeviceID: kAuthID secretToken: kSecret ];
117
120
[preferences updateWithCheckinPlistContents: [[self class ] newCheckinPlistPreferences ]];
118
- [checkinStore saveCheckinPreferences: preferences
119
- handler: ^(NSError *error) {
120
- XCTAssertNotNil (error);
121
-
122
- preferences = [checkinStore cachedCheckinPreferences ];
123
- XCTAssertNil (preferences.deviceID );
124
- XCTAssertNil (preferences.secretToken );
125
- XCTAssertFalse ([preferences hasValidCheckinInfo ]);
126
- [checkinSaveFailsExpectation fulfill ];
127
- }];
121
+ [self . checkinStore saveCheckinPreferences: preferences
122
+ handler: ^(NSError *error) {
123
+ XCTAssertNotNil (error);
124
+
125
+ preferences = [self ->_checkinStore cachedCheckinPreferences ];
126
+ XCTAssertNil (preferences.deviceID );
127
+ XCTAssertNil (preferences.secretToken );
128
+ XCTAssertFalse ([preferences hasValidCheckinInfo ]);
129
+ [checkinSaveFailsExpectation fulfill ];
130
+ }];
128
131
[self waitForExpectationsWithTimeout: kExpectationTimeout handler: nil ];
129
132
}
130
133
131
134
- (void )testCheckinSaveFailsOnPlistWriteFailure {
132
135
XCTestExpectation *checkinSaveFailsExpectation =
133
136
[self expectationWithDescription: @" Checkin save should fail after plist write failure" ];
134
- FIRMessagingBackupExcludedPlist *checkinPlist =
135
- [[FIRMessagingBackupExcludedPlist alloc ] initWithFileName: kFakeCheckinPlistName
136
- subDirectory: kSubDirectoryName ];
137
- id plistMock = OCMPartialMock (checkinPlist);
137
+
138
+ id plistMock = OCMPartialMock (self.plist );
138
139
NSError *error = [NSError errorWithDomain: kFakeErrorDomain code: kFakeErrorCode userInfo: nil ];
139
140
OCMStub ([plistMock writeDictionary: [OCMArg any ] error: [OCMArg setTo: error]]).andReturn (NO );
140
141
141
142
FIRMessagingFakeKeychain *fakeKeychain = [[FIRMessagingFakeKeychain alloc ] init ];
142
-
143
- FIRMessagingCheckinStore *checkinStore = [[FIRMessagingCheckinStore alloc ] init ];
144
- checkinStore.keychain = fakeKeychain;
145
- checkinStore.plist = checkinPlist;
143
+ self.checkinStore .keychain = fakeKeychain;
146
144
147
145
__block FIRMessagingCheckinPreferences *preferences =
148
146
[[FIRMessagingCheckinPreferences alloc ] initWithDeviceID: kAuthID secretToken: kSecret ];
149
147
[preferences updateWithCheckinPlistContents: [[self class ] newCheckinPlistPreferences ]];
150
- [checkinStore saveCheckinPreferences: preferences
151
- handler: ^(NSError *error) {
152
- XCTAssertNotNil (error);
153
- XCTAssertEqual (error.code , kFakeErrorCode );
154
-
155
- preferences = [checkinStore cachedCheckinPreferences ];
156
- XCTAssertNil (preferences.deviceID );
157
- XCTAssertNil (preferences.secretToken );
158
- XCTAssertFalse ([preferences hasValidCheckinInfo ]);
159
- [checkinSaveFailsExpectation fulfill ];
160
- }];
148
+ [self . checkinStore saveCheckinPreferences: preferences
149
+ handler: ^(NSError *error) {
150
+ XCTAssertNotNil (error);
151
+ XCTAssertEqual (error.code , kFakeErrorCode );
152
+
153
+ preferences = [self ->_checkinStore cachedCheckinPreferences ];
154
+ XCTAssertNil (preferences.deviceID );
155
+ XCTAssertNil (preferences.secretToken );
156
+ XCTAssertFalse ([preferences hasValidCheckinInfo ]);
157
+ [checkinSaveFailsExpectation fulfill ];
158
+ }];
161
159
[self waitForExpectationsWithTimeout: kExpectationTimeout handler: nil ];
162
160
}
163
161
@@ -166,38 +164,25 @@ - (void)testCheckinSaveSuccess {
166
164
[self expectationWithDescription: @" Checkin save should succeed" ];
167
165
168
166
FIRMessagingFakeKeychain *fakeKeychain = [[FIRMessagingFakeKeychain alloc ] init ];
169
- FIRMessagingCheckinStore *checkinStore = [[FIRMessagingCheckinStore alloc ] init ];
170
- checkinStore.keychain = fakeKeychain;
167
+ self.checkinStore .keychain = fakeKeychain;
171
168
172
169
__block FIRMessagingCheckinPreferences *preferences =
173
170
[[FIRMessagingCheckinPreferences alloc ] initWithDeviceID: kAuthID secretToken: kSecret ];
174
171
[preferences updateWithCheckinPlistContents: [[self class ] newCheckinPlistPreferences ]];
175
- [checkinStore saveCheckinPreferences: preferences
176
- handler: ^(NSError *error) {
177
- XCTAssertNil (error);
178
-
179
- preferences = [checkinStore cachedCheckinPreferences ];
180
- XCTAssertEqualObjects (preferences.deviceID , kAuthID );
181
- XCTAssertEqualObjects (preferences.secretToken , kSecret );
182
- [checkinSaveSuccessExpectation fulfill ];
183
- }];
172
+ [self . checkinStore saveCheckinPreferences: preferences
173
+ handler: ^(NSError *error) {
174
+ XCTAssertNil (error);
175
+
176
+ preferences = [self ->_checkinStore cachedCheckinPreferences ];
177
+ XCTAssertEqualObjects (preferences.deviceID , kAuthID );
178
+ XCTAssertEqualObjects (preferences.secretToken , kSecret );
179
+ [checkinSaveSuccessExpectation fulfill ];
180
+ }];
184
181
[self waitForExpectationsWithTimeout: kExpectationTimeout handler: nil ];
185
182
}
186
183
187
184
#pragma mark - Private Helpers
188
185
189
- - (BOOL )savePreferencesToPlist : (NSDictionary *)preferences {
190
- NSString *path = [self pathForCheckinPlist ];
191
- return [preferences writeToFile: path atomically: YES ];
192
- }
193
-
194
- - (NSString *)pathForCheckinPlist {
195
- NSArray *paths =
196
- NSSearchPathForDirectoriesInDomains (NSApplicationDirectory, NSUserDomainMask, YES );
197
- NSString *plistNameWithExtension = [NSString stringWithFormat: @" %@ .plist" , kFakeCheckinPlistName ];
198
- return [paths[0 ] stringByAppendingPathComponent: plistNameWithExtension];
199
- }
200
-
201
186
+ (NSDictionary *)checkinPreferences {
202
187
return @{
203
188
kFIRMessagingDeviceAuthIdKey : kAuthID ,
0 commit comments