Skip to content

Commit aea7b8a

Browse files
authored
fixed wrong variable for additional http headers in OIDTokenRequest (#770) (#798)
1 parent 8b437c4 commit aea7b8a

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

Source/AppAuthCore/OIDTokenRequest.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ - (NSURLRequest *)URLRequest {
330330
}
331331

332332
for (id header in _additionalHeaders) {
333-
[URLRequest setValue:httpHeaders[header] forHTTPHeaderField:header];
333+
[URLRequest setValue:_additionalHeaders[header] forHTTPHeaderField:header];
334334
}
335335

336336
return URLRequest;

UnitTests/OIDTokenRequestTests.m

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@
5656
*/
5757
static NSString *const kTestAdditionalHeaderValue = @"2";
5858

59+
/*! @brief Test key for the @c additionalHeaders property.
60+
*/
61+
static NSString *const kTestAdditionalHeaderKey2 = @"C";
62+
63+
/*! @brief Test value for the @c additionalHeaders property.
64+
*/
65+
static NSString *const kTestAdditionalHeaderValue2 = @"3";
66+
5967
@implementation OIDTokenRequestTests
6068

6169
+ (OIDTokenRequest *)testInstance {
@@ -154,6 +162,32 @@ + (OIDTokenRequest *)testInstanceRefresh {
154162
return request;
155163
}
156164

165+
+ (OIDTokenRequest *)testInstanceAdditionalHeaders {
166+
OIDAuthorizationResponse *authResponse = [OIDAuthorizationResponseTests testInstance];
167+
NSArray<NSString *> *scopesArray =
168+
[OIDScopeUtilities scopesArrayWithString:authResponse.request.scope];
169+
NSDictionary *additionalParameters =
170+
@{ kTestAdditionalParameterKey : kTestAdditionalParameterValue };
171+
NSDictionary *additionalHeaders = @{
172+
kTestAdditionalHeaderKey : kTestAdditionalHeaderValue,
173+
kTestAdditionalHeaderKey2 : kTestAdditionalHeaderValue2
174+
};
175+
176+
OIDTokenRequest *request =
177+
[[OIDTokenRequest alloc] initWithConfiguration:authResponse.request.configuration
178+
grantType:OIDGrantTypeAuthorizationCode
179+
authorizationCode:authResponse.authorizationCode
180+
redirectURL:authResponse.request.redirectURL
181+
clientID:authResponse.request.clientID
182+
clientSecret:authResponse.request.clientSecret
183+
scopes:scopesArray
184+
refreshToken:kRefreshTokenTestValue
185+
codeVerifier:authResponse.request.codeVerifier
186+
additionalParameters:additionalParameters
187+
additionalHeaders:additionalHeaders];
188+
return request;
189+
}
190+
157191
/*! @brief Tests the @c NSCopying implementation by round-tripping an instance through the copying
158192
process and checking to make sure the source and destination instances are equivalent.
159193
*/
@@ -239,6 +273,10 @@ - (void)testSecureCoding {
239273
XCTAssertNotNil(request.additionalHeaders, @"");
240274
XCTAssertEqualObjects(request.additionalHeaders[kTestAdditionalHeaderKey],
241275
kTestAdditionalHeaderValue, @"");
276+
277+
NSURLRequest *urlRequest = [request URLRequest];
278+
XCTAssertEqualObjects([urlRequest.allHTTPHeaderFields objectForKey:kTestAdditionalHeaderKey],
279+
kTestAdditionalHeaderValue);
242280

243281
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:request];
244282
OIDTokenRequest *requestCopy = [NSKeyedUnarchiver unarchiveObjectWithData:data];
@@ -263,6 +301,10 @@ - (void)testSecureCoding {
263301
XCTAssertNotNil(requestCopy.additionalHeaders, @"");
264302
XCTAssertEqualObjects(requestCopy.additionalHeaders[kTestAdditionalHeaderKey],
265303
kTestAdditionalHeaderValue, @"");
304+
305+
NSURLRequest *urlrequestCopy = [requestCopy URLRequest];
306+
XCTAssertEqualObjects([urlrequestCopy.allHTTPHeaderFields objectForKey:kTestAdditionalHeaderKey],
307+
kTestAdditionalHeaderValue);
266308
}
267309

268310
- (void)testURLRequestNoClientAuth {
@@ -302,6 +344,17 @@ - (void)testAuthorizationCodeNullRedirectURL {
302344
additionalHeaders:additionalHeaders], @"");
303345
}
304346

347+
- (void)testThatAdditionalHeadersAreInTokenRequest {
348+
OIDTokenRequest *request = [[self class] testInstanceAdditionalHeaders];
349+
NSURLRequest* urlRequest = [request URLRequest];
350+
351+
XCTAssertEqualObjects([urlRequest.allHTTPHeaderFields objectForKey:kTestAdditionalHeaderKey],
352+
kTestAdditionalHeaderValue);
353+
354+
XCTAssertEqualObjects([urlRequest.allHTTPHeaderFields objectForKey:kTestAdditionalHeaderKey2],
355+
kTestAdditionalHeaderValue2);
356+
}
357+
305358
@end
306359

307360
#pragma GCC diagnostic pop

0 commit comments

Comments
 (0)