ソースを参照

[v11] Update FIS for GULs v8 (#13104)

Nick Cooke 1 年間 前
コミット
62c2dacb69

+ 23 - 9
FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m

@@ -60,9 +60,13 @@ NSString *const kFIRInstallationsStoreUserDefaultsID = @"com.firebase.FIRInstall
   NSString *itemID = [FIRInstallationsItem identifierWithAppID:appID appName:appName];
   return [self installationExistsForAppID:appID appName:appName]
       .then(^id(id result) {
-        return [self.secureStorage getObjectForKey:itemID
-                                       objectClass:[FIRInstallationsStoredItem class]
-                                       accessGroup:self.accessGroup];
+        return [FBLPromise
+            wrapObjectOrErrorCompletion:^(FBLPromiseObjectOrErrorCompletion _Nonnull handler) {
+              [self.secureStorage getObjectForKey:itemID
+                                      objectClass:[FIRInstallationsStoredItem class]
+                                      accessGroup:self.accessGroup
+                                completionHandler:handler];
+            }];
       })
       .then(^id(FIRInstallationsStoredItem *_Nullable storedItem) {
         if (storedItem == nil) {
@@ -81,16 +85,26 @@ NSString *const kFIRInstallationsStoreUserDefaultsID = @"com.firebase.FIRInstall
   NSString *identifier = [installationItem identifier];
 
   return
-      [self.secureStorage setObject:storedItem forKey:identifier accessGroup:self.accessGroup].then(
-          ^id(id result) {
-            return [self setInstallationExists:YES forItemWithIdentifier:identifier];
-          });
+      [FBLPromise wrapObjectOrErrorCompletion:^(
+                      FBLPromiseObjectOrErrorCompletion _Nonnull handler) {
+        [self.secureStorage setObject:storedItem
+                               forKey:identifier
+                          accessGroup:self.accessGroup
+                    completionHandler:handler];
+      }].then(^id(id __unused unusedResult) {
+        return [self setInstallationExists:YES forItemWithIdentifier:identifier];
+      });
 }
 
 - (FBLPromise<NSNull *> *)removeInstallationForAppID:(NSString *)appID appName:(NSString *)appName {
   NSString *identifier = [FIRInstallationsItem identifierWithAppID:appID appName:appName];
-  return [self.secureStorage removeObjectForKey:identifier accessGroup:self.accessGroup].then(
-      ^id(id result) {
+
+  return
+      [FBLPromise wrapErrorCompletion:^(FBLPromiseErrorCompletion _Nonnull handler) {
+        [self.secureStorage removeObjectForKey:identifier
+                                   accessGroup:self.accessGroup
+                             completionHandler:handler];
+      }].then(^id(id __unused result) {
         return [self setInstallationExists:NO forItemWithIdentifier:identifier];
       });
 }

+ 18 - 12
FirebaseInstallations/Source/Tests/Unit/FIRInstallationsStoreTests.m

@@ -65,7 +65,8 @@
   // Check with empty keychain.
   OCMReject([self.mockSecureStorage getObjectForKey:[OCMArg any]
                                         objectClass:[OCMArg any]
-                                        accessGroup:[OCMArg any]]);
+                                        accessGroup:[OCMArg any]
+                                  completionHandler:[OCMArg any]]);
 
   [self assertInstallationIDNotFoundForAppID:appID appName:appName];
   OCMVerifyAll(self.mockSecureStorage);
@@ -79,11 +80,11 @@
   [self.userDefaults setObject:@(YES) forKey:itemID];
 
   FIRInstallationsStoredItem *storedItem = [self createValidStoredItem];
-
+  id completionArg = [OCMArg invokeBlockWithArgs:storedItem, [NSNull null], nil];
   OCMExpect([self.mockSecureStorage getObjectForKey:itemID
                                         objectClass:[FIRInstallationsStoredItem class]
-                                        accessGroup:self.accessGroup])
-      .andReturn([FBLPromise resolvedWith:storedItem]);
+                                        accessGroup:self.accessGroup
+                                  completionHandler:completionArg]);
 
   FBLPromise<FIRInstallationsItem *> *itemPromise = [self.store installationForAppID:appID
                                                                              appName:appName];
@@ -108,10 +109,11 @@
 
   [self.userDefaults setObject:@(YES) forKey:itemID];
 
+  id completionArg = [OCMArg invokeBlockWithArgs:[NSNull null], [NSNull null], nil];
   OCMExpect([self.mockSecureStorage getObjectForKey:itemID
                                         objectClass:[FIRInstallationsStoredItem class]
-                                        accessGroup:self.accessGroup])
-      .andReturn([FBLPromise resolvedWith:nil]);
+                                        accessGroup:self.accessGroup
+                                  completionHandler:completionArg]);
 
   FBLPromise<FIRInstallationsItem *> *itemPromise = [self.store installationForAppID:appID
                                                                              appName:appName];
@@ -137,10 +139,11 @@
     [self assertStoredItem:obj correspondsToItem:item];
     return YES;
   }];
+  id completionArg = [OCMArg invokeBlockWithArgs:storedItemArg, [NSNull null], nil];
   OCMExpect([self.mockSecureStorage setObject:storedItemArg
                                        forKey:itemID
-                                  accessGroup:self.accessGroup])
-      .andReturn([FBLPromise resolvedWith:[NSNull null]]);
+                                  accessGroup:self.accessGroup
+                            completionHandler:completionArg]);
 
   FBLPromise<NSNull *> *promise = [self.store saveInstallation:item];
   XCTAssert(FBLWaitForPromisesWithTimeout(0.5));
@@ -169,10 +172,11 @@
     [self assertStoredItem:obj correspondsToItem:item];
     return YES;
   }];
+  id completionArg = [OCMArg invokeBlockWithArgs:[NSNull null], keychainError, nil];
   OCMExpect([self.mockSecureStorage setObject:storedItemArg
                                        forKey:itemID
-                                  accessGroup:self.accessGroup])
-      .andReturn(rejectedPromise);
+                                  accessGroup:self.accessGroup
+                            completionHandler:completionArg]);
 
   FBLPromise<NSNull *> *promise = [self.store saveInstallation:item];
   XCTAssert(FBLWaitForPromisesWithTimeout(0.5));
@@ -193,8 +197,10 @@
 
   [self.userDefaults setObject:@(YES) forKey:itemID];
 
-  OCMExpect([self.mockSecureStorage removeObjectForKey:itemID accessGroup:self.accessGroup])
-      .andReturn([FBLPromise resolvedWith:[NSNull null]]);
+  id completionArg = [OCMArg invokeBlockWithArgs:[NSNull null], nil];
+  OCMExpect([self.mockSecureStorage removeObjectForKey:itemID
+                                           accessGroup:self.accessGroup
+                                     completionHandler:completionArg]);
 
   FBLPromise<NSNull *> *promise = [self.store removeInstallationForAppID:appID appName:appName];
   XCTAssert(FBLWaitForPromisesWithTimeout(0.5));