Commit e1e23cd2

mo khan <mo@mokhan.ca>
2014-08-16 19:01:50
start to build sessions controller to view all sessions.
1 parent 23683f2
Changed files (5)
app
controllers
views
admin
config
spec
app/controllers/admin/sessions_controller.rb
@@ -0,0 +1,7 @@
+module Admin
+  class SessionsController < AdminController
+    def index
+      @sessions = UserSession.active
+    end
+  end
+end
app/views/admin/sessions/index.html.erb
@@ -0,0 +1,1 @@
+<h1>Active Sessions</h1>
config/routes.rb
@@ -67,6 +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]
   end
 
   namespace :my do
spec/controllers/admin/sessions_controller_spec.rb
@@ -0,0 +1,26 @@
+require "rails_helper"
+
+module Admin
+  describe SessionsController do
+    context "logged in as admin" do
+      let(:admin) { create(:admin) }
+
+      before :each do
+        http_login(admin)
+      end
+
+      describe "index" do
+        let(:active_session) { build(:user_session) }
+
+        before :each do
+          UserSession.stub(:active).and_return([active_session])
+        end
+
+        it "loads all the active sessions" do
+          get :index
+          expect(assigns(:sessions)).to include(active_session)
+        end
+      end
+    end
+  end
+end
spec/factories.rb
@@ -22,6 +22,13 @@ FactoryGirl.define do
   end
 
   factory :user_session, class: UserSession do
+    association :user
+    key SecureRandom.hex(32)
+    ip Faker::Internet.ip_v4_address
+    user_agent Faker::Internet
+    factory :active_session do
+      accessed_at Time.now
+    end
   end
 
   factory :favorite do
@@ -48,5 +55,8 @@ FactoryGirl.define do
     password 'password'
     website { Faker::Internet.http_url }
     city 'calgary'
+    factory :admin do
+      is_admin true
+    end
   end
 end