Skip to content

Commit e060a01

Browse files
committed
Fix GDT tests for Catalyst
1 parent cd3a293 commit e060a01

File tree

6 files changed

+47
-19
lines changed

6 files changed

+47
-19
lines changed

GoogleDataTransport/GDTLibrary/GDTStorage.m

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ - (void)storeEvent:(GDTEvent *)event {
113113
if (bgID != GDTBackgroundIdentifierInvalid) {
114114
#if TARGET_OS_MACCATALYST
115115
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self
116-
requiringSecureCoding:NO
116+
requiringSecureCoding:YES
117117
error:nil];
118118
[data writeToFile:[GDTStorage archivePath] atomically:YES];
119119
#else
@@ -215,7 +215,7 @@ - (void)appWillBackground:(GDTApplication *)app {
215215
self->_runningInBackground = YES;
216216
#if TARGET_OS_MACCATALYST
217217
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self
218-
requiringSecureCoding:NO
218+
requiringSecureCoding:YES
219219
error:nil];
220220
[data writeToFile:[GDTStorage archivePath] atomically:YES];
221221
#else
@@ -233,7 +233,7 @@ - (void)appWillBackground:(GDTApplication *)app {
233233
- (void)appWillTerminate:(GDTApplication *)application {
234234
#if TARGET_OS_MACCATALYST
235235
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self
236-
requiringSecureCoding:NO
236+
requiringSecureCoding:YES
237237
error:nil];
238238
[data writeToFile:[GDTStorage archivePath] atomically:YES];
239239
#else
@@ -260,10 +260,12 @@ - (instancetype)initWithCoder:(NSCoder *)aDecoder {
260260
// Create the singleton and populate its ivars.
261261
GDTStorage *sharedInstance = [self.class sharedInstance];
262262
dispatch_sync(sharedInstance.storageQueue, ^{
263-
sharedInstance->_storedEvents = [aDecoder decodeObjectOfClass:[NSMutableOrderedSet class]
263+
NSSet *classes = [NSSet setWithObjects:[NSMutableOrderedSet class], [GDTStoredEvent class], nil];
264+
sharedInstance->_storedEvents = [aDecoder decodeObjectOfClasses:classes
264265
forKey:kGDTStorageStoredEventsKey];
266+
classes = [NSSet setWithObjects:[NSMutableDictionary class], [NSMutableSet class], [GDTStoredEvent class], nil];
265267
sharedInstance->_targetToEventSet =
266-
[aDecoder decodeObjectOfClass:[NSMutableDictionary class]
268+
[aDecoder decodeObjectOfClasses:classes
267269
forKey:kGDTStorageTargetToEventSetKey];
268270
sharedInstance->_uploadCoordinator =
269271
[aDecoder decodeObjectOfClass:[GDTUploadCoordinator class]

GoogleDataTransport/GDTLibrary/GDTUploadPackage.m

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#import <GoogleDataTransport/GDTUploadPackage.h>
1818

1919
#import <GoogleDataTransport/GDTClock.h>
20+
#import <GoogleDataTransport/GDTStoredEvent.h>
2021

2122
#import "GDTLibrary/Private/GDTStorage_Private.h"
2223
#import "GDTLibrary/Private/GDTUploadCoordinator.h"
@@ -136,11 +137,12 @@ - (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder {
136137
GDTTarget target = [aDecoder decodeIntegerForKey:kTargetKey];
137138
self = [self initWithTarget:target];
138139
if (self) {
139-
_events = [aDecoder decodeObjectOfClass:[NSSet class] forKey:kEventsKey];
140+
NSSet *classes = [NSSet setWithObjects:[NSSet class], [GDTStoredEvent class], nil];
141+
_events = [aDecoder decodeObjectOfClasses:classes forKey:kEventsKey];
140142
_deliverByTime = [aDecoder decodeObjectOfClass:[GDTClock class] forKey:kDeliverByTimeKey];
141143
_isHandled = [aDecoder decodeBoolForKey:kIsHandledKey];
142-
// Isn't technically NSSecureCoding, because we don't know the class of this object.
143-
_handler = [aDecoder decodeObjectForKey:kHandlerKey];
144+
// _handler isn't technically NSSecureCoding, because we don't know the class of this object.
145+
// but it gets decoded anyway.
144146
}
145147
return self;
146148
}

GoogleDataTransport/GDTTests/Unit/GDTClockTest.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,16 @@ - (void)testEncoding {
5454
GDTClock *unarchivedClock;
5555
if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) {
5656
NSData *clockData = [NSKeyedArchiver archivedDataWithRootObject:clock
57-
requiringSecureCoding:NO
57+
requiringSecureCoding:YES
5858
error:nil];
5959
unarchivedClock = [NSKeyedUnarchiver unarchivedObjectOfClass:[GDTClock class]
6060
fromData:clockData
6161
error:nil];
6262
} else {
63+
#if !defined(TARGET_OS_MACCATALYST)
6364
NSData *clockData = [NSKeyedArchiver archivedDataWithRootObject:clock];
6465
unarchivedClock = [NSKeyedUnarchiver unarchiveObjectWithData:clockData];
66+
#endif
6567
}
6668
XCTAssertEqual([clock hash], [unarchivedClock hash]);
6769
XCTAssertEqualObjects(clock, unarchivedClock);

GoogleDataTransport/GDTTests/Unit/GDTEventTest.m

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,12 @@ - (void)testArchiving {
4646
NSData *archiveData;
4747
if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) {
4848
archiveData = [NSKeyedArchiver archivedDataWithRootObject:event
49-
requiringSecureCoding:NO
49+
requiringSecureCoding:YES
5050
error:nil];
5151
} else {
52+
#if !defined(TARGET_OS_MACCATALYST)
5253
archiveData = [NSKeyedArchiver archivedDataWithRootObject:event];
54+
#endif
5355
}
5456
// To ensure that all the objects being retained by the original event are dealloc'd.
5557
event = nil;
@@ -59,7 +61,9 @@ - (void)testArchiving {
5961
fromData:archiveData
6062
error:nil];
6163
} else {
64+
#if !defined(TARGET_OS_MACCATALYST)
6265
decodedEvent = [NSKeyedUnarchiver unarchiveObjectWithData:archiveData];
66+
#endif
6367
}
6468
XCTAssertEqualObjects(decodedEvent.mappingID, @"testID");
6569
XCTAssertEqual(decodedEvent.target, 42);

GoogleDataTransport/GDTTests/Unit/GDTStorageTest.m

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ - (void)testStoreEvent {
8383
@autoreleasepool {
8484
GDTEvent *event = [[GDTEvent alloc] initWithMappingID:@"404" target:target];
8585
event.dataObjectTransportBytes = [@"testString" dataUsingEncoding:NSUTF8StringEncoding];
86+
event.clockSnapshot = [GDTClock snapshot];
8687
XCTAssertNoThrow([[GDTStorage sharedInstance] storeEvent:event]);
8788
}
8889
dispatch_sync([GDTStorage sharedInstance].storageQueue, ^{
@@ -103,6 +104,7 @@ - (void)testRemoveEvent {
103104
@autoreleasepool {
104105
GDTEvent *event = [[GDTEvent alloc] initWithMappingID:@"404" target:target];
105106
event.dataObjectTransportBytes = [@"testString" dataUsingEncoding:NSUTF8StringEncoding];
107+
event.clockSnapshot = [GDTClock snapshot];
106108
XCTAssertNoThrow([[GDTStorage sharedInstance] storeEvent:event]);
107109
}
108110
__block NSURL *eventFile;
@@ -223,7 +225,7 @@ - (void)testEventDeallocationIsEnforced {
223225
GDTEvent *event = [[GDTEvent alloc] initWithMappingID:@"404" target:target];
224226
weakEvent = event;
225227
event.dataObjectTransportBytes = [@"testString" dataUsingEncoding:NSUTF8StringEncoding];
226-
228+
event.clockSnapshot = [GDTClock snapshot];
227229
// Store the event and wait for the expectation.
228230
[[GDTStorage sharedInstance] storeEvent:event];
229231
GDTDataFuture *dataFuture =
@@ -256,16 +258,19 @@ - (void)testEventDeallocationIsEnforced {
256258
- (void)testNSSecureCoding {
257259
XCTAssertTrue([GDTStorage supportsSecureCoding]);
258260
GDTEvent *event = [[GDTEvent alloc] initWithMappingID:@"404" target:target];
261+
event.clockSnapshot = [GDTClock snapshot];
259262
event.dataObjectTransportBytes = [@"testString" dataUsingEncoding:NSUTF8StringEncoding];
260263
XCTAssertNoThrow([[GDTStorage sharedInstance] storeEvent:event]);
261264
event = nil;
262265
NSData *storageData;
263266
if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) {
264267
storageData = [NSKeyedArchiver archivedDataWithRootObject:[GDTStorage sharedInstance]
265-
requiringSecureCoding:NO
268+
requiringSecureCoding:YES
266269
error:nil];
267270
} else {
271+
#if !defined(TARGET_OS_MACCATALYST)
268272
storageData = [NSKeyedArchiver archivedDataWithRootObject:[GDTStorage sharedInstance]];
273+
#endif
269274
}
270275
dispatch_sync([GDTStorage sharedInstance].storageQueue, ^{
271276
XCTAssertNotNil([[GDTStorage sharedInstance].storedEvents lastObject]);
@@ -275,12 +280,15 @@ - (void)testNSSecureCoding {
275280
XCTAssertNil([[GDTStorage sharedInstance].storedEvents lastObject]);
276281
});
277282
GDTStorage *unarchivedStorage;
283+
NSError *error;
278284
if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) {
279285
unarchivedStorage = [NSKeyedUnarchiver unarchivedObjectOfClass:[GDTStorage class]
280286
fromData:storageData
281-
error:nil];
287+
error:&error];
282288
} else {
289+
#if !defined(TARGET_OS_MACCATALYST)
283290
unarchivedStorage = [NSKeyedUnarchiver unarchiveObjectWithData:storageData];
291+
#endif
284292
}
285293
XCTAssertNotNil([unarchivedStorage.storedEvents lastObject]);
286294
}
@@ -289,15 +297,18 @@ - (void)testNSSecureCoding {
289297
- (void)testNSSecureCodingWithSharedInstance {
290298
GDTEvent *event = [[GDTEvent alloc] initWithMappingID:@"404" target:target];
291299
event.dataObjectTransportBytes = [@"testString" dataUsingEncoding:NSUTF8StringEncoding];
300+
event.clockSnapshot = [GDTClock snapshot];
292301
XCTAssertNoThrow([[GDTStorage sharedInstance] storeEvent:event]);
293302
event = nil;
294303
NSData *storageData;
295304
if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) {
296305
storageData = [NSKeyedArchiver archivedDataWithRootObject:[GDTStorage sharedInstance]
297-
requiringSecureCoding:NO
306+
requiringSecureCoding:YES
298307
error:nil];
299308
} else {
309+
#if !defined(TARGET_OS_MACCATALYST)
300310
storageData = [NSKeyedArchiver archivedDataWithRootObject:[GDTStorage sharedInstance]];
311+
#endif
301312
}
302313
dispatch_sync([GDTStorage sharedInstance].storageQueue, ^{
303314
XCTAssertNotNil([[GDTStorage sharedInstance].storedEvents lastObject]);
@@ -312,7 +323,9 @@ - (void)testNSSecureCodingWithSharedInstance {
312323
fromData:storageData
313324
error:nil];
314325
} else {
326+
#if !defined(TARGET_OS_MACCATALYST)
315327
unarchivedStorage = [NSKeyedUnarchiver unarchiveObjectWithData:storageData];
328+
#endif
316329
}
317330
XCTAssertNotNil([unarchivedStorage.storedEvents lastObject]);
318331
}
@@ -324,6 +337,7 @@ - (void)testQoSTierFast {
324337
GDTEvent *event = [[GDTEvent alloc] initWithMappingID:@"404" target:target];
325338
event.dataObjectTransportBytes = [@"testString" dataUsingEncoding:NSUTF8StringEncoding];
326339
event.qosTier = GDTEventQoSFast;
340+
event.clockSnapshot = [GDTClock snapshot];
327341
XCTAssertFalse(self.uploaderFake.forceUploadCalled);
328342
XCTAssertNoThrow([[GDTStorage sharedInstance] storeEvent:event]);
329343
}

GoogleDataTransport/GDTTests/Unit/GDTUploadPackageTest.m

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,17 +124,21 @@ - (void)testEncoding {
124124
uploadPackage.events = set;
125125
uploadPackage.handler = self;
126126
GDTUploadPackage *recreatedPackage;
127-
127+
NSError *error;
128+
128129
if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) {
129-
NSData *packageData = [NSKeyedArchiver archivedDataWithRootObject:self
130-
requiringSecureCoding:NO
131-
error:nil];
130+
NSData *packageData = [NSKeyedArchiver archivedDataWithRootObject:uploadPackage
131+
requiringSecureCoding:YES
132+
error:&error];
132133
recreatedPackage = [NSKeyedUnarchiver unarchivedObjectOfClass:[GDTUploadPackage class]
133134
fromData:packageData
134-
error:nil];
135+
error:&error];
136+
XCTAssertNil(error);
135137
} else {
138+
#if !defined(TARGET_OS_MACCATALYST)
136139
NSData *packageData = [NSKeyedArchiver archivedDataWithRootObject:uploadPackage];
137140
recreatedPackage = [NSKeyedUnarchiver unarchiveObjectWithData:packageData];
141+
#endif
138142
}
139143
XCTAssertEqualObjects(uploadPackage, recreatedPackage);
140144
}

0 commit comments

Comments
 (0)