Skip to content

Commit c416b10

Browse files
Move reporting Firebase user agent from checkin to register (#2679)
1 parent 8ef6cf8 commit c416b10

File tree

6 files changed

+50
-39
lines changed

6 files changed

+50
-39
lines changed

Example/InstanceID/Tests/FIRInstanceIDCheckinServiceTest.m

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
#import <XCTest/XCTest.h>
1818

19-
#import <FirebaseCore/FIRAppInternal.h>
2019
#import <OCMock/OCMock.h>
2120
#import "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h"
2221
#import "Firebase/InstanceID/FIRInstanceIDCheckinPreferences.h"
@@ -103,37 +102,6 @@ - (void)testFailedCheckinService {
103102
}];
104103
}
105104

106-
- (void)testCheckinServiceAddsFirebaseUserAgentToHTTPHeader {
107-
NSString *expectedFirebaseUserAgent = [FIRApp firebaseUserAgent];
108-
109-
FIRInstanceIDURLRequestTestBlock successHandler = [self successfulCheckinCompletionHandler];
110-
111-
[FIRInstanceIDCheckinService
112-
setCheckinTestBlock:^(NSURLRequest *request,
113-
FIRInstanceIDURLRequestTestResponseBlock response) {
114-
NSString *requestFirebaseUserAgentValue =
115-
request.allHTTPHeaderFields[kFIRInstanceIDFirebaseUserAgentKey];
116-
XCTAssertEqualObjects(requestFirebaseUserAgentValue, expectedFirebaseUserAgent);
117-
successHandler(request, response);
118-
}];
119-
120-
XCTestExpectation *checkinCompletionExpectation =
121-
[self expectationWithDescription:@"Checkin Completion"];
122-
123-
[self.checkinService
124-
checkinWithExistingCheckin:nil
125-
completion:^(FIRInstanceIDCheckinPreferences *preferences, NSError *error) {
126-
[checkinCompletionExpectation fulfill];
127-
}];
128-
129-
[self waitForExpectationsWithTimeout:5
130-
handler:^(NSError *error) {
131-
if (error) {
132-
XCTFail(@"Checkin Timeout Error: %@", error);
133-
}
134-
}];
135-
}
136-
137105
- (void)testCheckinServiceFailsWithErrorAfterStopFetching {
138106
[self.checkinService stopFetching];
139107

Example/InstanceID/Tests/FIRInstanceIDTokenOperationsTest.m

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
#import "Firebase/InstanceID/NSError+FIRInstanceID.h"
3333
#import "Firebase/InstanceID/Public/FIRInstanceID.h"
3434

35+
#import <FirebaseCore/FIRAppInternal.h>
36+
3537
static NSString *kDeviceID = @"fakeDeviceID";
3638
static NSString *kSecretToken = @"fakeSecretToken";
3739
static NSString *kDigestString = @"test-digest";
@@ -317,6 +319,46 @@ - (void)testHTTPAuthHeaderGenerationFromCheckin {
317319
XCTAssertEqualObjects(generatedHeader, expectedHeader);
318320
}
319321

322+
- (void)testTokenFetchOperationFirebaseUserAgentHeader {
323+
XCTestExpectation *completionExpectation =
324+
[self expectationWithDescription:@"completionExpectation"];
325+
326+
FIRInstanceIDCheckinPreferences *checkinPreferences =
327+
[self setCheckinPreferencesWithLastCheckinTime:0];
328+
329+
FIRInstanceIDTokenFetchOperation *operation =
330+
[[FIRInstanceIDTokenFetchOperation alloc] initWithAuthorizedEntity:kAuthorizedEntity
331+
scope:kScope
332+
options:nil
333+
checkinPreferences:checkinPreferences
334+
keyPair:self.keyPair];
335+
operation.testBlock =
336+
^(NSURLRequest *request, FIRInstanceIDURLRequestTestResponseBlock response) {
337+
NSString *userAgentValue = request.allHTTPHeaderFields[kFIRInstanceIDFirebaseUserAgentKey];
338+
XCTAssertEqualObjects(userAgentValue, [FIRApp firebaseUserAgent]);
339+
340+
// Return a response with Error=RST
341+
NSData *responseBody = [self dataForFetchRequest:request returnValidToken:NO];
342+
NSHTTPURLResponse *responseObject = [[NSHTTPURLResponse alloc] initWithURL:request.URL
343+
statusCode:200
344+
HTTPVersion:@"HTTP/1.1"
345+
headerFields:nil];
346+
response(responseBody, responseObject, nil);
347+
};
348+
349+
[operation addCompletionHandler:^(FIRInstanceIDTokenOperationResult result,
350+
NSString *_Nullable token, NSError *_Nullable error) {
351+
[completionExpectation fulfill];
352+
}];
353+
354+
[operation start];
355+
356+
[self waitForExpectationsWithTimeout:0.25
357+
handler:^(NSError *_Nullable error) {
358+
XCTAssertNil(error.localizedDescription);
359+
}];
360+
}
361+
320362
#pragma mark - Internal Helpers
321363
- (NSData *)dataForFetchRequest:(NSURLRequest *)request returnValidToken:(BOOL)returnValidToken {
322364
NSString *response;

Firebase/InstanceID/FIRInstanceIDCheckinService.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ FOUNDATION_EXPORT NSString *const kFIRInstanceIDLastCheckinTimeKey;
2828
FOUNDATION_EXPORT NSString *const kFIRInstanceIDVersionInfoStringKey;
2929
FOUNDATION_EXPORT NSString *const kFIRInstanceIDGServicesDictionaryKey;
3030
FOUNDATION_EXPORT NSString *const kFIRInstanceIDDeviceDataVersionKey;
31-
FOUNDATION_EXPORT NSString *const kFIRInstanceIDFirebaseUserAgentKey;
3231

3332
@class FIRInstanceIDCheckinPreferences;
3433

Firebase/InstanceID/FIRInstanceIDCheckinService.m

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
#import "FIRInstanceIDCheckinService.h"
1818

19-
#import <FirebaseCore/FIRAppInternal.h>
2019
#import "FIRInstanceIDCheckinPreferences+Internal.h"
2120
#import "FIRInstanceIDCheckinPreferences_Private.h"
2221
#import "FIRInstanceIDDefines.h"
@@ -35,7 +34,6 @@
3534
NSString *const kFIRInstanceIDVersionInfoStringKey = @"GMSInstanceIDVersionInfo";
3635
NSString *const kFIRInstanceIDGServicesDictionaryKey = @"GMSInstanceIDGServicesData";
3736
NSString *const kFIRInstanceIDDeviceDataVersionKey = @"GMSInstanceIDDeviceDataVersion";
38-
NSString *const kFIRInstanceIDFirebaseUserAgentKey = @"X-firebase-client";
3937

4038
static NSUInteger const kCheckinType = 2; // DeviceType IOS in l/w/a/_checkin.proto
4139
static NSUInteger const kCheckinVersion = 2;
@@ -85,11 +83,7 @@ - (void)checkinWithExistingCheckin:(FIRInstanceIDCheckinPreferences *)existingCh
8583

8684
NSURL *url = [NSURL URLWithString:kDeviceCheckinURL];
8785
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
88-
8986
[request setValue:@"application/json" forHTTPHeaderField:@"content-type"];
90-
[request setValue:[FIRApp firebaseUserAgent]
91-
forHTTPHeaderField:kFIRInstanceIDFirebaseUserAgentKey];
92-
9387
NSDictionary *checkinParameters = [self checkinParametersWithExistingCheckin:existingCheckin];
9488
NSData *checkinData = [NSJSONSerialization dataWithJSONObject:checkinParameters
9589
options:0

Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
#import "FIRInstanceIDTokenOperation.h"
1818

1919
NS_ASSUME_NONNULL_BEGIN
20+
21+
FOUNDATION_EXPORT NSString *const kFIRInstanceIDFirebaseUserAgentKey;
22+
2023
@interface FIRInstanceIDTokenFetchOperation : FIRInstanceIDTokenOperation
2124

2225
- (instancetype)initWithAuthorizedEntity:(NSString *)authorizedEntity

Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,14 @@
2525
#import "FIRInstanceIDUtilities.h"
2626
#import "NSError+FIRInstanceID.h"
2727

28+
#import <FirebaseCore/FIRAppInternal.h>
29+
2830
// We can have a static int since this error should theoretically only
2931
// happen once (for the first time). If it repeats there is something
3032
// else that is wrong.
3133
static int phoneRegistrationErrorRetryCount = 0;
3234
static const int kMaxPhoneRegistrationErrorRetryCount = 10;
35+
NSString *const kFIRInstanceIDFirebaseUserAgentKey = @"X-firebase-client";
3336

3437
@implementation FIRInstanceIDTokenFetchOperation
3538

@@ -55,6 +58,8 @@ - (void)performTokenOperation {
5558
NSMutableURLRequest *request = [[self class] requestWithAuthHeader:authHeader];
5659
NSString *checkinVersionInfo = self.checkinPreferences.versionInfo;
5760
[request setValue:checkinVersionInfo forHTTPHeaderField:@"info"];
61+
[request setValue:[FIRApp firebaseUserAgent]
62+
forHTTPHeaderField:kFIRInstanceIDFirebaseUserAgentKey];
5863

5964
// Build form-encoded body
6065
NSString *deviceAuthID = self.checkinPreferences.deviceID;

0 commit comments

Comments
 (0)