sorcery 0.7.12 → 0.7.13

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sorcery might be problematic. Click here for more details.

Files changed (35) hide show
  1. data/Gemfile +5 -4
  2. data/Gemfile.lock +8 -7
  3. data/README.rdoc +5 -1
  4. data/VERSION +1 -1
  5. data/lib/generators/sorcery/templates/initializer.rb +5 -13
  6. data/lib/sorcery/controller.rb +6 -3
  7. data/lib/sorcery/controller/submodules/brute_force_protection.rb +1 -2
  8. data/lib/sorcery/controller/submodules/external.rb +80 -14
  9. data/lib/sorcery/crypto_providers/bcrypt.rb +1 -0
  10. data/lib/sorcery/model/adapters/active_record.rb +9 -4
  11. data/lib/sorcery/model/adapters/mongo_mapper.rb +16 -14
  12. data/lib/sorcery/model/adapters/mongoid.rb +10 -4
  13. data/lib/sorcery/model/submodules/brute_force_protection.rb +8 -8
  14. data/lib/sorcery/model/submodules/remember_me.rb +4 -6
  15. data/lib/sorcery/model/submodules/reset_password.rb +4 -4
  16. data/lib/sorcery/railties/tasks.rake +2 -0
  17. data/sorcery.gemspec +9 -6
  18. data/spec/Gemfile +1 -1
  19. data/spec/Gemfile.lock +7 -10
  20. data/spec/rails3/Gemfile.lock +7 -9
  21. data/spec/rails3/app/controllers/application_controller.rb +14 -0
  22. data/spec/rails3/spec/controller_activity_logging_spec.rb +3 -0
  23. data/spec/rails3/spec/controller_oauth2_spec.rb +125 -21
  24. data/spec/rails3/spec/controller_oauth_spec.rb +102 -6
  25. data/spec/rails3/spec/controller_spec.rb +7 -0
  26. data/spec/rails3_mongo_mapper/Gemfile.lock +7 -10
  27. data/spec/rails3_mongo_mapper/app/controllers/application_controller.rb +14 -0
  28. data/spec/rails3_mongo_mapper/spec/controller_spec.rb +7 -0
  29. data/spec/rails3_mongoid/Gemfile.lock +7 -10
  30. data/spec/rails3_mongoid/app/controllers/application_controller.rb +14 -0
  31. data/spec/rails3_mongoid/spec/controller_spec.rb +7 -0
  32. data/spec/shared_examples/controller_oauth2_shared_examples.rb +20 -1
  33. data/spec/shared_examples/controller_oauth_shared_examples.rb +18 -0
  34. data/spec/sorcery_crypto_providers_spec.rb +9 -0
  35. metadata +139 -123
@@ -43,11 +43,28 @@ describe ApplicationController do
43
43
  Authentication.delete_all
44
44
  end
45
45
 
46
- it "login_at redirects correctly" do
47
- create_new_user
48
- get :login_at_test
49
- response.should be_a_redirect
50
- response.should redirect_to("http://myapi.com/oauth/authorize?oauth_callback=http%3A%2F%2Fblabla.com&oauth_token=")
46
+ context "when callback_url begin with /" do
47
+ before do
48
+ sorcery_controller_external_property_set(:twitter, :callback_url, "/oauth/twitter/callback")
49
+ end
50
+ it "login_at redirects correctly" do
51
+ create_new_user
52
+ get :login_at_test
53
+ response.should be_a_redirect
54
+ response.should redirect_to("http://myapi.com/oauth/authorize?oauth_callback=http%3A%2F%2Ftest.host%2Foauth%2Ftwitter%2Fcallback&oauth_token=")
55
+ end
56
+ after do
57
+ sorcery_controller_external_property_set(:twitter, :callback_url, "http://blabla.com")
58
+ end
59
+ end
60
+
61
+ context "when callback_url begin with http://" do
62
+ it "login_at redirects correctly" do
63
+ create_new_user
64
+ get :login_at_test
65
+ response.should be_a_redirect
66
+ response.should redirect_to("http://myapi.com/oauth/authorize?oauth_callback=http%3A%2F%2Fblabla.com&oauth_token=")
67
+ end
51
68
  end
52
69
 
53
70
  it "logins if user exists" do
@@ -107,4 +124,83 @@ describe ApplicationController do
107
124
  ActionMailer::Base.deliveries.size.should == old_size
108
125
  end
109
126
  end
110
- end
127
+
128
+ describe ApplicationController, "OAuth with user activation features" do
129
+ before(:all) do
130
+ ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate/external")
131
+ ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate/activity_logging")
132
+ sorcery_reload!([:activity_logging, :external])
133
+ end
134
+
135
+ after(:all) do
136
+ ActiveRecord::Migrator.rollback("#{Rails.root}/db/migrate/external")
137
+ ActiveRecord::Migrator.rollback("#{Rails.root}/db/migrate/activity_logging")
138
+ end
139
+
140
+ context "when twitter" do
141
+ before(:each) do
142
+ User.delete_all
143
+ Authentication.delete_all
144
+ sorcery_controller_property_set(:register_login_time, true)
145
+ stub_all_oauth_requests!
146
+ sorcery_model_property_set(:authentications_class, Authentication)
147
+ create_new_external_user(:twitter)
148
+ end
149
+
150
+ it "should register login time" do
151
+ now = Time.now.in_time_zone
152
+ get :test_login_from
153
+ User.last.last_login_at.should_not be_nil
154
+ User.last.last_login_at.to_s(:db).should >= now.to_s(:db)
155
+ User.last.last_login_at.to_s(:db).should <= (now+2).to_s(:db)
156
+ end
157
+
158
+ it "should not register login time if configured so" do
159
+ sorcery_controller_property_set(:register_login_time, false)
160
+ now = Time.now.in_time_zone
161
+ get :test_login_from
162
+ User.last.last_login_at.should be_nil
163
+ end
164
+ end
165
+ end
166
+
167
+ describe ApplicationController, "OAuth with session timeout features" do
168
+ before(:all) do
169
+ ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate/external")
170
+ sorcery_reload!([:session_timeout, :external])
171
+ end
172
+
173
+ after(:all) do
174
+ ActiveRecord::Migrator.rollback("#{Rails.root}/db/migrate/external")
175
+ end
176
+
177
+ context "when twitter" do
178
+ before(:each) do
179
+ User.delete_all
180
+ Authentication.delete_all
181
+ sorcery_model_property_set(:authentications_class, Authentication)
182
+ sorcery_controller_property_set(:session_timeout,0.5)
183
+ stub_all_oauth_requests!
184
+ create_new_external_user(:twitter)
185
+ end
186
+
187
+ after(:each) do
188
+ Timecop.return
189
+ end
190
+
191
+ it "should not reset session before session timeout" do
192
+ get :test_login_from
193
+ session[:user_id].should_not be_nil
194
+ flash[:notice].should == "Success!"
195
+ end
196
+
197
+ it "should reset session after session timeout" do
198
+ get :test_login_from
199
+ Timecop.travel(Time.now.in_time_zone+0.6)
200
+ get :test_should_be_logged_in
201
+ session[:user_id].should be_nil
202
+ response.should be_a_redirect
203
+ end
204
+ end
205
+ end
206
+ end
@@ -141,6 +141,13 @@ describe ApplicationController do
141
141
  response.should redirect_to("http://test.host/")
142
142
  end
143
143
 
144
+ it "require_login before_filter should not save the url that the user originally wanted upon all non-get http methods" do
145
+ [:post, :put, :delete].each do |m|
146
+ self.send(m, :some_action)
147
+ session[:return_to_url].should be_nil
148
+ end
149
+ end
150
+
144
151
  it "on successful login the user should be redirected to the url he originally wanted" do
145
152
  session[:return_to_url] = "http://test.host/some_action"
146
153
  post :test_return_to, :username => 'gizmo', :password => 'secret'
@@ -1,12 +1,10 @@
1
1
  PATH
2
2
  remote: ../../
3
3
  specs:
4
- sorcery (0.7.10)
4
+ sorcery (0.7.13)
5
5
  bcrypt-ruby (~> 3.0.0)
6
- bundler (>= 1.1.0)
7
6
  oauth (~> 0.4.4)
8
- oauth2 (~> 0.5.1)
9
- sorcery
7
+ oauth2 (~> 0.6.0)
10
8
 
11
9
  GEM
12
10
  remote: http://rubygems.org/
@@ -38,7 +36,6 @@ GEM
38
36
  activemodel (= 3.0.3)
39
37
  activesupport (= 3.0.3)
40
38
  activesupport (3.0.3)
41
- addressable (2.2.7)
42
39
  archive-tar-minitar (0.5.2)
43
40
  arel (2.0.10)
44
41
  bcrypt-ruby (3.0.1)
@@ -51,10 +48,9 @@ GEM
51
48
  diff-lcs (1.1.3)
52
49
  erubis (2.6.6)
53
50
  abstract (>= 1.0.0)
54
- faraday (0.7.6)
55
- addressable (~> 2.2)
51
+ faraday (0.8.1)
56
52
  multipart-post (~> 1.1)
57
- rack (~> 1.1)
53
+ httpauth (0.1)
58
54
  i18n (0.6.0)
59
55
  linecache19 (0.5.12)
60
56
  ruby_core_source (>= 0.1.4)
@@ -73,9 +69,10 @@ GEM
73
69
  plucky (~> 0.4.0)
74
70
  multi_json (1.1.0)
75
71
  multipart-post (1.1.5)
76
- oauth (0.4.5)
77
- oauth2 (0.5.2)
72
+ oauth (0.4.6)
73
+ oauth2 (0.6.0)
78
74
  faraday (~> 0.7)
75
+ httpauth (~> 0.1)
79
76
  multi_json (~> 1.0)
80
77
  plucky (0.4.4)
81
78
  mongo (~> 1.5)
@@ -101,6 +101,20 @@ class ApplicationController < ActionController::Base
101
101
  end
102
102
  end
103
103
 
104
+ def test_create_from_provider_with_block
105
+ provider = params[:provider]
106
+ login_from(provider)
107
+ @user = create_from(provider) do |user|
108
+ # check uniqueness of username
109
+ User.where(:username => user.username).empty?
110
+ end
111
+ if @user
112
+ redirect_to "bla", :notice => "Success!"
113
+ else
114
+ redirect_to "blu", :alert => "Failed!"
115
+ end
116
+ end
117
+
104
118
  protected
105
119
 
106
120
 
@@ -141,6 +141,13 @@ describe ApplicationController do
141
141
  response.should redirect_to("http://test.host/")
142
142
  end
143
143
 
144
+ it "require_login before_filter should not save the url that the user originally wanted upon all non-get http methods" do
145
+ [:post, :put, :delete].each do |m|
146
+ self.send(m, :some_action)
147
+ session[:return_to_url].should be_nil
148
+ end
149
+ end
150
+
144
151
  it "on successful login the user should be redirected to the url he originally wanted" do
145
152
  session[:return_to_url] = "http://test.host/some_action"
146
153
  post :test_return_to, :username => 'gizmo', :password => 'secret'
@@ -1,12 +1,10 @@
1
1
  PATH
2
2
  remote: ../../
3
3
  specs:
4
- sorcery (0.7.10)
4
+ sorcery (0.7.13)
5
5
  bcrypt-ruby (~> 3.0.0)
6
- bundler (>= 1.1.0)
7
6
  oauth (~> 0.4.4)
8
- oauth2 (~> 0.5.1)
9
- sorcery
7
+ oauth2 (~> 0.6.0)
10
8
 
11
9
  GEM
12
10
  remote: http://rubygems.org/
@@ -38,7 +36,6 @@ GEM
38
36
  activemodel (= 3.0.3)
39
37
  activesupport (= 3.0.3)
40
38
  activesupport (3.0.3)
41
- addressable (2.2.7)
42
39
  archive-tar-minitar (0.5.2)
43
40
  arel (2.0.10)
44
41
  bcrypt-ruby (3.0.1)
@@ -50,10 +47,9 @@ GEM
50
47
  diff-lcs (1.1.3)
51
48
  erubis (2.6.6)
52
49
  abstract (>= 1.0.0)
53
- faraday (0.7.6)
54
- addressable (~> 2.2)
50
+ faraday (0.8.1)
55
51
  multipart-post (~> 1.1)
56
- rack (~> 1.1)
52
+ httpauth (0.1)
57
53
  i18n (0.6.0)
58
54
  linecache19 (0.5.12)
59
55
  ruby_core_source (>= 0.1.4)
@@ -71,9 +67,10 @@ GEM
71
67
  tzinfo (~> 0.3.22)
72
68
  multi_json (1.1.0)
73
69
  multipart-post (1.1.5)
74
- oauth (0.4.5)
75
- oauth2 (0.5.2)
70
+ oauth (0.4.6)
71
+ oauth2 (0.6.0)
76
72
  faraday (~> 0.7)
73
+ httpauth (~> 0.1)
77
74
  multi_json (~> 1.0)
78
75
  polyglot (0.3.3)
79
76
  rack (1.2.5)
@@ -106,6 +106,20 @@ class ApplicationController < ActionController::Base
106
106
  end
107
107
  end
108
108
 
109
+ def test_create_from_provider_with_block
110
+ provider = params[:provider]
111
+ login_from(provider)
112
+ @user = create_from(provider) do |user|
113
+ # check uniqueness of username
114
+ User.where(:username => user.username).empty?
115
+ end
116
+ if @user
117
+ redirect_to "bla", :notice => "Success!"
118
+ else
119
+ redirect_to "blu", :alert => "Failed!"
120
+ end
121
+ end
122
+
109
123
  protected
110
124
 
111
125
 
@@ -152,6 +152,13 @@ describe ApplicationController do
152
152
  response.should redirect_to("http://test.host/")
153
153
  end
154
154
 
155
+ it "require_login before_filter should not save the url that the user originally wanted upon all non-get http methods" do
156
+ [:post, :put, :delete].each do |m|
157
+ self.send(m, :some_action)
158
+ session[:return_to_url].should be_nil
159
+ end
160
+ end
161
+
155
162
  it "on successful login the user should be redirected to the url he originally wanted" do
156
163
  session[:return_to_url] = "http://test.host/some_action"
157
164
  post :test_return_to, :username => 'gizmo', :password => 'secret'
@@ -32,6 +32,25 @@ shared_examples_for "oauth2_controller" do
32
32
  end.should change(User, :count).by(1)
33
33
  User.first.username.should == "Noam Ben Ari"
34
34
  User.first.created_at.should_not be_nil
35
- end
35
+ end
36
+
37
+ describe "with a block" do
38
+
39
+ before(:each) do
40
+ user = User.new(:username => 'Noam Ben Ari')
41
+ user.save!(:validate => false)
42
+ user.authentications.create(:provider => 'twitter', :uid => '456')
43
+ end
44
+
45
+ it "should not create user" do
46
+ sorcery_model_property_set(:authentications_class, Authentication)
47
+ sorcery_controller_external_property_set(:facebook, :user_info_mapping, {:username => "name"})
48
+ lambda do
49
+ # test_create_from_provider_with_block in controller will check for uniqueness of username
50
+ get :test_create_from_provider_with_block, :provider => "facebook"
51
+ end.should_not change(User, :count)
52
+ end
53
+
54
+ end
36
55
  end
37
56
  end
@@ -33,5 +33,23 @@ shared_examples_for "oauth_controller" do
33
33
  User.first.username.should == "coming soon to sorcery gem: twitter and facebook authentication support."
34
34
  User.first.created_at.should_not be_nil
35
35
  end
36
+
37
+ describe "with a block" do
38
+
39
+ before(:each) do
40
+ user = User.new(:username => 'nbenari')
41
+ user.save!(:validate => false)
42
+ user.authentications.create(:provider => 'github', :uid => '456')
43
+ end
44
+
45
+ it "should not create user" do
46
+ sorcery_model_property_set(:authentications_class, Authentication)
47
+ sorcery_controller_external_property_set(:twitter, :user_info_mapping, {:username => "screen_name"})
48
+ lambda do
49
+ get :test_create_from_provider_with_block, :provider => "twitter"
50
+ end.should_not change(User, :count)
51
+ end
52
+
53
+ end
36
54
  end
37
55
  end
@@ -181,6 +181,15 @@ describe "Crypto Providers wrappers" do
181
181
  it "matches? returns false when no match" do
182
182
  Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'Some Dude').should be_false
183
183
  end
184
+
185
+ it "respond_to?(:stretches) returns true" do
186
+ Sorcery::CryptoProviders::BCrypt.respond_to?(:stretches).should be_true
187
+ end
188
+
189
+ it "sets cost when stretches is set" do
190
+ Sorcery::CryptoProviders::BCrypt.stretches = 4
191
+ Sorcery::CryptoProviders::BCrypt.cost.should == 4
192
+ end
184
193
 
185
194
  end
186
195
 
metadata CHANGED
@@ -1,212 +1,225 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sorcery
3
- version: !ruby/object:Gem::Version
4
- version: 0.7.12
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 0.7.13
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Noam Ben Ari
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-06 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
12
+
13
+ date: 2012-07-22 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
15
16
  name: oauth
16
- requirement: &2158314580 !ruby/object:Gem::Requirement
17
+ requirement: &id001 !ruby/object:Gem::Requirement
17
18
  none: false
18
- requirements:
19
+ requirements:
19
20
  - - ~>
20
- - !ruby/object:Gem::Version
21
+ - !ruby/object:Gem::Version
21
22
  version: 0.4.4
22
23
  type: :runtime
23
24
  prerelease: false
24
- version_requirements: *2158314580
25
- - !ruby/object:Gem::Dependency
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
26
27
  name: oauth2
27
- requirement: &2158314020 !ruby/object:Gem::Requirement
28
+ requirement: &id002 !ruby/object:Gem::Requirement
28
29
  none: false
29
- requirements:
30
+ requirements:
30
31
  - - ~>
31
- - !ruby/object:Gem::Version
32
- version: 0.5.1
32
+ - !ruby/object:Gem::Version
33
+ version: 0.6.0
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *2158314020
36
- - !ruby/object:Gem::Dependency
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
37
38
  name: bcrypt-ruby
38
- requirement: &2158313520 !ruby/object:Gem::Requirement
39
+ requirement: &id003 !ruby/object:Gem::Requirement
39
40
  none: false
40
- requirements:
41
+ requirements:
41
42
  - - ~>
42
- - !ruby/object:Gem::Version
43
+ - !ruby/object:Gem::Version
43
44
  version: 3.0.0
44
45
  type: :runtime
45
46
  prerelease: false
46
- version_requirements: *2158313520
47
- - !ruby/object:Gem::Dependency
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: abstract
50
+ requirement: &id004 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 1.0.0
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
48
60
  name: rails
49
- requirement: &2158313000 !ruby/object:Gem::Requirement
61
+ requirement: &id005 !ruby/object:Gem::Requirement
50
62
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
54
66
  version: 3.0.0
55
67
  type: :development
56
68
  prerelease: false
57
- version_requirements: *2158313000
58
- - !ruby/object:Gem::Dependency
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
59
71
  name: json
60
- requirement: &2158312440 !ruby/object:Gem::Requirement
72
+ requirement: &id006 !ruby/object:Gem::Requirement
61
73
  none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
65
77
  version: 1.5.1
66
78
  type: :development
67
79
  prerelease: false
68
- version_requirements: *2158312440
69
- - !ruby/object:Gem::Dependency
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
70
82
  name: rspec
71
- requirement: &2158311900 !ruby/object:Gem::Requirement
83
+ requirement: &id007 !ruby/object:Gem::Requirement
72
84
  none: false
73
- requirements:
85
+ requirements:
74
86
  - - ~>
75
- - !ruby/object:Gem::Version
87
+ - !ruby/object:Gem::Version
76
88
  version: 2.5.0
77
89
  type: :development
78
90
  prerelease: false
79
- version_requirements: *2158311900
80
- - !ruby/object:Gem::Dependency
91
+ version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
81
93
  name: rspec-rails
82
- requirement: &2158613600 !ruby/object:Gem::Requirement
94
+ requirement: &id008 !ruby/object:Gem::Requirement
83
95
  none: false
84
- requirements:
96
+ requirements:
85
97
  - - ~>
86
- - !ruby/object:Gem::Version
98
+ - !ruby/object:Gem::Version
87
99
  version: 2.5.0
88
100
  type: :development
89
101
  prerelease: false
90
- version_requirements: *2158613600
91
- - !ruby/object:Gem::Dependency
102
+ version_requirements: *id008
103
+ - !ruby/object:Gem::Dependency
92
104
  name: ruby-debug19
93
- requirement: &2158611860 !ruby/object:Gem::Requirement
105
+ requirement: &id009 !ruby/object:Gem::Requirement
94
106
  none: false
95
- requirements:
96
- - - ! '>='
97
- - !ruby/object:Gem::Version
98
- version: '0'
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: "0"
99
111
  type: :development
100
112
  prerelease: false
101
- version_requirements: *2158611860
102
- - !ruby/object:Gem::Dependency
113
+ version_requirements: *id009
114
+ - !ruby/object:Gem::Dependency
103
115
  name: sqlite3-ruby
104
- requirement: &2158611100 !ruby/object:Gem::Requirement
116
+ requirement: &id010 !ruby/object:Gem::Requirement
105
117
  none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: "0"
110
122
  type: :development
111
123
  prerelease: false
112
- version_requirements: *2158611100
113
- - !ruby/object:Gem::Dependency
124
+ version_requirements: *id010
125
+ - !ruby/object:Gem::Dependency
114
126
  name: yard
115
- requirement: &2158610620 !ruby/object:Gem::Requirement
127
+ requirement: &id011 !ruby/object:Gem::Requirement
116
128
  none: false
117
- requirements:
129
+ requirements:
118
130
  - - ~>
119
- - !ruby/object:Gem::Version
131
+ - !ruby/object:Gem::Version
120
132
  version: 0.6.0
121
133
  type: :development
122
134
  prerelease: false
123
- version_requirements: *2158610620
124
- - !ruby/object:Gem::Dependency
135
+ version_requirements: *id011
136
+ - !ruby/object:Gem::Dependency
125
137
  name: bundler
126
- requirement: &2158610060 !ruby/object:Gem::Requirement
138
+ requirement: &id012 !ruby/object:Gem::Requirement
127
139
  none: false
128
- requirements:
129
- - - ! '>='
130
- - !ruby/object:Gem::Version
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
131
143
  version: 1.1.0
132
144
  type: :development
133
145
  prerelease: false
134
- version_requirements: *2158610060
135
- - !ruby/object:Gem::Dependency
146
+ version_requirements: *id012
147
+ - !ruby/object:Gem::Dependency
136
148
  name: jeweler
137
- requirement: &2158609520 !ruby/object:Gem::Requirement
149
+ requirement: &id013 !ruby/object:Gem::Requirement
138
150
  none: false
139
- requirements:
151
+ requirements:
140
152
  - - ~>
141
- - !ruby/object:Gem::Version
153
+ - !ruby/object:Gem::Version
142
154
  version: 1.8.3
143
155
  type: :development
144
156
  prerelease: false
145
- version_requirements: *2158609520
146
- - !ruby/object:Gem::Dependency
157
+ version_requirements: *id013
158
+ - !ruby/object:Gem::Dependency
147
159
  name: simplecov
148
- requirement: &2158609020 !ruby/object:Gem::Requirement
160
+ requirement: &id014 !ruby/object:Gem::Requirement
149
161
  none: false
150
- requirements:
151
- - - ! '>='
152
- - !ruby/object:Gem::Version
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
153
165
  version: 0.3.8
154
166
  type: :development
155
167
  prerelease: false
156
- version_requirements: *2158609020
157
- - !ruby/object:Gem::Dependency
168
+ version_requirements: *id014
169
+ - !ruby/object:Gem::Dependency
158
170
  name: timecop
159
- requirement: &2158608520 !ruby/object:Gem::Requirement
171
+ requirement: &id015 !ruby/object:Gem::Requirement
160
172
  none: false
161
- requirements:
162
- - - ! '>='
163
- - !ruby/object:Gem::Version
164
- version: '0'
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: "0"
165
177
  type: :development
166
178
  prerelease: false
167
- version_requirements: *2158608520
168
- - !ruby/object:Gem::Dependency
179
+ version_requirements: *id015
180
+ - !ruby/object:Gem::Dependency
169
181
  name: capybara
170
- requirement: &2158608000 !ruby/object:Gem::Requirement
182
+ requirement: &id016 !ruby/object:Gem::Requirement
171
183
  none: false
172
- requirements:
173
- - - ! '>='
174
- - !ruby/object:Gem::Version
175
- version: '0'
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: "0"
176
188
  type: :development
177
189
  prerelease: false
178
- version_requirements: *2158608000
179
- - !ruby/object:Gem::Dependency
190
+ version_requirements: *id016
191
+ - !ruby/object:Gem::Dependency
180
192
  name: mongo_mapper
181
- requirement: &2158607480 !ruby/object:Gem::Requirement
193
+ requirement: &id017 !ruby/object:Gem::Requirement
182
194
  none: false
183
- requirements:
184
- - - ! '>='
185
- - !ruby/object:Gem::Version
186
- version: '0'
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: "0"
187
199
  type: :development
188
200
  prerelease: false
189
- version_requirements: *2158607480
190
- - !ruby/object:Gem::Dependency
201
+ version_requirements: *id017
202
+ - !ruby/object:Gem::Dependency
191
203
  name: mongoid
192
- requirement: &2158606940 !ruby/object:Gem::Requirement
204
+ requirement: &id018 !ruby/object:Gem::Requirement
193
205
  none: false
194
- requirements:
206
+ requirements:
195
207
  - - ~>
196
- - !ruby/object:Gem::Version
208
+ - !ruby/object:Gem::Version
197
209
  version: 2.4.4
198
210
  type: :development
199
211
  prerelease: false
200
- version_requirements: *2158606940
201
- description: Provides common authentication needs such as signing in/out, activating
202
- by email and resetting password.
212
+ version_requirements: *id018
213
+ description: Provides common authentication needs such as signing in/out, activating by email and resetting password.
203
214
  email: nbenari@gmail.com
204
215
  executables: []
216
+
205
217
  extensions: []
206
- extra_rdoc_files:
218
+
219
+ extra_rdoc_files:
207
220
  - LICENSE.txt
208
221
  - README.rdoc
209
- files:
222
+ files:
210
223
  - .document
211
224
  - .rspec
212
225
  - .travis.yml
@@ -489,28 +502,31 @@ files:
489
502
  - spec/spec.opts
490
503
  - spec/spec_helper.rb
491
504
  homepage: http://github.com/NoamB/sorcery
492
- licenses:
505
+ licenses:
493
506
  - MIT
494
507
  post_install_message:
495
508
  rdoc_options: []
496
- require_paths:
509
+
510
+ require_paths:
497
511
  - lib
498
- required_ruby_version: !ruby/object:Gem::Requirement
512
+ required_ruby_version: !ruby/object:Gem::Requirement
499
513
  none: false
500
- requirements:
501
- - - ! '>='
502
- - !ruby/object:Gem::Version
503
- version: '0'
504
- required_rubygems_version: !ruby/object:Gem::Requirement
514
+ requirements:
515
+ - - ">="
516
+ - !ruby/object:Gem::Version
517
+ version: "0"
518
+ required_rubygems_version: !ruby/object:Gem::Requirement
505
519
  none: false
506
- requirements:
507
- - - ! '>='
508
- - !ruby/object:Gem::Version
509
- version: '0'
520
+ requirements:
521
+ - - ">="
522
+ - !ruby/object:Gem::Version
523
+ version: "0"
510
524
  requirements: []
525
+
511
526
  rubyforge_project:
512
- rubygems_version: 1.8.10
527
+ rubygems_version: 1.8.21
513
528
  signing_key:
514
529
  specification_version: 3
515
530
  summary: Magical authentication for Rails 3 applications
516
531
  test_files: []
532
+