Commit f46d8c8

mo khan <mo@mokhan.ca>
2014-11-15 16:54:08
convert all specs to use cookie based authentication instead of session.
1 parent 9618bd7
app/controllers/sessions_controller.rb
@@ -22,6 +22,7 @@ class SessionsController < ApplicationController
 
   def destroy
     reset_session
+    cookies.delete(:raphael)
     redirect_to new_session_path
   end
 end
spec/controllers/environments_controller_spec.rb
@@ -1,12 +1,9 @@
 require 'rails_helper'
 
 describe EnvironmentsController do
-  let(:user) { user_session.user }
-  let(:user_session) { create(:session) }
+  let(:user) { create(:user) }
 
-  before :each do
-    session[:user_session_id] = user_session.id
-  end
+  before { http_login(user) }
 
   describe '#index' do
     let(:first_env) { create(:environment) }
spec/controllers/failures_controller_spec.rb
@@ -1,12 +1,9 @@
 require 'rails_helper'
 
 describe FailuresController do
-  let(:user) { user_session.user }
-  let(:user_session) { create(:session) }
+  let(:user) { create(:user) }
 
-  before :each do
-    session[:user_session_id] = user_session.id
-  end
+  before { http_login(user) }
 
   describe "#index" do
     let!(:failure) { create(:failure) }
spec/controllers/services_controller_spec.rb
@@ -1,12 +1,9 @@
 require 'rails_helper'
 
 describe ServicesController do
-  let(:user) { user_session.user }
-  let(:user_session) { create(:session) }
+  let(:user) { create(:user) }
 
-  before :each do
-    session[:user_session_id] = user_session.id
-  end
+  before { http_login(user) }
 
   describe "#index" do
     let!(:service) { create(:service) }
spec/controllers/sessions_controller_spec.rb
@@ -44,8 +44,9 @@ describe SessionsController do
     let(:user_session) { create(:session) }
 
     it "removes the current session" do
-      delete :destroy, { id: 'mine' }, { user_session_id: user_session.id }
-      expect(session[:user_session_id]).to be_nil
+      cookies.signed[:raphael] = user_session.id
+      delete :destroy, { id: 'mine' }
+      expect(request.cookies[:raphael]).to be_nil
       expect(response).to redirect_to(new_session_path)
     end
   end
spec/controllers/videos_controller_spec.rb
@@ -1,12 +1,9 @@
 require 'rails_helper'
 
 describe VideosController do
-  let(:user_session) { create(:session) }
-  let(:user) { user_session.user }
+  let(:user) { create(:user) }
 
-  before :each do
-    session[:user_session_id] = user_session.id
-  end
+  before { http_login(user) }
 
   describe "#index" do
     render_views
spec/support/authentication.rb
@@ -0,0 +1,6 @@
+module HttpAuthentication
+  def http_login(user, password = 'password')
+    user_session = create(:session, user: user)
+    cookies.signed[:raphael] = user_session.id
+  end
+end
spec/rails_helper.rb
@@ -18,7 +18,7 @@ require 'rspec/rails'
 # directory. Alternatively, in the individual `*_spec.rb` files, manually
 # require only the support files necessary.
 #
-# Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
+Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
 
 # Checks for pending migrations before tests are run.
 # If you are not using ActiveRecord, you can remove this line.
@@ -26,6 +26,7 @@ ActiveRecord::Migration.maintain_test_schema!
 
 RSpec.configure do |config|
   config.include FactoryGirl::Syntax::Methods
+  config.include HttpAuthentication, type: :controller
 
   config.before(:suite) do
     DatabaseCleaner.clean_with(:truncation)