From 34e4ef0800f6e5e98d0afbbbcc82b7946919f2f7 Mon Sep 17 00:00:00 2001 From: Nick Cooke <36927374+ncooke3@users.noreply.github.com> Date: Wed, 12 Jun 2024 15:22:18 -0400 Subject: [PATCH] [v11] Migrate to GoogleUtilities v8 (#61) Signed-off-by: Nick Cooke <36927374+ncooke3@users.noreply.github.com> --- .../API/GACAppAttestAPIService.m | 15 +++--- .../Storage/GACAppAttestArtifactStorage.m | 30 ++++++++---- .../Core/APIService/GACAppCheckAPIService.h | 6 +-- .../Core/APIService/GACAppCheckAPIService.m | 21 ++++----- .../APIService/GACAppCheckToken+APIResponse.h | 2 +- .../APIService/GACAppCheckToken+APIResponse.m | 2 - .../APIService/GACURLSessionDataResponse.h | 31 +++++++++++++ .../APIService/GACURLSessionDataResponse.m | 30 ++++++++++++ .../APIService/NSURLSession+GACPromises.h | 37 +++++++++++++++ .../APIService/NSURLSession+GACPromises.m | 46 +++++++++++++++++++ .../Sources/Core/Storage/GACAppCheckStorage.m | 30 ++++++++---- .../API/GACAppCheckDebugProviderAPIService.m | 7 +-- .../API/GACDeviceCheckAPIService.m | 6 +-- .../GACAppAttestAPIServiceTests.m | 35 +++++++------- .../GACAppAttestArtifactStorageTests.m | 16 ++++--- .../Unit/Core/GACAppCheckAPIServiceTests.m | 25 +++++----- .../Core/GACAppCheckBackoffWrapperTests.m | 8 ++-- .../Tests/Unit/Core/GACAppCheckStorageTests.m | 17 ++++--- .../GACAppCheckDebugProviderAPIServiceTests.m | 11 ++--- .../GACDeviceCheckAPIServiceTests.m | 11 ++--- 20 files changed, 274 insertions(+), 112 deletions(-) create mode 100644 AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h create mode 100644 AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.m create mode 100644 AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.h create mode 100644 AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.m diff --git a/AppCheckCore/Sources/AppAttestProvider/API/GACAppAttestAPIService.m b/AppCheckCore/Sources/AppAttestProvider/API/GACAppAttestAPIService.m index 33c8977..fe6dfd4 100644 --- a/AppCheckCore/Sources/AppAttestProvider/API/GACAppAttestAPIService.m +++ b/AppCheckCore/Sources/AppAttestProvider/API/GACAppAttestAPIService.m @@ -24,10 +24,9 @@ #import "AppCheckCore/Sources/AppAttestProvider/API/GACAppAttestAttestationResponse.h" #import "AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h" +#import "AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h" #import "AppCheckCore/Sources/Core/Errors/GACAppCheckErrorUtil.h" -#import - NS_ASSUME_NONNULL_BEGIN static NSString *const kRequestFieldArtifact = @"artifact"; @@ -77,13 +76,13 @@ static NSString *const kHTTPMethodPost = @"POST"; challenge:challenge assertion:assertion limitedUse:limitedUse] - .then(^FBLPromise *(NSData *HTTPBody) { + .then(^FBLPromise *(NSData *HTTPBody) { return [self.APIService sendRequestWithURL:URL HTTPMethod:kHTTPMethodPost body:HTTPBody additionalHeaders:@{kContentTypeKey : kJSONContentType}]; }) - .then(^id _Nullable(GULURLSessionDataResponse *_Nullable response) { + .then(^id _Nullable(GACURLSessionDataResponse *_Nullable response) { return [self.APIService appCheckTokenWithAPIResponse:response]; }); } @@ -100,14 +99,14 @@ static NSString *const kHTTPMethodPost = @"POST"; body:nil additionalHeaders:nil]; }] - .then(^id _Nullable(GULURLSessionDataResponse *_Nullable response) { + .then(^id _Nullable(GACURLSessionDataResponse *_Nullable response) { return [self randomChallengeWithAPIResponse:response]; }); } #pragma mark - Challenge response parsing -- (FBLPromise *)randomChallengeWithAPIResponse:(GULURLSessionDataResponse *)response { +- (FBLPromise *)randomChallengeWithAPIResponse:(GACURLSessionDataResponse *)response { return [FBLPromise onQueue:[self backgroundQueue] do:^id _Nullable { NSError *error; @@ -160,14 +159,14 @@ static NSString *const kHTTPMethodPost = @"POST"; keyID:keyID challenge:challenge limitedUse:limitedUse] - .then(^FBLPromise *(NSData *HTTPBody) { + .then(^FBLPromise *(NSData *HTTPBody) { return [self.APIService sendRequestWithURL:URL HTTPMethod:kHTTPMethodPost body:HTTPBody additionalHeaders:@{kContentTypeKey : kJSONContentType}]; }) .thenOn( - [self backgroundQueue], ^id _Nullable(GULURLSessionDataResponse *_Nullable URLResponse) { + [self backgroundQueue], ^id _Nullable(GACURLSessionDataResponse *_Nullable URLResponse) { NSError *error; __auto_type response = diff --git a/AppCheckCore/Sources/AppAttestProvider/Storage/GACAppAttestArtifactStorage.m b/AppCheckCore/Sources/AppAttestProvider/Storage/GACAppAttestArtifactStorage.m index 6d25b7b..e8effbc 100644 --- a/AppCheckCore/Sources/AppAttestProvider/Storage/GACAppAttestArtifactStorage.m +++ b/AppCheckCore/Sources/AppAttestProvider/Storage/GACAppAttestArtifactStorage.m @@ -61,9 +61,13 @@ static NSString *const kKeychainService = @"com.firebase.app_check.app_attest_ar } - (FBLPromise *)getArtifactForKey:(NSString *)keyID { - return [self.keychainStorage getObjectForKey:[self artifactKey] - objectClass:[GACAppAttestStoredArtifact class] - accessGroup:self.accessGroup] + return [FBLPromise + wrapObjectOrErrorCompletion:^(FBLPromiseObjectOrErrorCompletion _Nonnull handler) { + [self.keychainStorage getObjectForKey:[self artifactKey] + objectClass:[GACAppAttestStoredArtifact class] + accessGroup:self.accessGroup + completionHandler:handler]; + }] .then(^NSData *(id storedArtifact) { GACAppAttestStoredArtifact *artifact = (GACAppAttestStoredArtifact *)storedArtifact; if ([artifact isKindOfClass:[GACAppAttestStoredArtifact class]] && @@ -84,8 +88,12 @@ static NSString *const kKeychainService = @"com.firebase.app_check.app_attest_ar return [GACAppCheckErrorUtil keychainErrorWithError:error]; }); } else { - return [self.keychainStorage removeObjectForKey:[self artifactKey] accessGroup:self.accessGroup] - .then(^id _Nullable(NSNull *_Nullable value) { + return [FBLPromise wrapErrorCompletion:^(FBLPromiseErrorCompletion _Nonnull handler) { + [self.keychainStorage removeObjectForKey:[self artifactKey] + accessGroup:self.accessGroup + completionHandler:handler]; + }] + .then(^id _Nullable(id _Nullable __unused _) { return nil; }) .recover(^NSError *(NSError *error) { @@ -100,10 +108,14 @@ static NSString *const kKeychainService = @"com.firebase.app_check.app_attest_ar forKey:(nonnull NSString *)keyID { GACAppAttestStoredArtifact *storedArtifact = [[GACAppAttestStoredArtifact alloc] initWithKeyID:keyID artifact:artifact]; - return [self.keychainStorage setObject:storedArtifact - forKey:[self artifactKey] - accessGroup:self.accessGroup] - .then(^id _Nullable(NSNull *_Nullable value) { + return + [FBLPromise wrapObjectOrErrorCompletion:^( + FBLPromiseObjectOrErrorCompletion _Nonnull handler) { + [self.keychainStorage setObject:storedArtifact + forKey:[self artifactKey] + accessGroup:self.accessGroup + completionHandler:handler]; + }].then(^id _Nullable(id _Nullable value) { return artifact; }); } diff --git a/AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h b/AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h index 35218df..de39194 100644 --- a/AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h +++ b/AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h @@ -19,7 +19,7 @@ #import "AppCheckCore/Sources/Public/AppCheckCore/GACAppAttestProvider.h" @class FBLPromise; -@class GULURLSessionDataResponse; +@class GACURLSessionDataResponse; @class GACAppCheckToken; NS_ASSUME_NONNULL_BEGIN @@ -28,14 +28,14 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly) NSString *baseURL; -- (FBLPromise *) +- (FBLPromise *) sendRequestWithURL:(NSURL *)requestURL HTTPMethod:(NSString *)HTTPMethod body:(nullable NSData *)body additionalHeaders:(nullable NSDictionary *)additionalHeaders; - (FBLPromise *)appCheckTokenWithAPIResponse: - (GULURLSessionDataResponse *)response; + (GACURLSessionDataResponse *)response; @end diff --git a/AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.m b/AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.m index 112992c..7983278 100644 --- a/AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.m +++ b/AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.m @@ -22,14 +22,13 @@ #endif #import "AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.h" +#import "AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h" +#import "AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.h" #import "AppCheckCore/Sources/Core/Errors/GACAppCheckErrorUtil.h" #import "AppCheckCore/Sources/Core/GACAppCheckLogger+Internal.h" #import "AppCheckCore/Sources/Public/AppCheckCore/GACAppCheckErrors.h" #import "AppCheckCore/Sources/Public/AppCheckCore/GACAppCheckLogger.h" -#import -#import - NS_ASSUME_NONNULL_BEGIN static NSString *const kAPIKeyHeaderKey = @"X-Goog-Api-Key"; @@ -64,7 +63,7 @@ static NSString *const kDefaultBaseURL = @"https://firebaseappcheck.googleapis.c return self; } -- (FBLPromise *) +- (FBLPromise *) sendRequestWithURL:(NSURL *)requestURL HTTPMethod:(NSString *)HTTPMethod body:(nullable NSData *)body @@ -76,7 +75,7 @@ static NSString *const kDefaultBaseURL = @"https://firebaseappcheck.googleapis.c .then(^id _Nullable(NSURLRequest *_Nullable request) { return [self sendURLRequest:request]; }) - .then(^id _Nullable(GULURLSessionDataResponse *_Nullable response) { + .then(^id _Nullable(GACURLSessionDataResponse *_Nullable response) { return [self validateHTTPResponseStatusCode:response]; }); } @@ -114,19 +113,19 @@ static NSString *const kDefaultBaseURL = @"https://firebaseappcheck.googleapis.c }]; } -- (FBLPromise *)sendURLRequest:(NSURLRequest *)request { - return [self.URLSession gul_dataTaskPromiseWithRequest:request] +- (FBLPromise *)sendURLRequest:(NSURLRequest *)request { + return [self.URLSession gac_dataTaskPromiseWithRequest:request] .recover(^id(NSError *networkError) { // Wrap raw network error into App Check domain error. return [GACAppCheckErrorUtil APIErrorWithNetworkError:networkError]; }) - .then(^id _Nullable(GULURLSessionDataResponse *response) { + .then(^id _Nullable(GACURLSessionDataResponse *response) { return [self validateHTTPResponseStatusCode:response]; }); } -- (FBLPromise *)validateHTTPResponseStatusCode: - (GULURLSessionDataResponse *)response { +- (FBLPromise *)validateHTTPResponseStatusCode: + (GACURLSessionDataResponse *)response { NSInteger statusCode = response.HTTPResponse.statusCode; return [FBLPromise do:^id _Nullable { if (statusCode < 200 || statusCode >= 300) { @@ -143,7 +142,7 @@ static NSString *const kDefaultBaseURL = @"https://firebaseappcheck.googleapis.c } - (FBLPromise *)appCheckTokenWithAPIResponse: - (GULURLSessionDataResponse *)response { + (GACURLSessionDataResponse *)response { return [FBLPromise onQueue:[self defaultQueue] do:^id _Nullable { NSError *error; diff --git a/AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.h b/AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.h index f8a860c..c4831a9 100644 --- a/AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.h +++ b/AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.h @@ -17,7 +17,7 @@ #import "AppCheckCore/Sources/Public/AppCheckCore/GACAppCheckToken.h" @class FBLPromise; -@class GULURLSessionDataResponse; +@class GACURLSessionDataResponse; NS_ASSUME_NONNULL_BEGIN diff --git a/AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.m b/AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.m index 3adafaf..6daf96b 100644 --- a/AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.m +++ b/AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.m @@ -24,8 +24,6 @@ #import "AppCheckCore/Sources/Core/Errors/GACAppCheckErrorUtil.h" -#import - static NSString *const kResponseFieldToken = @"token"; static NSString *const kResponseFieldTTL = @"ttl"; diff --git a/AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h b/AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h new file mode 100644 index 0000000..e5482d4 --- /dev/null +++ b/AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h @@ -0,0 +1,31 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** The class represents HTTP response received from `NSURLSession`. */ +@interface GACURLSessionDataResponse : NSObject + +@property(nonatomic, readonly) NSHTTPURLResponse *HTTPResponse; +@property(nonatomic, nullable, readonly) NSData *HTTPBody; + +- (instancetype)initWithResponse:(NSHTTPURLResponse *)response HTTPBody:(nullable NSData *)body; + +@end + +NS_ASSUME_NONNULL_END diff --git a/AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.m b/AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.m new file mode 100644 index 0000000..6f05063 --- /dev/null +++ b/AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.m @@ -0,0 +1,30 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h" + +@implementation GACURLSessionDataResponse + +- (instancetype)initWithResponse:(NSHTTPURLResponse *)response HTTPBody:(NSData *)body { + self = [super init]; + if (self) { + _HTTPResponse = response; + _HTTPBody = body; + } + return self; +} + +@end diff --git a/AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.h b/AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.h new file mode 100644 index 0000000..a79586c --- /dev/null +++ b/AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.h @@ -0,0 +1,37 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +@class FBLPromise; +@class GACURLSessionDataResponse; + +NS_ASSUME_NONNULL_BEGIN + +/** Promise based API for `NSURLSession`. */ +@interface NSURLSession (GACPromises) + +/** Creates a promise wrapping `-[NSURLSession dataTaskWithRequest:completionHandler:]` method. + * @param URLRequest The request to create a data task with. + * @return A promise that is fulfilled when an HTTP response is received (with any response code), + * or is rejected with the error passed to the task completion. + */ +- (FBLPromise *)gac_dataTaskPromiseWithRequest: + (NSURLRequest *)URLRequest; + +@end + +NS_ASSUME_NONNULL_END diff --git a/AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.m b/AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.m new file mode 100644 index 0000000..831f373 --- /dev/null +++ b/AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.m @@ -0,0 +1,46 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.h" + +#if __has_include() +#import +#else +#import "FBLPromises.h" +#endif + +#import "AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h" + +@implementation NSURLSession (GACPromises) + +- (FBLPromise *)gac_dataTaskPromiseWithRequest: + (NSURLRequest *)URLRequest { + return [FBLPromise async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + [[self dataTaskWithRequest:URLRequest + completionHandler:^(NSData *_Nullable data, NSURLResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + reject(error); + } else { + fulfill([[GACURLSessionDataResponse alloc] + initWithResponse:(NSHTTPURLResponse *)response + HTTPBody:data]); + } + }] resume]; + }]; +} + +@end diff --git a/AppCheckCore/Sources/Core/Storage/GACAppCheckStorage.m b/AppCheckCore/Sources/Core/Storage/GACAppCheckStorage.m index cae8c65..588a8ea 100644 --- a/AppCheckCore/Sources/Core/Storage/GACAppCheckStorage.m +++ b/AppCheckCore/Sources/Core/Storage/GACAppCheckStorage.m @@ -60,9 +60,13 @@ static NSString *const kKeychainService = @"com.google.app_check_core.token_stor } - (FBLPromise *)getToken { - return [self.keychainStorage getObjectForKey:[self tokenKey] - objectClass:[GACAppCheckStoredToken class] - accessGroup:self.accessGroup] + return [FBLPromise + wrapObjectOrErrorCompletion:^(FBLPromiseObjectOrErrorCompletion _Nonnull handler) { + [self.keychainStorage getObjectForKey:[self tokenKey] + objectClass:[GACAppCheckStoredToken class] + accessGroup:self.accessGroup + completionHandler:handler]; + }] .then(^GACAppCheckToken *(id storedToken) { if ([(NSObject *)storedToken isKindOfClass:[GACAppCheckStoredToken class]]) { return [(GACAppCheckStoredToken *)storedToken appCheckToken]; @@ -81,8 +85,12 @@ static NSString *const kKeychainService = @"com.google.app_check_core.token_stor return [GACAppCheckErrorUtil keychainErrorWithError:error]; }); } else { - return [self.keychainStorage removeObjectForKey:[self tokenKey] accessGroup:self.accessGroup] - .then(^id _Nullable(NSNull *_Nullable value) { + return [FBLPromise wrapErrorCompletion:^(FBLPromiseErrorCompletion _Nonnull handler) { + [self.keychainStorage removeObjectForKey:[self tokenKey] + accessGroup:self.accessGroup + completionHandler:handler]; + }] + .then(^id _Nullable(id _Nullable __unused _) { return token; }) .recover(^NSError *(NSError *error) { @@ -96,10 +104,14 @@ static NSString *const kKeychainService = @"com.google.app_check_core.token_stor - (FBLPromise *)storeToken:(nullable GACAppCheckToken *)token { GACAppCheckStoredToken *storedToken = [[GACAppCheckStoredToken alloc] init]; [storedToken updateWithToken:token]; - return [self.keychainStorage setObject:storedToken - forKey:[self tokenKey] - accessGroup:self.accessGroup] - .then(^id _Nullable(NSNull *_Nullable value) { + return + [FBLPromise wrapObjectOrErrorCompletion:^( + FBLPromiseObjectOrErrorCompletion _Nonnull handler) { + [self.keychainStorage setObject:storedToken + forKey:[self tokenKey] + accessGroup:self.accessGroup + completionHandler:handler]; + }].then(^id _Nullable(id _Nullable value) { return token; }); } diff --git a/AppCheckCore/Sources/DebugProvider/API/GACAppCheckDebugProviderAPIService.m b/AppCheckCore/Sources/DebugProvider/API/GACAppCheckDebugProviderAPIService.m index 52a3de1..e968b29 100644 --- a/AppCheckCore/Sources/DebugProvider/API/GACAppCheckDebugProviderAPIService.m +++ b/AppCheckCore/Sources/DebugProvider/API/GACAppCheckDebugProviderAPIService.m @@ -22,9 +22,6 @@ #import "FBLPromises.h" #endif -#import -#import - #import "AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h" #import "AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.h" @@ -67,13 +64,13 @@ static NSString *const kLimitedUseField = @"limited_use"; NSURL *URL = [NSURL URLWithString:URLString]; return [self HTTPBodyWithDebugToken:debugToken limitedUse:limitedUse] - .then(^FBLPromise *(NSData *HTTPBody) { + .then(^FBLPromise *(NSData *HTTPBody) { return [self.APIService sendRequestWithURL:URL HTTPMethod:@"POST" body:HTTPBody additionalHeaders:@{kContentTypeKey : kJSONContentType}]; }) - .then(^id _Nullable(GULURLSessionDataResponse *_Nullable response) { + .then(^id _Nullable(GACURLSessionDataResponse *_Nullable response) { return [self.APIService appCheckTokenWithAPIResponse:response]; }); } diff --git a/AppCheckCore/Sources/DeviceCheckProvider/API/GACDeviceCheckAPIService.m b/AppCheckCore/Sources/DeviceCheckProvider/API/GACDeviceCheckAPIService.m index a13dd90..1fd7d22 100644 --- a/AppCheckCore/Sources/DeviceCheckProvider/API/GACDeviceCheckAPIService.m +++ b/AppCheckCore/Sources/DeviceCheckProvider/API/GACDeviceCheckAPIService.m @@ -22,8 +22,6 @@ #import "FBLPromises.h" #endif -#import - #import "AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h" #import "AppCheckCore/Sources/Core/APIService/GACAppCheckToken+APIResponse.h" @@ -66,13 +64,13 @@ static NSString *const kLimitedUseField = @"limited_use"; NSURL *URL = [NSURL URLWithString:URLString]; return [self HTTPBodyWithDeviceToken:deviceToken limitedUse:limitedUse] - .then(^FBLPromise *(NSData *HTTPBody) { + .then(^FBLPromise *(NSData *HTTPBody) { return [self.APIService sendRequestWithURL:URL HTTPMethod:@"POST" body:HTTPBody additionalHeaders:@{kContentTypeKey : kJSONContentType}]; }) - .then(^id _Nullable(GULURLSessionDataResponse *_Nullable response) { + .then(^id _Nullable(GACURLSessionDataResponse *_Nullable response) { return [self.APIService appCheckTokenWithAPIResponse:response]; }); } diff --git a/AppCheckCore/Tests/Unit/AppAttestProvider/GACAppAttestAPIServiceTests.m b/AppCheckCore/Tests/Unit/AppAttestProvider/GACAppAttestAPIServiceTests.m index 0e855e0..ad5ea66 100644 --- a/AppCheckCore/Tests/Unit/AppAttestProvider/GACAppAttestAPIServiceTests.m +++ b/AppCheckCore/Tests/Unit/AppAttestProvider/GACAppAttestAPIServiceTests.m @@ -19,11 +19,10 @@ #import #import "FBLPromise+Testing.h" -#import - #import "AppCheckCore/Sources/AppAttestProvider/API/GACAppAttestAPIService.h" #import "AppCheckCore/Sources/AppAttestProvider/API/GACAppAttestAttestationResponse.h" #import "AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h" +#import "AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h" #import "AppCheckCore/Sources/Core/Errors/GACAppCheckErrorUtil.h" #import "AppCheckCore/Sources/Core/Errors/GACAppCheckHTTPError.h" #import "AppCheckCore/Sources/Public/AppCheckCore/GACAppCheckErrors.h" @@ -69,7 +68,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; - (void)testGetRandomChallengeWhenAPIResponseValid { // 1. Prepare API response. NSData *responseBody = [GACFixtureLoader loadFixtureNamed:@"AppAttestResponseSuccess.json"]; - GULURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 + GACURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 responseBody:responseBody]; // 2. Stub API Service Request to return prepared API response. [self stubMockAPIServiceRequestForChallengeRequestWithResponse:validAPIResponse]; @@ -94,7 +93,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; // 1. Prepare API response. NSString *responseBodyString = @"Generate challenge failed with invalid format."; NSData *responseBody = [responseBodyString dataUsingEncoding:NSUTF8StringEncoding]; - GULURLSessionDataResponse *invalidAPIResponse = [self APIResponseWithCode:300 + GACURLSessionDataResponse *invalidAPIResponse = [self APIResponseWithCode:300 responseBody:responseBody]; GACAppCheckHTTPError *APIError = [GACAppCheckErrorUtil APIErrorWithHTTPResponse:invalidAPIResponse.HTTPResponse @@ -124,7 +123,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; - (void)testGetRandomChallengeWhenAPIResponseEmpty { // 1. Prepare API response. NSData *responseBody = [NSData data]; - GULURLSessionDataResponse *emptyAPIResponse = [self APIResponseWithCode:200 + GACURLSessionDataResponse *emptyAPIResponse = [self APIResponseWithCode:200 responseBody:responseBody]; // 2. Stub API Service Request to return prepared API response. [self stubMockAPIServiceRequestForChallengeRequestWithResponse:emptyAPIResponse]; @@ -147,7 +146,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; // 1. Prepare API response. NSString *responseBodyString = @"Generate challenge failed with invalid format."; NSData *responseBody = [responseBodyString dataUsingEncoding:NSUTF8StringEncoding]; - GULURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 + GACURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 responseBody:responseBody]; // 2. Stub API Service Request to return prepared API response. [self stubMockAPIServiceRequestForChallengeRequestWithResponse:validAPIResponse]; @@ -175,7 +174,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; missingField:(NSString *)fieldName { // 1. Prepare API response. NSData *missingFieldBody = [GACFixtureLoader loadFixtureNamed:fixtureName]; - GULURLSessionDataResponse *incompleteAPIResponse = [self APIResponseWithCode:200 + GACURLSessionDataResponse *incompleteAPIResponse = [self APIResponseWithCode:200 responseBody:missingFieldBody]; // 2. Stub API Service Request to return prepared API response. [self stubMockAPIServiceRequestForChallengeRequestWithResponse:incompleteAPIResponse]; @@ -217,7 +216,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; // 1. Prepare response. NSData *responseBody = [GACFixtureLoader loadFixtureNamed:@"FACTokenExchangeResponseSuccess.json"]; - GULURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 + GACURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 responseBody:responseBody]; // 2. Stub API Service @@ -261,7 +260,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; // 1. Prepare response. NSData *responseBody = [GACFixtureLoader loadFixtureNamed:@"FACTokenExchangeResponseSuccess.json"]; - GULURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 + GACURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 responseBody:responseBody]; // 2. Stub API Service @@ -297,7 +296,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; // 1. Prepare response. NSData *responseBody = [GACFixtureLoader loadFixtureNamed:@"DeviceCheckResponseMissingToken.json"]; - GULURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 + GACURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 responseBody:responseBody]; // 2. Stub API Service @@ -344,7 +343,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; // 1. Prepare response. NSData *responseBody = [GACFixtureLoader loadFixtureNamed:@"AppAttestAttestationResponseSuccess.json"]; - GULURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 + GACURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 responseBody:responseBody]; // 2. Stub API Service @@ -419,7 +418,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; // 1. Prepare unexpected response. NSData *responseBody = [GACFixtureLoader loadFixtureNamed:@"FACTokenExchangeResponseSuccess.json"]; - GULURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 + GACURLSessionDataResponse *validAPIResponse = [self APIResponseWithCode:200 responseBody:responseBody]; // 2. Stub API Service @@ -449,12 +448,12 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; #pragma mark - Helpers -- (GULURLSessionDataResponse *)APIResponseWithCode:(NSInteger)code +- (GACURLSessionDataResponse *)APIResponseWithCode:(NSInteger)code responseBody:(NSData *)responseBody { XCTAssertNotNil(responseBody); NSHTTPURLResponse *HTTPResponse = [GACURLSessionOCMockStub HTTPResponseWithCode:code]; - GULURLSessionDataResponse *APIResponse = - [[GULURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:responseBody]; + GACURLSessionDataResponse *APIResponse = + [[GACURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:responseBody]; return APIResponse; } @@ -494,7 +493,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; challenge:(NSData *)challenge assertion:(NSData *)assertion limitedUse:(BOOL)limitedUse - response:(nullable GULURLSessionDataResponse *)response + response:(nullable GACURLSessionDataResponse *)response error:(nullable NSError *)error { id URLValidationArg = [self URLValidationArgumentWithCustomMethod:@"exchangeAppAttestAssertion"]; @@ -550,7 +549,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; .andReturn(responsePromise); } -- (void)expectTokenWithAPIReponse:(nonnull GULURLSessionDataResponse *)response +- (void)expectTokenWithAPIReponse:(nonnull GACURLSessionDataResponse *)response toReturnToken:(nullable GACAppCheckToken *)token { FBLPromise *tokenPromise = [FBLPromise pendingPromise]; if (token) { @@ -566,7 +565,7 @@ static NSString *const kResourceName = @"projects/project_id/apps/app_id"; keyID:(NSString *)keyID challenge:(NSData *)challenge limitedUse:(BOOL)limitedUse - response:(nullable GULURLSessionDataResponse *)response + response:(nullable GACURLSessionDataResponse *)response error:(nullable NSError *)error { id URLValidationArg = [self URLValidationArgumentWithCustomMethod:@"exchangeAppAttestAttestation"]; diff --git a/AppCheckCore/Tests/Unit/AppAttestProvider/Storage/GACAppAttestArtifactStorageTests.m b/AppCheckCore/Tests/Unit/AppAttestProvider/Storage/GACAppAttestArtifactStorageTests.m index 30ae7a8..f2308e2 100644 --- a/AppCheckCore/Tests/Unit/AppAttestProvider/Storage/GACAppAttestArtifactStorageTests.m +++ b/AppCheckCore/Tests/Unit/AppAttestProvider/Storage/GACAppAttestArtifactStorageTests.m @@ -141,10 +141,11 @@ static NSString *const kAppID = @"1:100000000000:ios:aaaaaaaaaaaaaaaaaaaaaaaa"; // 2. Create and expect keychain error. NSError *gulsKeychainError = [NSError errorWithDomain:@"com.guls.keychain" code:-1 userInfo:nil]; + id completionArg = [OCMArg invokeBlockWithArgs:[NSNull null], gulsKeychainError, nil]; OCMExpect([mockKeychainStorage getObjectForKey:[OCMArg any] objectClass:[OCMArg any] - accessGroup:[OCMArg any]]) - .andReturn([FBLPromise resolvedWith:gulsKeychainError]); + accessGroup:[OCMArg any] + completionHandler:completionArg]); // 3. Get artifact and verify results. __auto_type getPromise = [artifactStorage getArtifactForKey:@"key"]; @@ -166,10 +167,11 @@ static NSString *const kAppID = @"1:100000000000:ios:aaaaaaaaaaaaaaaaaaaaaaaa"; accessGroup:nil]; // 2. Create and expect keychain error. NSError *gulsKeychainError = [NSError errorWithDomain:@"com.guls.keychain" code:-1 userInfo:nil]; + id completionArg = [OCMArg invokeBlockWithArgs:[NSNull null], gulsKeychainError, nil]; OCMExpect([mockKeychainStorage setObject:[OCMArg any] forKey:[OCMArg any] - accessGroup:[OCMArg any]]) - .andReturn([FBLPromise resolvedWith:gulsKeychainError]); + accessGroup:[OCMArg any] + completionHandler:completionArg]); // 3. Set artifact and verify results. NSData *artifact = [@"artifact" dataUsingEncoding:NSUTF8StringEncoding]; @@ -193,8 +195,10 @@ static NSString *const kAppID = @"1:100000000000:ios:aaaaaaaaaaaaaaaaaaaaaaaa"; // 2. Create and expect keychain error. NSError *gulsKeychainError = [NSError errorWithDomain:@"com.guls.keychain" code:-1 userInfo:nil]; - OCMExpect([mockKeychainStorage removeObjectForKey:[OCMArg any] accessGroup:[OCMArg any]]) - .andReturn([FBLPromise resolvedWith:gulsKeychainError]); + id completionArg = [OCMArg invokeBlockWithArgs:gulsKeychainError, nil]; + OCMExpect([mockKeychainStorage removeObjectForKey:[OCMArg any] + accessGroup:[OCMArg any] + completionHandler:completionArg]); // 3. Remove artifact and verify results. __auto_type setPromise = [artifactStorage setArtifact:nil forKey:@"key"]; diff --git a/AppCheckCore/Tests/Unit/Core/GACAppCheckAPIServiceTests.m b/AppCheckCore/Tests/Unit/Core/GACAppCheckAPIServiceTests.m index bf69835..b8de7a7 100644 --- a/AppCheckCore/Tests/Unit/Core/GACAppCheckAPIServiceTests.m +++ b/AppCheckCore/Tests/Unit/Core/GACAppCheckAPIServiceTests.m @@ -19,10 +19,9 @@ #import #import "FBLPromise+Testing.h" -#import -#import - #import "AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h" +#import "AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h" +#import "AppCheckCore/Sources/Core/APIService/NSURLSession+GACPromises.h" #import "AppCheckCore/Sources/Core/Errors/GACAppCheckErrorUtil.h" #import "AppCheckCore/Sources/Public/AppCheckCore/GACAppCheckErrors.h" #import "AppCheckCore/Sources/Public/AppCheckCore/GACAppCheckToken.h" @@ -333,8 +332,8 @@ static NSString *const kTestHeaderValue = @"TEST_HEADER_VALUE"; [GACFixtureLoader loadFixtureNamed:@"FACTokenExchangeResponseSuccess.json"]; XCTAssertNotNil(responseBody); NSHTTPURLResponse *HTTPResponse = [GACURLSessionOCMockStub HTTPResponseWithCode:200]; - GULURLSessionDataResponse *APIResponse = - [[GULURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:responseBody]; + GACURLSessionDataResponse *APIResponse = + [[GACURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:responseBody]; // 2. Expected result. NSString *expectedFACToken = @"valid_app_check_token"; @@ -359,8 +358,8 @@ static NSString *const kTestHeaderValue = @"TEST_HEADER_VALUE"; NSString *responseBodyString = @"Token verification failed."; NSData *responseBody = [responseBodyString dataUsingEncoding:NSUTF8StringEncoding]; NSHTTPURLResponse *HTTPResponse = [GACURLSessionOCMockStub HTTPResponseWithCode:200]; - GULURLSessionDataResponse *APIResponse = - [[GULURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:responseBody]; + GACURLSessionDataResponse *APIResponse = + [[GACURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:responseBody]; // 2. Parse API response. __auto_type tokenPromise = [self.APIService appCheckTokenWithAPIResponse:APIResponse]; @@ -394,8 +393,8 @@ static NSString *const kTestHeaderValue = @"TEST_HEADER_VALUE"; XCTAssertNotNil(missingFiledBody); NSHTTPURLResponse *HTTPResponse = [GACURLSessionOCMockStub HTTPResponseWithCode:200]; - GULURLSessionDataResponse *APIResponse = - [[GULURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:missingFiledBody]; + GACURLSessionDataResponse *APIResponse = + [[GACURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:missingFiledBody]; // 2. Parse API response. __auto_type tokenPromise = [self.APIService appCheckTokenWithAPIResponse:APIResponse]; @@ -435,17 +434,17 @@ static NSString *const kTestHeaderValue = @"TEST_HEADER_VALUE"; id URLRequestValidationArg = [OCMArg checkWithBlock:nonOptionalRequestValidationBlock]; // Result promise. - FBLPromise *result = [FBLPromise pendingPromise]; + FBLPromise *result = [FBLPromise pendingPromise]; if (error == nil) { - GULURLSessionDataResponse *response = - [[GULURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:body]; + GACURLSessionDataResponse *response = + [[GACURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:body]; [result fulfill:response]; } else { [result reject:error]; } // Stub the method. - OCMExpect([URLSessionMock gul_dataTaskPromiseWithRequest:URLRequestValidationArg]) + OCMExpect([URLSessionMock gac_dataTaskPromiseWithRequest:URLRequestValidationArg]) .andReturn(result); } diff --git a/AppCheckCore/Tests/Unit/Core/GACAppCheckBackoffWrapperTests.m b/AppCheckCore/Tests/Unit/Core/GACAppCheckBackoffWrapperTests.m index 282bdd4..7194285 100644 --- a/AppCheckCore/Tests/Unit/Core/GACAppCheckBackoffWrapperTests.m +++ b/AppCheckCore/Tests/Unit/Core/GACAppCheckBackoffWrapperTests.m @@ -361,8 +361,8 @@ errorHandler:self.errorHandler]; // 1.5 Wait for operation to complete. - [self waitForExpectationsWithTimeout:1.0 handler:NULL]; - XCTAssert(FBLWaitForPromisesWithTimeout(1.0)); + [self waitForExpectationsWithTimeout:5.0 handler:NULL]; + XCTAssert(FBLWaitForPromisesWithTimeout(5.0)); // 1.6 Expect the promise to be rejected with a backoff error. XCTAssertTrue(operationWithBackoff.isRejected); @@ -381,8 +381,8 @@ errorHandler:self.errorHandler]; // 2.4 Wait for operation to complete. - [self waitForExpectationsWithTimeout:1.0 handler:NULL]; - XCTAssert(FBLWaitForPromisesWithTimeout(1.0)); + [self waitForExpectationsWithTimeout:5.0 handler:NULL]; + XCTAssert(FBLWaitForPromisesWithTimeout(5.0)); // 2.5 Expect the promise to be rejected with a backoff error. XCTAssertTrue(operationWithBackoff.isRejected); diff --git a/AppCheckCore/Tests/Unit/Core/GACAppCheckStorageTests.m b/AppCheckCore/Tests/Unit/Core/GACAppCheckStorageTests.m index 2725f51..e77130c 100644 --- a/AppCheckCore/Tests/Unit/Core/GACAppCheckStorageTests.m +++ b/AppCheckCore/Tests/Unit/Core/GACAppCheckStorageTests.m @@ -98,10 +98,11 @@ static NSString *const kGoogleAppID = @"1:100000000000:ios:aaaaaaaaaaaaaaaaaaaaa accessGroup:nil]; // 2. Create and expect keychain error. NSError *gulsKeychainError = [NSError errorWithDomain:@"com.guls.keychain" code:-1 userInfo:nil]; + id completionArg = [OCMArg invokeBlockWithArgs:[NSNull null], gulsKeychainError, nil]; OCMExpect([mockKeychainStorage getObjectForKey:[OCMArg any] objectClass:[OCMArg any] - accessGroup:[OCMArg any]]) - .andReturn([FBLPromise resolvedWith:gulsKeychainError]); + accessGroup:[OCMArg any] + completionHandler:completionArg]); // 3. Get token and verify results. __auto_type getPromise = [storage getToken]; @@ -123,10 +124,11 @@ static NSString *const kGoogleAppID = @"1:100000000000:ios:aaaaaaaaaaaaaaaaaaaaa // 2. Create and expect keychain error. NSError *gulsKeychainError = [NSError errorWithDomain:@"com.guls.keychain" code:-1 userInfo:nil]; + id completionArg = [OCMArg invokeBlockWithArgs:[NSNull null], gulsKeychainError, nil]; OCMExpect([mockKeychainStorage setObject:[OCMArg any] forKey:[OCMArg any] - accessGroup:[OCMArg any]]) - .andReturn([FBLPromise resolvedWith:gulsKeychainError]); + accessGroup:[OCMArg any] + completionHandler:completionArg]); // 3. Set token and verify results. GACAppCheckToken *tokenToStore = [[GACAppCheckToken alloc] initWithToken:@"token" @@ -148,11 +150,12 @@ static NSString *const kGoogleAppID = @"1:100000000000:ios:aaaaaaaaaaaaaaaaaaaaa GACAppCheckStorage *storage = [[GACAppCheckStorage alloc] initWithTokenKey:self.tokenKey keychainStorage:mockKeychainStorage accessGroup:nil]; - // 2. Create and expect keychain error. NSError *gulsKeychainError = [NSError errorWithDomain:@"com.guls.keychain" code:-1 userInfo:nil]; - OCMExpect([mockKeychainStorage removeObjectForKey:[OCMArg any] accessGroup:[OCMArg any]]) - .andReturn([FBLPromise resolvedWith:gulsKeychainError]); + id completionArg = [OCMArg invokeBlockWithArgs:gulsKeychainError, nil]; + OCMExpect([mockKeychainStorage removeObjectForKey:[OCMArg any] + accessGroup:[OCMArg any] + completionHandler:completionArg]); // 3. Remove token and verify results. __auto_type getPromise = [storage setToken:nil]; diff --git a/AppCheckCore/Tests/Unit/DebugProvider/GACAppCheckDebugProviderAPIServiceTests.m b/AppCheckCore/Tests/Unit/DebugProvider/GACAppCheckDebugProviderAPIServiceTests.m index bbd9c70..1c9f619 100644 --- a/AppCheckCore/Tests/Unit/DebugProvider/GACAppCheckDebugProviderAPIServiceTests.m +++ b/AppCheckCore/Tests/Unit/DebugProvider/GACAppCheckDebugProviderAPIServiceTests.m @@ -22,9 +22,8 @@ #import "AppCheckCore/Sources/Public/AppCheckCore/GACAppCheck.h" #import "AppCheckCore/Sources/Public/AppCheckCore/GACAppCheckToken.h" -#import - #import "AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h" +#import "AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h" #import "AppCheckCore/Sources/Core/Errors/GACAppCheckErrorUtil.h" #import "AppCheckCore/Sources/DebugProvider/API/GACAppCheckDebugProviderAPIService.h" @@ -85,8 +84,8 @@ static NSString *const kResourceName = @"projects/test_project_id/apps/test_app_ limitedUse:limitedUse]; NSData *fakeResponseData = [@"fake response" dataUsingEncoding:NSUTF8StringEncoding]; NSHTTPURLResponse *HTTPResponse = [GACURLSessionOCMockStub HTTPResponseWithCode:200]; - GULURLSessionDataResponse *APIResponse = - [[GULURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:fakeResponseData]; + GACURLSessionDataResponse *APIResponse = + [[GACURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:fakeResponseData]; OCMExpect([self.mockAPIService sendRequestWithURL:URLValidationArg HTTPMethod:@"POST" @@ -133,8 +132,8 @@ static NSString *const kResourceName = @"projects/test_project_id/apps/test_app_ id HTTPBodyValidationArg = [self HTTPBodyValidationArgWithDebugToken:debugToken limitedUse:NO]; NSData *fakeResponseData = [@"fake response" dataUsingEncoding:NSUTF8StringEncoding]; NSHTTPURLResponse *HTTPResponse = [GACURLSessionOCMockStub HTTPResponseWithCode:200]; - GULURLSessionDataResponse *APIResponse = - [[GULURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:fakeResponseData]; + GACURLSessionDataResponse *APIResponse = + [[GACURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:fakeResponseData]; OCMExpect([self.mockAPIService sendRequestWithURL:URLValidationArg HTTPMethod:@"POST" diff --git a/AppCheckCore/Tests/Unit/DeviceCheckProvider/GACDeviceCheckAPIServiceTests.m b/AppCheckCore/Tests/Unit/DeviceCheckProvider/GACDeviceCheckAPIServiceTests.m index d40e4b8..887676a 100644 --- a/AppCheckCore/Tests/Unit/DeviceCheckProvider/GACDeviceCheckAPIServiceTests.m +++ b/AppCheckCore/Tests/Unit/DeviceCheckProvider/GACDeviceCheckAPIServiceTests.m @@ -19,9 +19,8 @@ #import #import "FBLPromise+Testing.h" -#import - #import "AppCheckCore/Sources/Core/APIService/GACAppCheckAPIService.h" +#import "AppCheckCore/Sources/Core/APIService/GACURLSessionDataResponse.h" #import "AppCheckCore/Sources/Core/Errors/GACAppCheckErrorUtil.h" #import "AppCheckCore/Sources/DeviceCheckProvider/API/GACDeviceCheckAPIService.h" #import "AppCheckCore/Sources/Public/AppCheckCore/GACAppCheckErrors.h" @@ -92,8 +91,8 @@ typedef BOOL (^FIRRequestValidationBlock)(NSURLRequest *request); XCTAssertNotNil(responseBody); NSHTTPURLResponse *HTTPResponse = [GACURLSessionOCMockStub HTTPResponseWithCode:200]; - GULURLSessionDataResponse *APIResponse = - [[GULURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:responseBody]; + GACURLSessionDataResponse *APIResponse = + [[GACURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:responseBody]; OCMExpect([self.mockAPIService sendRequestWithURL:URLValidationArg HTTPMethod:@"POST" @@ -145,8 +144,8 @@ typedef BOOL (^FIRRequestValidationBlock)(NSURLRequest *request); XCTAssertNotNil(responseBody); NSHTTPURLResponse *HTTPResponse = [GACURLSessionOCMockStub HTTPResponseWithCode:200]; - GULURLSessionDataResponse *APIResponse = - [[GULURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:responseBody]; + GACURLSessionDataResponse *APIResponse = + [[GACURLSessionDataResponse alloc] initWithResponse:HTTPResponse HTTPBody:responseBody]; OCMExpect([self.mockAPIService sendRequestWithURL:URLValidationArg HTTPMethod:@"POST"