@@ -299,10 +299,11 @@ func TestAccessTokenExchangeWithBasicAuth(t *testing.T) {
299299 "client_secret" : "inconsistent" ,
300300 })
301301 req .Header .Add ("Authorization" , "Basic ZGE3ZGEzYmEtOWExMy00MTY3LTg1NmYtMzg5OWRlMGIwMTM4OjRNSzhOYTZSNTVzbWRDWTBXdUNDdW1aNmhqUlBuR1k1c2FXVlJISGpKaUE9" )
302+ resp = MakeRequest (t , req , http .StatusBadRequest )
302303 parsedError = new (auth.AccessTokenError )
303304 assert .NoError (t , json .Unmarshal (resp .Body .Bytes (), parsedError ))
304305 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 )
306307}
307308
308309func TestRefreshTokenInvalidation (t * testing.T ) {
@@ -329,32 +330,58 @@ func TestRefreshTokenInvalidation(t *testing.T) {
329330 // test without invalidation
330331 setting .OAuth2 .InvalidateRefreshTokens = false
331332
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 {
333360 "grant_type" : "refresh_token" ,
334361 "client_id" : "da7da3ba-9a13-4167-856f-3899de0b0138" ,
335362 "client_secret" : "4MK8Na6R55smdCY0WuCCumZ6hjRPnGY5saWVRHHjJiA=" ,
336363 "redirect_uri" : "a" ,
337364 "refresh_token" : parsed .RefreshToken ,
338365 })
339366
340- bs , err := io .ReadAll (refreshReq .Body )
367+ bs , err := io .ReadAll (req .Body )
341368 assert .NoError (t , err )
342369
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 )
345372
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 )
348375
349376 // test with invalidation
350377 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 )
353380
354381 // 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 )
358385 assert .NoError (t , json .Unmarshal (resp .Body .Bytes (), parsedError ))
359386 assert .Equal (t , "unauthorized_client" , string (parsedError .ErrorCode ))
360387 assert .Equal (t , "token was already used" , parsedError .ErrorDescription )
0 commit comments