diff options
-rw-r--r-- | users/app/controllers/controller_extension/token_authentication.rb | 12 | ||||
-rw-r--r-- | users/test/functional/v1/sessions_controller_test.rb | 13 |
2 files changed, 17 insertions, 8 deletions
diff --git a/users/app/controllers/controller_extension/token_authentication.rb b/users/app/controllers/controller_extension/token_authentication.rb index 06e9e04..e1c92e7 100644 --- a/users/app/controllers/controller_extension/token_authentication.rb +++ b/users/app/controllers/controller_extension/token_authentication.rb @@ -7,5 +7,17 @@ module ControllerExtension::TokenAuthentication end User.find_by_param(@token.user_id) if @token end + + def logout + super + clear_token + end + + def clear_token + authenticate_with_http_token do |token_id, options| + @token = Token.find(token_id) + @token.destroy if @token + end + end end diff --git a/users/test/functional/v1/sessions_controller_test.rb b/users/test/functional/v1/sessions_controller_test.rb index 8a16997..ff9fca1 100644 --- a/users/test/functional/v1/sessions_controller_test.rb +++ b/users/test/functional/v1/sessions_controller_test.rb @@ -52,20 +52,18 @@ class V1::SessionsControllerTest < ActionController::TestCase assert_equal @user.id, token.user_id end - test "logout should reset warden user" do + test "logout should reset session" do expect_warden_logout delete :destroy assert_response 204 end - test "logout should remove token" do + test "logout should destroy token" do login expect_warden_logout - skip "TODO: implement token removal" - assert_difference "Token.count", -1 do - delete :destroy - assert_response 204 - end + @token.expects(:destroy) + delete :destroy + assert_response 204 end def expect_warden_logout @@ -76,5 +74,4 @@ class V1::SessionsControllerTest < ActionController::TestCase request.env['warden'].expects(:logout) end - end |