Skip to content

Commit

Permalink
Merge pull request Sorcery#21 from kyuden/rails5
Browse files Browse the repository at this point in the history
Test against Rails 5 by default
  • Loading branch information
joshbuker authored Dec 12, 2016
2 parents 5394c9a + 6519d60 commit 3d41911
Show file tree
Hide file tree
Showing 23 changed files with 99 additions and 70 deletions.
18 changes: 12 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ language: ruby
rvm:
- jruby
- 2.0.0
- 2.1
- 2.2
- 2.3.0
- 2.1.10
- 2.2.6
- 2.3.3

env:
global:
Expand All @@ -31,11 +31,17 @@ matrix:
- rvm: 2.0.0
gemfile: gemfiles/active_record-rails42.gemfile

- rvm: jruby
- rvm: 2.0.0
gemfile: Gemfile

- rvm: 2.1.10
gemfile: Gemfile

- rvm: 2.2
- rvm: 2.2.6
gemfile: gemfiles/active_record-rails40.gemfile

- rvm: 2.3.0
- rvm: 2.3.3
gemfile: gemfiles/active_record-rails40.gemfile

- rvm: jruby
gemfile: Gemfile
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
* Deprecated Rails 3
* Deprecated using `callback_filter` in favor of `callback_action`
* Added null: false to migrations
* Added support for Rails 5 by @kyuden

## 0.9.1

Expand Down
3 changes: 2 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
source 'https://rubygems.org'

gem 'rails', '~> 4.0'
gem 'rails', '~> 5.0.0'
gem 'rails-controller-testing'
gem 'sqlite3'
gem 'pry'

Expand Down
8 changes: 8 additions & 0 deletions lib/sorcery/test_helpers/internal/rails.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,14 @@ def sorcery_controller_external_property_set(provider, property, value)
def clear_user_without_logout
subject.instance_variable_set(:@current_user,nil)
end

if ::Rails.version < '5.0.0'
%w( get post put ).each do |method|
define_method(method) do |action, options={}|
super action, options[:params] || {}, options[:session]
end
end
end
end
end
end
Expand Down
3 changes: 1 addition & 2 deletions sorcery.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ Gem::Specification.new do |s|

s.add_development_dependency "timecop"
s.add_development_dependency "simplecov", ">= 0.3.8"
s.add_development_dependency "rspec", "~> 3.1.0"
s.add_development_dependency "rspec-rails", "~> 3.1.0"
s.add_development_dependency "rspec-rails", "~> 3.5.0"
s.add_development_dependency "test-unit", "~> 3.1.0"
end
2 changes: 1 addition & 1 deletion spec/controllers/controller_activity_logging_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# require 'shared_examples/controller_activity_logging_shared_examples'

describe SorceryController do
describe SorceryController, :type => :controller do
after(:all) do
sorcery_controller_property_set(:register_login_time, true)
sorcery_controller_property_set(:register_logout_time, true)
Expand Down
6 changes: 3 additions & 3 deletions spec/controllers/controller_brute_force_protection_spec.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
require 'spec_helper'

describe SorceryController do
describe SorceryController, :type => :controller do

let(:user) { double('user', id: 42, email: '[email protected]') }

def request_test_login
get :test_login, email: '[email protected]', password: 'blabla'
get :test_login, :params => { email: '[email protected]', password: 'blabla' }
end

# ----------------- SESSION TIMEOUT -----------------------
Expand Down Expand Up @@ -37,7 +37,7 @@ def request_test_login
allow(User).to receive(:authenticate).and_return(user)
expect(user).to receive_message_chain(:sorcery_adapter, :update_attribute).with(:failed_logins_count, 0)

get :test_login, email: '[email protected]', password: 'secret'
get :test_login, :params => { email: '[email protected]', password: 'secret' }
end
end
end
8 changes: 4 additions & 4 deletions spec/controllers/controller_http_basic_auth_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require 'spec_helper'

describe SorceryController do
describe SorceryController, :type => :controller do

let(:user) { double("user", id: 42, email: '[email protected]') }

Expand All @@ -27,15 +27,15 @@

@request.env["HTTP_AUTHORIZATION"] = "Basic #{Base64::encode64("#{user.email}:secret")}"
expect(User).to receive('authenticate').with('[email protected]', 'secret').and_return(user)
get :test_http_basic_auth, nil, http_authentication_used: true
get :test_http_basic_auth, :params => {}, session: { :http_authentication_used => true }

expect(response).to be_a_success
end

it "fails authentication if credentials are wrong" do
@request.env["HTTP_AUTHORIZATION"] = "Basic #{Base64::encode64("#{user.email}:wrong!")}"
expect(User).to receive('authenticate').with('[email protected]', 'wrong!').and_return(nil)
get :test_http_basic_auth, nil, http_authentication_used: true
get :test_http_basic_auth, :params => {}, session: { :http_authentication_used => true }

expect(response).to redirect_to root_url
end
Expand All @@ -60,7 +60,7 @@
@request.env["HTTP_AUTHORIZATION"] = "Basic #{Base64::encode64("#{user.email}:secret")}"
expect(User).to receive('authenticate').with('[email protected]', 'secret').and_return(user)

get :test_http_basic_auth, nil, http_authentication_used: true
get :test_http_basic_auth, :params => {}, session: { :http_authentication_used => true }

expect(session[:user_id]).to eq "42"
end
Expand Down
14 changes: 7 additions & 7 deletions spec/controllers/controller_oauth2_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# require 'shared_examples/controller_oauth2_shared_examples'

describe SorceryController, :active_record => true do
describe SorceryController, :active_record => true, :type => :controller do
before(:all) do
if SORCERY_ORM == :active_record
ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate/external")
Expand All @@ -29,15 +29,15 @@
sorcery_controller_external_property_set(:facebook, :user_info_mapping, { username: 'name' })

expect(User).to receive(:create_from_provider).with('facebook', '123', {username: 'Noam Ben Ari'})
get :test_create_from_provider, provider: 'facebook'
get :test_create_from_provider, :params => { provider: 'facebook' }
end

it 'supports nested attributes' do
sorcery_model_property_set(:authentications_class, Authentication)
sorcery_controller_external_property_set(:facebook, :user_info_mapping, { username: 'hometown/name' })
expect(User).to receive(:create_from_provider).with('facebook', '123', {username: 'Haifa, Israel'})

get :test_create_from_provider, provider: 'facebook'
get :test_create_from_provider, :params => { provider: 'facebook' }
end

it 'does not crash on missing nested attributes' do
Expand All @@ -46,7 +46,7 @@

expect(User).to receive(:create_from_provider).with('facebook', '123', {username: 'Noam Ben Ari'})

get :test_create_from_provider, provider: 'facebook'
get :test_create_from_provider, :params => { provider: 'facebook' }
end

describe 'with a block' do
Expand All @@ -57,7 +57,7 @@
u = double('user')
expect(User).to receive(:create_from_provider).with('facebook', '123', {username: 'Noam Ben Ari'}).and_return(u).and_yield(u)
# test_create_from_provider_with_block in controller will check for uniqueness of username
get :test_create_from_provider_with_block, provider: 'facebook'
get :test_create_from_provider_with_block, :params => { provider: 'facebook' }
end
end
end
Expand Down Expand Up @@ -146,7 +146,7 @@

sorcery_model_property_set(:authentications_class, Authentication)
expect(User).to receive(:load_from_provider).with(:facebook, '123').and_return(user)
get :test_return_to_with_external_facebook, {}, :return_to_url => "fuu"
get :test_return_to_with_external_facebook, :params => {}, session: { :return_to_url => "fuu" }

expect(response).to redirect_to("fuu")
expect(flash[:notice]).to eq "Success!"
Expand Down Expand Up @@ -188,7 +188,7 @@

sorcery_model_property_set(:authentications_class, Authentication)
expect(User).to receive(:load_from_provider).with(provider, '123').and_return(user)
get :"test_return_to_with_external_#{provider}", {}, :return_to_url => "fuu"
get :"test_return_to_with_external_#{provider}", :params => {}, session: { :return_to_url => "fuu" }

expect(response).to redirect_to "fuu"
expect(flash[:notice]).to eq "Success!"
Expand Down
18 changes: 9 additions & 9 deletions spec/controllers/controller_oauth_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def stub_all_oauth_requests!
allow(acc_token).to receive(:get) { response }
end

describe SorceryController do
describe SorceryController, :type => :controller do

let(:user) { double('user', id: 42) }

Expand Down Expand Up @@ -72,20 +72,20 @@ def stub_all_oauth_requests!
it "logins if user exists" do
expect(User).to receive(:load_from_provider).with(:twitter, '123').and_return(user)

get :test_login_from, :oauth_verifier => "blablaRERASDFcxvSDFA"
get :test_login_from, :params => { :oauth_verifier => "blablaRERASDFcxvSDFA" }
expect(flash[:notice]).to eq "Success!"
end

it "'login_from' fails if user doesn't exist" do
expect(User).to receive(:load_from_provider).with(:twitter, '123').and_return(nil)

get :test_login_from, :oauth_verifier => "blablaRERASDFcxvSDFA"
get :test_login_from, :params => { :oauth_verifier => "blablaRERASDFcxvSDFA" }
expect(flash[:alert]).to eq "Failed!"
end

it "on successful 'login_from' the user is redirected to the url he originally wanted" do
expect(User).to receive(:load_from_provider).with(:twitter, '123').and_return(user)
get :test_return_to_with_external, {}, :return_to_url => "fuu"
get :test_return_to_with_external, params: {}, :session => { :return_to_url => "fuu" }
expect(response).to redirect_to("fuu")
expect(flash[:notice]).to eq "Success!"
end
Expand All @@ -111,23 +111,23 @@ def stub_all_oauth_requests!
expect(User).to receive(:load_from_provider).with('twitter', '123').and_return(nil)
expect(User).to receive(:create_from_provider).with('twitter', '123', {username: 'nbenari'}).and_return(user)

get :test_create_from_provider, :provider => "twitter"
get :test_create_from_provider, :params => { :provider => "twitter" }
end

it "supports nested attributes" do
sorcery_controller_external_property_set(:twitter, :user_info_mapping, {:username => "status/text"})
expect(User).to receive(:load_from_provider).with('twitter', '123').and_return(nil)
expect(User).to receive(:create_from_provider).with('twitter', '123', {username: 'coming soon to sorcery gem: twitter and facebook authentication support.'}).and_return(user)

get :test_create_from_provider, :provider => "twitter"
get :test_create_from_provider, :params => { :provider => "twitter" }
end

it "does not crash on missing nested attributes" do
sorcery_controller_external_property_set(:twitter, :user_info_mapping, {:username => "status/text", :created_at => "does/not/exist"})
expect(User).to receive(:load_from_provider).with('twitter', '123').and_return(nil)
expect(User).to receive(:create_from_provider).with('twitter', '123', {username: 'coming soon to sorcery gem: twitter and facebook authentication support.'}).and_return(user)

get :test_create_from_provider, :provider => "twitter"
get :test_create_from_provider, :params => { :provider => "twitter" }
end

it "binds new provider" do
Expand All @@ -138,7 +138,7 @@ def stub_all_oauth_requests!
login_user(user)

expect(user).to receive(:add_provider_to_user).with('twitter', '123')
get :test_add_second_provider, :provider => "twitter"
get :test_add_second_provider, :params => { :provider => "twitter" }
end

describe "with a block" do
Expand All @@ -150,7 +150,7 @@ def stub_all_oauth_requests!
expect(User).to receive(:load_from_provider).with('twitter', '123').and_return(nil)
expect(User).to receive(:create_from_provider).with('twitter', '123', {username: 'nbenari'}).and_return(u).and_yield(u)

get :test_create_from_provider_with_block, :provider => "twitter"
get :test_create_from_provider_with_block, :params => { :provider => "twitter" }
end

end
Expand Down
10 changes: 5 additions & 5 deletions spec/controllers/controller_remember_me_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require 'spec_helper'

describe SorceryController do
describe SorceryController, :type => :controller do

let!(:user) { double('user', id: 42) }

Expand All @@ -27,7 +27,7 @@
expect(User).to receive(:authenticate).with('[email protected]', 'secret').and_return(user)
expect(user).to receive(:remember_me!)

post :test_login_with_remember, :email => '[email protected]', :password => 'secret'
post :test_login_with_remember, :params => { :email => '[email protected]', :password => 'secret' }

expect(cookies.signed["remember_me_token"]).to eq assigns[:current_user].remember_me_token
end
Expand All @@ -51,7 +51,7 @@
expect(user).to receive(:remember_me!)
expect(user).to receive(:remember_me_token).and_return('abracadabra').twice

post :test_login_with_remember_in_login, :email => '[email protected]', :password => 'secret', :remember => "1"
post :test_login_with_remember_in_login, :params => { :email => '[email protected]', :password => 'secret', :remember => "1" }

expect(cookies.signed["remember_me_token"]).not_to be_nil
expect(cookies.signed["remember_me_token"]).to eq assigns[:user].remember_me_token
Expand Down Expand Up @@ -88,13 +88,13 @@
end

it "doest not remember_me! when not asked to, even if third parameter is used" do
post :test_login_with_remember_in_login, :email => '[email protected]', :password => 'secret', :remember => "0"
post :test_login_with_remember_in_login, :params => { :email => '[email protected]', :password => 'secret', :remember => "0" }

expect(cookies["remember_me_token"]).to be_nil
end

it "doest not remember_me! when not asked to" do
post :test_login, :email => '[email protected]', :password => 'secret'
post :test_login, :params => { :email => '[email protected]', :password => 'secret' }
expect(cookies["remember_me_token"]).to be_nil
end

Expand Down
8 changes: 4 additions & 4 deletions spec/controllers/controller_session_timeout_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require 'spec_helper'

describe SorceryController do
describe SorceryController, :type => :controller do

let!(:user) { double('user', id: 42) }

Expand Down Expand Up @@ -42,7 +42,7 @@
# TODO: ???
expect(User).to receive(:authenticate).with('[email protected]', 'secret').and_return(user)

get :test_login, :email => '[email protected]', :password => 'secret'
get :test_login, :params => { :email => '[email protected]', :password => 'secret' }

expect(session[:user_id]).not_to be_nil
expect(response).to be_a_success
Expand All @@ -53,7 +53,7 @@
sorcery_controller_property_set(:session_timeout_from_last_action, true)
expect(User).to receive(:authenticate).with('[email protected]', 'secret').and_return(user)

get :test_login, :email => '[email protected]', :password => 'secret'
get :test_login, :params => { :email => '[email protected]', :password => 'secret' }
Timecop.travel(Time.now.in_time_zone+0.3)
get :test_should_be_logged_in

Expand All @@ -68,7 +68,7 @@

it "with 'session_timeout_from_last_action' logs out if there was no activity" do
sorcery_controller_property_set(:session_timeout_from_last_action, true)
get :test_login, :email => '[email protected]', :password => 'secret'
get :test_login, :params => { :email => '[email protected]', :password => 'secret' }
Timecop.travel(Time.now.in_time_zone+0.6)
get :test_should_be_logged_in

Expand Down
Loading

0 comments on commit 3d41911

Please sign in to comment.