Commit 0a137744
Changed files (4)
app
controllers
admin
config
spec
controllers
app/controllers/admin/sessions_controller.rb
@@ -3,5 +3,10 @@ module Admin
def index
@sessions = UserSession.active
end
+
+ def destroy
+ UserSession.find(params[:id]).revoke!
+ redirect_to admin_sessions_path
+ end
end
end
config/routes.rb
@@ -67,7 +67,7 @@ Cake::Application.routes.draw do
resources :photos, only: [:index, :show]
resources :blobs, only: [:index, :show]
resources :errors, only: [:index, :create]
- resources :sessions, only: [:index]
+ resources :sessions, only: [:index, :destroy]
end
namespace :my do
spec/controllers/admin/sessions_controller_spec.rb
@@ -9,7 +9,7 @@ module Admin
http_login(admin)
end
- describe "index" do
+ describe "#index" do
let(:active_session) { build(:user_session) }
before :each do
@@ -21,6 +21,24 @@ module Admin
expect(assigns(:sessions)).to include(active_session)
end
end
+
+ describe "#destroy" do
+ let(:user_session) { create(:active_session) }
+
+ before :each do
+ UserSession.stub(:find).with(user_session.id).and_return(user_session)
+ user_session.stub(:revoke!).and_return(true)
+ delete :destroy, id: user_session.id
+ end
+
+ it "revokes the specified session" do
+ expect(user_session).to have_received(:revoke!)
+ end
+
+ it "redirects to the index page" do
+ expect(response).to redirect_to(admin_sessions_path)
+ end
+ end
end
end
end
spec/factories.rb
@@ -23,9 +23,8 @@ FactoryGirl.define do
factory :user_session, class: UserSession do
association :user
- key SecureRandom.hex(32)
+ key SecureRandom.urlsafe_base64(32)
ip Faker::Internet.ip_v4_address
- user_agent Faker::Internet
factory :active_session do
accessed_at Time.now
end