56
56
*/
57
57
static NSString *const kTestAdditionalHeaderValue = @" 2" ;
58
58
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
+
59
67
@implementation OIDTokenRequestTests
60
68
61
69
+ (OIDTokenRequest *)testInstance {
@@ -154,6 +162,32 @@ + (OIDTokenRequest *)testInstanceRefresh {
154
162
return request;
155
163
}
156
164
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
+
157
191
/* ! @brief Tests the @c NSCopying implementation by round-tripping an instance through the copying
158
192
process and checking to make sure the source and destination instances are equivalent.
159
193
*/
@@ -239,6 +273,10 @@ - (void)testSecureCoding {
239
273
XCTAssertNotNil (request.additionalHeaders , @" " );
240
274
XCTAssertEqualObjects (request.additionalHeaders [kTestAdditionalHeaderKey ],
241
275
kTestAdditionalHeaderValue , @" " );
276
+
277
+ NSURLRequest *urlRequest = [request URLRequest ];
278
+ XCTAssertEqualObjects ([urlRequest.allHTTPHeaderFields objectForKey: kTestAdditionalHeaderKey ],
279
+ kTestAdditionalHeaderValue );
242
280
243
281
NSData *data = [NSKeyedArchiver archivedDataWithRootObject: request];
244
282
OIDTokenRequest *requestCopy = [NSKeyedUnarchiver unarchiveObjectWithData: data];
@@ -263,6 +301,10 @@ - (void)testSecureCoding {
263
301
XCTAssertNotNil (requestCopy.additionalHeaders , @" " );
264
302
XCTAssertEqualObjects (requestCopy.additionalHeaders [kTestAdditionalHeaderKey ],
265
303
kTestAdditionalHeaderValue , @" " );
304
+
305
+ NSURLRequest *urlrequestCopy = [requestCopy URLRequest ];
306
+ XCTAssertEqualObjects ([urlrequestCopy.allHTTPHeaderFields objectForKey: kTestAdditionalHeaderKey ],
307
+ kTestAdditionalHeaderValue );
266
308
}
267
309
268
310
- (void )testURLRequestNoClientAuth {
@@ -302,6 +344,17 @@ - (void)testAuthorizationCodeNullRedirectURL {
302
344
additionalHeaders: additionalHeaders], @" " );
303
345
}
304
346
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
+
305
358
@end
306
359
307
360
#pragma GCC diagnostic pop
0 commit comments