@@ -299,10 +299,11 @@ func TestAccessTokenExchangeWithBasicAuth(t *testing.T) {
299
299
"client_secret" : "inconsistent" ,
300
300
})
301
301
req .Header .Add ("Authorization" , "Basic ZGE3ZGEzYmEtOWExMy00MTY3LTg1NmYtMzg5OWRlMGIwMTM4OjRNSzhOYTZSNTVzbWRDWTBXdUNDdW1aNmhqUlBuR1k1c2FXVlJISGpKaUE9" )
302
+ resp = MakeRequest (t , req , http .StatusBadRequest )
302
303
parsedError = new (auth.AccessTokenError )
303
304
assert .NoError (t , json .Unmarshal (resp .Body .Bytes (), parsedError ))
304
305
assert .Equal (t , "invalid_request" , string (parsedError .ErrorCode ))
305
- assert .Equal (t , "client_id in request body inconsistent with Authorization header" , parsedError .ErrorDescription )
306
+ assert .Equal (t , "client_secret in request body inconsistent with Authorization header" , parsedError .ErrorDescription )
306
307
}
307
308
308
309
func TestRefreshTokenInvalidation (t * testing.T ) {
@@ -329,32 +330,58 @@ func TestRefreshTokenInvalidation(t *testing.T) {
329
330
// test without invalidation
330
331
setting .OAuth2 .InvalidateRefreshTokens = false
331
332
332
- refreshReq := NewRequestWithValues (t , "POST" , "/login/oauth/access_token" , map [string ]string {
333
+ req = NewRequestWithValues (t , "POST" , "/login/oauth/access_token" , map [string ]string {
334
+ "grant_type" : "refresh_token" ,
335
+ "client_id" : "da7da3ba-9a13-4167-856f-3899de0b0138" ,
336
+ // omit secret
337
+ "redirect_uri" : "a" ,
338
+ "refresh_token" : parsed .RefreshToken ,
339
+ })
340
+ resp = MakeRequest (t , req , http .StatusBadRequest )
341
+ parsedError := new (auth.AccessTokenError )
342
+ assert .NoError (t , json .Unmarshal (resp .Body .Bytes (), parsedError ))
343
+ assert .Equal (t , "invalid_client" , string (parsedError .ErrorCode ))
344
+ assert .Equal (t , "invalid empty client secret" , parsedError .ErrorDescription )
345
+
346
+ req = NewRequestWithValues (t , "POST" , "/login/oauth/access_token" , map [string ]string {
347
+ "grant_type" : "refresh_token" ,
348
+ "client_id" : "da7da3ba-9a13-4167-856f-3899de0b0138" ,
349
+ "client_secret" : "4MK8Na6R55smdCY0WuCCumZ6hjRPnGY5saWVRHHjJiA=" ,
350
+ "redirect_uri" : "a" ,
351
+ "refresh_token" : "UNEXPECTED" ,
352
+ })
353
+ resp = MakeRequest (t , req , http .StatusBadRequest )
354
+ parsedError = new (auth.AccessTokenError )
355
+ assert .NoError (t , json .Unmarshal (resp .Body .Bytes (), parsedError ))
356
+ assert .Equal (t , "unauthorized_client" , string (parsedError .ErrorCode ))
357
+ assert .Equal (t , "unable to parse refresh token" , parsedError .ErrorDescription )
358
+
359
+ req = NewRequestWithValues (t , "POST" , "/login/oauth/access_token" , map [string ]string {
333
360
"grant_type" : "refresh_token" ,
334
361
"client_id" : "da7da3ba-9a13-4167-856f-3899de0b0138" ,
335
362
"client_secret" : "4MK8Na6R55smdCY0WuCCumZ6hjRPnGY5saWVRHHjJiA=" ,
336
363
"redirect_uri" : "a" ,
337
364
"refresh_token" : parsed .RefreshToken ,
338
365
})
339
366
340
- bs , err := io .ReadAll (refreshReq .Body )
367
+ bs , err := io .ReadAll (req .Body )
341
368
assert .NoError (t , err )
342
369
343
- refreshReq .Body = io .NopCloser (bytes .NewReader (bs ))
344
- MakeRequest (t , refreshReq , http .StatusOK )
370
+ req .Body = io .NopCloser (bytes .NewReader (bs ))
371
+ MakeRequest (t , req , http .StatusOK )
345
372
346
- refreshReq .Body = io .NopCloser (bytes .NewReader (bs ))
347
- MakeRequest (t , refreshReq , http .StatusOK )
373
+ req .Body = io .NopCloser (bytes .NewReader (bs ))
374
+ MakeRequest (t , req , http .StatusOK )
348
375
349
376
// test with invalidation
350
377
setting .OAuth2 .InvalidateRefreshTokens = true
351
- refreshReq .Body = io .NopCloser (bytes .NewReader (bs ))
352
- MakeRequest (t , refreshReq , http .StatusOK )
378
+ req .Body = io .NopCloser (bytes .NewReader (bs ))
379
+ MakeRequest (t , req , http .StatusOK )
353
380
354
381
// repeat request should fail
355
- refreshReq .Body = io .NopCloser (bytes .NewReader (bs ))
356
- resp = MakeRequest (t , refreshReq , http .StatusBadRequest )
357
- parsedError : = new (auth.AccessTokenError )
382
+ req .Body = io .NopCloser (bytes .NewReader (bs ))
383
+ resp = MakeRequest (t , req , http .StatusBadRequest )
384
+ parsedError = new (auth.AccessTokenError )
358
385
assert .NoError (t , json .Unmarshal (resp .Body .Bytes (), parsedError ))
359
386
assert .Equal (t , "unauthorized_client" , string (parsedError .ErrorCode ))
360
387
assert .Equal (t , "token was already used" , parsedError .ErrorDescription )
0 commit comments