Logout while testing OAuth 1 token usage

This ensures we're not accidentally inheriting any session permissions.
This commit is contained in:
Tom Hughes 2023-08-25 09:44:25 +01:00
parent b9f9c0f3cc
commit 477f700cfa

View file

@ -7,11 +7,7 @@ class OAuthTest < ActionDispatch::IntegrationTest
client = create(:client_application, :callback_url => "http://some.web.app.example.org/callback", :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
user = create(:user)
get "/login"
follow_redirect!
post "/login", :params => { :username => user.email, :password => "test" }
follow_redirect!
assert_response :success
session_for(user)
oauth10_without_callback(client)
oauth10_with_callback(client, "http://another.web.app.example.org/callback")
@ -22,11 +18,7 @@ class OAuthTest < ActionDispatch::IntegrationTest
client = create(:client_application, :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
user = create(:user)
get "/login"
follow_redirect!
post "/login", :params => { :username => user.email, :password => "test" }
follow_redirect!
assert_response :success
session_for(user)
oauth10_without_callback(client)
oauth10_refused(client)
@ -36,11 +28,7 @@ class OAuthTest < ActionDispatch::IntegrationTest
client = create(:client_application, :callback_url => "http://some.web.app.example.org/callback", :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
user = create(:user)
get "/login"
follow_redirect!
post "/login", :params => { :username => user.email, :password => "test" }
follow_redirect!
assert_response :success
session_for(user)
oauth10a_without_callback(client)
oauth10a_with_callback(client, "http://another.web.app.example.org/callback")
@ -51,11 +39,7 @@ class OAuthTest < ActionDispatch::IntegrationTest
client = create(:client_application, :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
user = create(:user)
get "/login"
follow_redirect!
post "/login", :params => { :username => user.email, :password => "test" }
follow_redirect!
assert_response :success
session_for(user)
oauth10a_without_callback(client)
oauth10a_refused(client)
@ -99,12 +83,16 @@ class OAuthTest < ActionDispatch::IntegrationTest
assert_nil token.invalidated_at
assert_allowed token, [:allow_read_prefs]
post logout_path
signed_get "/api/0.6/user/preferences", :oauth => { :token => token }
assert_response :success
signed_get "/api/0.6/gpx/2", :oauth => { :token => token }
assert_response :forbidden
session_for(token.user)
post "/oauth/revoke", :params => { :token => token.token }
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by(:token => token.token)
@ -177,6 +165,8 @@ class OAuthTest < ActionDispatch::IntegrationTest
assert_nil token.invalidated_at
assert_allowed token, [:allow_write_api, :allow_read_gpx]
post logout_path
trace = create(:trace, :user => token.user)
signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
assert_response :success
@ -184,6 +174,8 @@ class OAuthTest < ActionDispatch::IntegrationTest
signed_get "/api/0.6/user/details", :oauth => { :token => token }
assert_response :forbidden
session_for(token.user)
post "/oauth/revoke", :params => { :token => token.token }
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by(:token => token.token)
@ -236,6 +228,8 @@ class OAuthTest < ActionDispatch::IntegrationTest
assert_nil token.invalidated_at
assert_allowed token, [:allow_read_prefs]
post logout_path
signed_get "/api/0.6/user/preferences", :oauth => { :token => token }
assert_response :success
@ -243,6 +237,8 @@ class OAuthTest < ActionDispatch::IntegrationTest
signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
assert_response :forbidden
session_for(token.user)
post "/oauth/revoke", :params => { :token => token.token }
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by(:token => token.token)
@ -287,6 +283,8 @@ class OAuthTest < ActionDispatch::IntegrationTest
assert_nil token.invalidated_at
assert_allowed token, [:allow_write_api, :allow_read_gpx]
post logout_path
trace = create(:trace, :user => token.user)
signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
assert_response :success
@ -294,6 +292,8 @@ class OAuthTest < ActionDispatch::IntegrationTest
signed_get "/api/0.6/user/details", :oauth => { :token => token }
assert_response :forbidden
session_for(token.user)
post "/oauth/revoke", :params => { :token => token.token }
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by(:token => token.token)