Fix exception when valid token points to missing user
authorTom Clegg <tom@curoverse.com>
Sun, 13 Apr 2014 19:38:00 +0000 (15:38 -0400)
committerTom Clegg <tom@curoverse.com>
Sun, 13 Apr 2014 19:38:00 +0000 (15:38 -0400)
apps/workbench/test/functional/users_controller_test.rb
services/api/app/controllers/application_controller.rb
services/api/test/functional/arvados/v1/users_controller_test.rb

index ae395ae0bf61970540381cdec667ef4ffd645d49..aadee36f656bfbd99bef0f113651b86f9701d2fc 100644 (file)
@@ -1,8 +1,7 @@
 require 'test_helper'
 
 class UsersControllerTest < ActionController::TestCase
-  test "valid token for deleted user ignored instead of crashing" do
-    skip
+  test "ignore previously valid token (for deleted user), don't crash" do
     get :welcome, {}, session_for(:valid_token_deleted_user)
     assert_response :success
     assert_nil assigns(:my_jobs)
index 06e1838411b4a4d4171bf2884f323d61a9737ebf..dffdd5d150cffce738b91da99c476700a8d138aa 100644 (file)
@@ -340,6 +340,9 @@ class ApplicationController < ActionController::Base
           session[:api_client_authorization_id] = api_client_auth.id
           user = api_client_auth.user
           api_client = api_client_auth.api_client
+        else
+          # Token seems valid, but points to a non-existent (deleted?) user.
+          api_client_auth = nil
         end
       elsif session[:user_id]
         user = User.find(session[:user_id]) rescue nil
index e62eff892585ae7e50d0734dfdfe6601ce3cb45c..0a2418e4bafccff6dc3ea75709a7b66b9ca26099 100644 (file)
@@ -44,6 +44,12 @@ class Arvados::V1::UsersControllerTest < ActionController::TestCase
     assert_equal true, me['is_active']
   end
 
+  test "respond 401 if given token exists but user record is missing" do
+    authorize_with :valid_token_deleted_user
+    get :current, {format: :json}
+    assert_response 401
+  end
+
   test "create new user with user as input" do
     authorize_with :admin
     post :create, user: {