X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9c728077f0d2f8a166d31704918067b2cf526f8b..64e387b2f4f0fe6c4c7bf16232706c7cf194caf0:/services/api/test/functional/user_sessions_controller_test.rb diff --git a/services/api/test/functional/user_sessions_controller_test.rb b/services/api/test/functional/user_sessions_controller_test.rb index cee8245b25..fc9475692a 100644 --- a/services/api/test/functional/user_sessions_controller_test.rb +++ b/services/api/test/functional/user_sessions_controller_test.rb @@ -6,7 +6,16 @@ require 'test_helper' class UserSessionsControllerTest < ActionController::TestCase - test "new user from new api client" do + test "redirect to joshid" do + api_client_page = 'http://client.example.com/home' + get :login, params: {return_to: api_client_page} + assert_response :redirect + assert_equal("http://test.host/auth/joshid?return_to=%2Chttp%3A%2F%2Fclient.example.com%2Fhome", @response.redirect_url) + assert_nil assigns(:api_client) + end + + + test "send token when user is already logged in" do authorize_with :inactive api_client_page = 'http://client.example.com/home' get :login, params: {return_to: api_client_page} @@ -35,4 +44,43 @@ class UserSessionsControllerTest < ActionController::TestCase get :login, params: {return_to: api_client_page, remote: remote_prefix} assert_response 400 end + + test "login to LoginCluster" do + Rails.configuration.Login.LoginCluster = 'zbbbb' + Rails.configuration.RemoteClusters['zbbbb'] = {'Host' => 'zbbbb.example.com'} + api_client_page = 'http://client.example.com/home' + get :login, params: {return_to: api_client_page} + assert_response :redirect + assert_equal("https://zbbbb.example.com/login?return_to=http%3A%2F%2Fclient.example.com%2Fhome", @response.redirect_url) + assert_nil assigns(:api_client) + end + + test "don't go into redirect loop if LoginCluster is self" do + Rails.configuration.Login.LoginCluster = 'zzzzz' + api_client_page = 'http://client.example.com/home' + get :login, params: {return_to: api_client_page} + assert_response :redirect + assert_equal("http://test.host/auth/joshid?return_to=%2Chttp%3A%2F%2Fclient.example.com%2Fhome", @response.redirect_url) + assert_nil assigns(:api_client) + end + + test "controller cannot create session without SystemRootToken" do + get :create, params: {provider: 'controller', auth_info: {email: "foo@bar.com"}, return_to: ',https://app.example'} + assert_response 401 + end + + test "controller cannot create session with wrong SystemRootToken" do + @request.headers['Authorization'] = 'Bearer blah' + get :create, params: {provider: 'controller', auth_info: {email: "foo@bar.com"}, return_to: ',https://app.example'} + assert_response 401 + end + + test "controller can create session using SystemRootToken" do + @request.headers['Authorization'] = 'Bearer '+Rails.configuration.SystemRootToken + get :create, params: {provider: 'controller', auth_info: {email: "foo@bar.com"}, return_to: ',https://app.example'} + assert_response :redirect + api_client_auth = assigns(:api_client_auth) + assert_not_nil api_client_auth + assert_includes(@response.redirect_url, 'api_token='+api_client_auth.token) + end end