]> git.openstreetmap.org Git - rails.git/blobdiff - test/integration/oauth2_test.rb
Merge remote-tracking branch 'upstream/pull/4877'
[rails.git] / test / integration / oauth2_test.rb
index 35893e4ab535e775e557cf5a424423aff510ef0e..3fe59cbdd6cfc0ddda1bd59f94a83063bf16cda6 100644 (file)
@@ -91,7 +91,7 @@ class OAuth2Test < ActionDispatch::IntegrationTest
     id_token = token["id_token"]
     assert_not_nil id_token
 
-    data, _headers = JWT.decode id_token, Doorkeeper::OpenidConnect.signing_key.public_key, true, {
+    data, _headers = JWT.decode id_token, nil, true, {
       :algorithm => [Doorkeeper::OpenidConnect.signing_algorithm.to_s],
       :verify_iss => true,
       :iss => "#{Settings.server_protocol}://#{Settings.server_url}",
@@ -99,7 +99,13 @@ class OAuth2Test < ActionDispatch::IntegrationTest
       :sub => user.id,
       :verify_aud => true,
       :aud => client.uid
-    }
+    } do |headers, _payload|
+      kid = headers["kid"]
+      get oauth_discovery_keys_path
+      keys = response.parsed_body["keys"]
+      jwk = keys&.detect { |e| e["kid"] == kid }
+      jwk && JWT::JWK::RSA.import(jwk).public_key
+    end
 
     assert_equal user.id.to_s, data["sub"]
     assert_not data.key?("preferred_username")
@@ -151,7 +157,6 @@ class OAuth2Test < ActionDispatch::IntegrationTest
     }.merge(options)
 
     get oauth_authorization_path(options)
-    assert_response :redirect
     assert_redirected_to login_path(:referer => request.fullpath)
 
     post login_path(:username => user.email, :password => "test")