authlogic 3.3.0 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -1
  3. data/.travis.yml +27 -0
  4. data/CONTRIBUTING.md +10 -0
  5. data/Gemfile.lock +46 -28
  6. data/History +10 -0
  7. data/README.rdoc +2 -0
  8. data/Rakefile +0 -13
  9. data/authlogic.gemspec +8 -7
  10. data/lib/authlogic/acts_as_authentic/email.rb +1 -1
  11. data/lib/authlogic/acts_as_authentic/login.rb +12 -13
  12. data/lib/authlogic/acts_as_authentic/password.rb +47 -47
  13. data/lib/authlogic/acts_as_authentic/perishable_token.rb +1 -1
  14. data/lib/authlogic/acts_as_authentic/persistence_token.rb +1 -1
  15. data/lib/authlogic/authenticates_many/base.rb +1 -1
  16. data/lib/authlogic/controller_adapters/sinatra_adapter.rb +1 -1
  17. data/lib/authlogic/crypto_providers/bcrypt.rb +19 -18
  18. data/lib/authlogic/crypto_providers/scrypt.rb +7 -6
  19. data/lib/authlogic/regex.rb +3 -2
  20. data/lib/authlogic/session/activation.rb +5 -3
  21. data/lib/authlogic/session/active_record_trickery.rb +23 -1
  22. data/lib/authlogic/session/callbacks.rb +8 -3
  23. data/lib/authlogic/session/cookies.rb +52 -17
  24. data/lib/authlogic/session/foundation.rb +1 -9
  25. data/lib/authlogic/session/magic_columns.rb +3 -3
  26. data/lib/authlogic/session/scopes.rb +11 -4
  27. data/lib/authlogic/session/session.rb +8 -8
  28. data/lib/authlogic/test_case.rb +7 -5
  29. data/lib/authlogic/test_case/mock_cookie_jar.rb +25 -0
  30. data/lib/authlogic/test_case/mock_request.rb +2 -2
  31. data/test/acts_as_authentic_test/logged_in_status_test.rb +3 -3
  32. data/test/acts_as_authentic_test/password_test.rb +16 -7
  33. data/test/crypto_provider_test/bcrypt_test.rb +1 -9
  34. data/test/fixtures/users.yml +13 -1
  35. data/test/gemfiles/Gemfile.rails-3.2.x +5 -0
  36. data/test/gemfiles/Gemfile.rails-4.0.x +5 -0
  37. data/test/gemfiles/Gemfile.rails-4.1.x +5 -0
  38. data/test/session_test/active_record_trickery_test.rb +29 -0
  39. data/test/session_test/cookies_test.rb +26 -1
  40. data/test/session_test/session_test.rb +7 -7
  41. data/test/test_helper.rb +3 -1
  42. metadata +59 -55
  43. data/lib/authlogic/controller_adapters/rack_adapter.rb +0 -63
@@ -12,7 +12,7 @@ module Authlogic
12
12
  after_persisting :update_session, :unless => :single_access?
13
13
  end
14
14
  end
15
-
15
+
16
16
  # Configuration for the session feature.
17
17
  module Config
18
18
  # Works exactly like cookie_key, but for sessions. See cookie_key for more info.
@@ -24,7 +24,7 @@ module Authlogic
24
24
  end
25
25
  alias_method :session_key=, :session_key
26
26
  end
27
-
27
+
28
28
  # Instance methods for the session feature.
29
29
  module InstanceMethods
30
30
  private
@@ -35,23 +35,23 @@ module Authlogic
35
35
  # Allow finding by persistence token, because when records are created the session is maintained in a before_save, when there is no id.
36
36
  # This is done for performance reasons and to save on queries.
37
37
  record = record_id.nil? ?
38
- search_for_record("find_by_persistence_token", persistence_token.to_s) :
39
- search_for_record("find_by_#{klass.primary_key}", record_id.to_s)
38
+ search_for_record("find_by_persistence_token", persistence_token) :
39
+ search_for_record("find_by_#{klass.primary_key}", record_id)
40
40
  self.unauthorized_record = record if record && record.persistence_token == persistence_token
41
41
  valid?
42
42
  else
43
43
  false
44
44
  end
45
45
  end
46
-
46
+
47
47
  def session_credentials
48
- [controller.session[session_key], controller.session["#{session_key}_#{klass.primary_key}"]].compact
48
+ [controller.session[session_key], controller.session["#{session_key}_#{klass.primary_key}"]].collect { |i| i.nil? ? i : i.to_s }.compact
49
49
  end
50
-
50
+
51
51
  def session_key
52
52
  build_key(self.class.session_key)
53
53
  end
54
-
54
+
55
55
  def update_session
56
56
  controller.session[session_key] = record && record.persistence_token
57
57
  controller.session["#{session_key}_#{klass.primary_key}"] = record && record.send(record.class.primary_key)
@@ -56,7 +56,7 @@ module Authlogic
56
56
  #
57
57
  # setup :activate_authlogic
58
58
  #
59
- # For those of you unfamiliar with TestUnit, the setup method bascially just executes a method before any test is ran.
59
+ # For those of you unfamiliar with TestUnit, the setup method basically just executes a method before any test is ran.
60
60
  # It is essentially "setting up" your tests.
61
61
  #
62
62
  # Once you have done this, just log users in like usual:
@@ -69,7 +69,7 @@ module Authlogic
69
69
  # === Integration tests
70
70
  #
71
71
  # Again, just like functional tests, you don't have to do anything. As soon as you make a request, Authlogic will be
72
- # conntected. If you want to activate Authlogic before making a request follow the same steps described in the
72
+ # connected. If you want to activate Authlogic before making a request follow the same steps described in the
73
73
  # "functional tests" section above. It works in the same manner.
74
74
  #
75
75
  # === Unit tests
@@ -81,7 +81,7 @@ module Authlogic
81
81
  # that looks like a controller, acts like a controller, but isn't a "real" controller. You are essentially connecting
82
82
  # Authlogic to your "mock" controller, then you can test off of the mock controller to make sure everything is functioning
83
83
  # properly.
84
- #
84
+ #
85
85
  # I use a mock controller to test Authlogic myself. It's part of the Authlogic library that you can easily use. It's as simple
86
86
  # as functional and integration tests. Just do the following:
87
87
  #
@@ -108,13 +108,15 @@ module Authlogic
108
108
 
109
109
  Authlogic::Session::Base.controller = (@request && Authlogic::TestCase::RailsRequestAdapter.new(@request)) || controller
110
110
  end
111
-
111
+
112
112
  # The Authlogic::TestCase::MockController object passed to Authlogic to activate it. You can access this in your test.
113
113
  # See the module description for an example.
114
114
  def controller
115
115
  @controller ||= Authlogic::TestCase::MockController.new
116
116
  end
117
117
  end
118
-
118
+
119
119
  ::Test::Unit::TestCase.send(:include, TestCase) if defined?(::Test::Unit::TestCase)
120
+ ::MiniTest::Unit::TestCase.send(:include, TestCase) if defined?(::MiniTest::Unit::TestCase)
121
+ ::MiniTest::Test.send(:include, TestCase) if defined?(::MiniTest::Test)
120
122
  end
@@ -9,6 +9,31 @@ module Authlogic
9
9
  def delete(key, options = {})
10
10
  super(key)
11
11
  end
12
+
13
+ def signed
14
+ @signed ||= MockSignedCookieJar.new(self)
15
+ end
16
+ end
17
+
18
+ class MockSignedCookieJar < MockCookieJar
19
+ attr_reader :parent_jar # helper for testing
20
+
21
+ def initialize(parent_jar)
22
+ @parent_jar = parent_jar
23
+ end
24
+
25
+ def [](val)
26
+ if signed_message = @parent_jar[val]
27
+ payload, signature = signed_message.split('--')
28
+ raise "Invalid signature" unless Digest::SHA1.hexdigest(payload) == signature
29
+ payload
30
+ end
31
+ end
32
+
33
+ def []=(key, options)
34
+ options[:value] = "#{options[:value]}--#{Digest::SHA1.hexdigest options[:value]}"
35
+ @parent_jar[key] = options
36
+ end
12
37
  end
13
38
  end
14
39
  end
@@ -7,7 +7,7 @@ module Authlogic
7
7
  self.controller = controller
8
8
  end
9
9
 
10
- def ip
10
+ def remote_ip
11
11
  (controller && controller.respond_to?(:env) && controller.env.is_a?(Hash) && controller.env['REMOTE_ADDR']) || "1.1.1.1"
12
12
  end
13
13
 
@@ -16,4 +16,4 @@ module Authlogic
16
16
  end
17
17
  end
18
18
  end
19
- end
19
+ end
@@ -36,9 +36,9 @@ module ActsAsAuthenticTest
36
36
  # test happens so fast that the test fails... I just don't know a better way to test it!
37
37
  assert User.logged_in.where_values != User.logged_out.where_values, ERROR_MSG % '#logged_out'
38
38
 
39
- assert_equal 2, User.logged_out.count
39
+ assert_equal 3, User.logged_out.count
40
40
  User.first.update_attribute(:last_request_at, Time.now)
41
- assert_equal 1, User.logged_out.count
41
+ assert_equal 2, User.logged_out.count
42
42
  end
43
43
 
44
44
  def test_logged_in_logged_out
@@ -50,4 +50,4 @@ module ActsAsAuthenticTest
50
50
  assert !u.logged_out?
51
51
  end
52
52
  end
53
- end
53
+ end
@@ -84,7 +84,7 @@ module ActsAsAuthenticTest
84
84
  end
85
85
 
86
86
  def test_crypto_provider_config
87
- assert_equal Authlogic::CryptoProviders::Sha512, User.crypto_provider
87
+ assert_equal Authlogic::CryptoProviders::SCrypt, User.crypto_provider
88
88
  assert_equal Authlogic::CryptoProviders::AES256, Employee.crypto_provider
89
89
 
90
90
  User.crypto_provider = Authlogic::CryptoProviders::BCrypt
@@ -111,7 +111,12 @@ module ActsAsAuthenticTest
111
111
 
112
112
  u.password = "test"
113
113
  assert !u.valid?
114
- assert u.errors[:password_confirmation].size == 0
114
+
115
+ if ActiveModel.respond_to?(:version) and ActiveModel.version.segments.first >= 4
116
+ assert u.errors[:password_confirmation].size == 5
117
+ else
118
+ assert u.errors[:password_confirmation].size == 0
119
+ end
115
120
  end
116
121
 
117
122
  def test_validates_confirmation_of_password
@@ -119,8 +124,12 @@ module ActsAsAuthenticTest
119
124
  u.password = "test"
120
125
  u.password_confirmation = "test2"
121
126
  assert !u.valid?
122
- assert u.errors[:password].size > 0
123
-
127
+ # assert u.errors[:password].size > 0
128
+ if ActiveModel.respond_to?(:version) and ActiveModel.version.segments.first >= 4
129
+ assert u.errors[:password_confirmation].size > 0
130
+ else
131
+ assert u.errors[:password].size > 0
132
+ end
124
133
  u.password_confirmation = "test"
125
134
  assert !u.valid?
126
135
  assert u.errors[:password].size == 0
@@ -166,10 +175,10 @@ module ActsAsAuthenticTest
166
175
  end
167
176
 
168
177
  def test_checks_password_against_database
169
- ben = users(:ben)
178
+ ben = users(:aaron)
170
179
  ben.password = "new pass"
171
180
  assert !ben.valid_password?("new pass")
172
- assert ben.valid_password?("benrocks")
181
+ assert ben.valid_password?("aaronrocks")
173
182
  end
174
183
 
175
184
  def test_checks_password_against_database_and_always_fails_on_new_records
@@ -233,4 +242,4 @@ module ActsAsAuthenticTest
233
242
  end
234
243
  end
235
244
  end
236
- end
245
+ end
@@ -5,18 +5,10 @@ module CryptoProviderTest
5
5
  def test_encrypt
6
6
  assert Authlogic::CryptoProviders::BCrypt.encrypt("mypass")
7
7
  end
8
-
8
+
9
9
  def test_matches
10
10
  hash = Authlogic::CryptoProviders::BCrypt.encrypt("mypass")
11
11
  assert Authlogic::CryptoProviders::BCrypt.matches?(hash, "mypass")
12
12
  end
13
-
14
- def test_minimum_cost
15
- Authlogic::CryptoProviders::BCrypt.cost = 4
16
- assert_equal 4, Authlogic::CryptoProviders::BCrypt.cost
17
-
18
- assert_raises(ArgumentError) { Authlogic::CryptoProviders::BCrypt.cost = 2 }
19
- assert_equal 4, Authlogic::CryptoProviders::BCrypt.cost
20
- end
21
13
  end
22
14
  end
@@ -21,4 +21,16 @@ zack:
21
21
  single_access_token: <%= Authlogic::Random.friendly_token %>
22
22
  email: zham@ziggityzack.com
23
23
  first_name: Zack
24
- last_name: Ham
24
+ last_name: Ham
25
+
26
+ aaron:
27
+ company: cigital
28
+ projects: web_services
29
+ login: abedra
30
+ crypted_password: <%= Authlogic::CryptoProviders::SCrypt.encrypt("aaronrocks") %>
31
+ persistence_token: 6cde0674657a8a313ce952df979de2830309aa4c11ca65805dd00bfdc65dbcc2f5e36718660a1d2e68c1a08c276d996763985d2f06fd3d076eb7bc4d97b1e317
32
+ single_access_token: <%= Authlogic::Random.friendly_token %>
33
+ perishable_token: <%= Authlogic::Random.friendly_token %>
34
+ email: abedra@cigital.com
35
+ first_name: Aaron
36
+ last_name: Bedra
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+ gemspec :path => "./../.."
3
+
4
+ gem "activerecord", "3.2.17"
5
+ gem "activesupport", "3.2.17"
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+ gemspec :path => "./../.."
3
+
4
+ gem "activerecord", "4.0.3"
5
+ gem "activesupport", "4.0.3"
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+ gemspec :path => "./../.."
3
+
4
+ gem "activerecord", "4.1.0.rc1"
5
+ gem "activesupport", "4.1.0.rc1"
@@ -28,7 +28,36 @@ module SessionTest
28
28
  session = UserSession.new
29
29
  assert session.new_record?
30
30
  end
31
+
32
+ def test_to_key
33
+ ben = users(:ben)
34
+ session = UserSession.new(ben)
35
+ assert_nil session.to_key
36
+
37
+ session.save
38
+ assert_not_nil session.to_key
39
+ assert_equal ben.to_key, session.to_key
40
+ end
41
+
42
+ def test_persisted
43
+ session = UserSession.new(users(:ben))
44
+ assert ! session.persisted?
45
+
46
+ session.save
47
+ assert session.persisted?
48
+
49
+ session.destroy
50
+ assert ! session.persisted?
51
+ end
31
52
 
53
+ def test_destroyed?
54
+ session = UserSession.create(users(:ben))
55
+ assert ! session.destroyed?
56
+
57
+ session.destroy
58
+ assert session.destroyed?
59
+ end
60
+
32
61
  def test_to_model
33
62
  session = UserSession.new
34
63
  assert_equal session, session.to_model
@@ -65,6 +65,18 @@ module SessionTest
65
65
  session = UserSession.new
66
66
  assert_equal false, session.httponly
67
67
  end
68
+
69
+ def test_sign_cookie
70
+ UserSession.sign_cookie = true
71
+ assert_equal true, UserSession.sign_cookie
72
+ session = UserSession.new
73
+ assert_equal true, session.sign_cookie
74
+
75
+ UserSession.sign_cookie false
76
+ assert_equal false, UserSession.sign_cookie
77
+ session = UserSession.new
78
+ assert_equal false, session.sign_cookie
79
+ end
68
80
  end
69
81
 
70
82
  class InstanceMethodsTest < ActiveSupport::TestCase
@@ -136,12 +148,25 @@ module SessionTest
136
148
  assert_equal "#{ben.persistence_token}::#{ben.id}", controller.cookies["user_credentials"]
137
149
  end
138
150
 
151
+ def test_after_save_save_cookie_signed
152
+ ben = users(:ben)
153
+
154
+ assert_nil controller.cookies["user_credentials"]
155
+ payload = "#{ben.persistence_token}::#{ben.id}"
156
+
157
+ session = UserSession.new(ben)
158
+ session.sign_cookie = true
159
+ assert session.save
160
+ assert_equal payload, controller.cookies.signed["user_credentials"]
161
+ assert_equal "#{payload}--#{Digest::SHA1.hexdigest payload}", controller.cookies.signed.parent_jar["user_credentials"]
162
+ end
163
+
139
164
  def test_after_save_save_cookie_with_remember_me
140
165
  ben = users(:ben)
141
166
  session = UserSession.new(ben)
142
167
  session.remember_me = true
143
168
  assert session.save
144
- assert_equal "#{ben.persistence_token}::#{ben.id}::#{session.remember_me_until}", controller.cookies["user_credentials"]
169
+ assert_equal "#{ben.persistence_token}::#{ben.id}::#{session.remember_me_until.iso8601}", controller.cookies["user_credentials"]
145
170
  end
146
171
 
147
172
  def test_after_destroy_destroy_cookie
@@ -6,12 +6,12 @@ module SessionTest
6
6
  def test_session_key
7
7
  UserSession.session_key = "my_session_key"
8
8
  assert_equal "my_session_key", UserSession.session_key
9
-
9
+
10
10
  UserSession.session_key "user_credentials"
11
11
  assert_equal "user_credentials", UserSession.session_key
12
12
  end
13
13
  end
14
-
14
+
15
15
  class InstanceMethodsTest < ActiveSupport::TestCase
16
16
  def test_persist_persist_by_session
17
17
  ben = users(:ben)
@@ -38,16 +38,16 @@ module SessionTest
38
38
  end
39
39
  assert @user_session.blank?
40
40
  end
41
-
41
+
42
42
  def test_persist_persist_by_session_with_token_only
43
43
  ben = users(:ben)
44
44
  set_session_for(ben)
45
45
  controller.session["user_credentials_id"] = nil
46
- assert session = UserSession.find
46
+ session = UserSession.find
47
47
  assert_equal ben, session.record
48
48
  assert_equal ben.persistence_token, controller.session["user_credentials"]
49
49
  end
50
-
50
+
51
51
  def test_after_save_update_session
52
52
  ben = users(:ben)
53
53
  session = UserSession.new(ben)
@@ -55,7 +55,7 @@ module SessionTest
55
55
  assert session.save
56
56
  assert_equal ben.persistence_token, controller.session["user_credentials"]
57
57
  end
58
-
58
+
59
59
  def test_after_destroy_update_session
60
60
  ben = users(:ben)
61
61
  set_session_for(ben)
@@ -64,7 +64,7 @@ module SessionTest
64
64
  assert session.destroy
65
65
  assert controller.session["user_credentials"].blank?
66
66
  end
67
-
67
+
68
68
  def test_after_persisting_update_session
69
69
  ben = users(:ben)
70
70
  set_cookie_for(ben)
@@ -1,10 +1,11 @@
1
- require "test/unit"
2
1
  require "rubygems"
2
+ require "minitest/autorun"
3
3
  require "active_record"
4
4
  require "active_record/fixtures"
5
5
  require "timecop"
6
6
  require "i18n"
7
7
 
8
+
8
9
  I18n.load_path << File.dirname(__FILE__) + '/i18n/lol.yml'
9
10
 
10
11
  #ActiveRecord::Schema.verbose = false
@@ -14,6 +15,7 @@ logger.level= Logger::FATAL
14
15
  ActiveRecord::Base.logger = logger
15
16
 
16
17
  ActiveRecord::Base.configurations = true
18
+ ActiveRecord::Base.default_timezone = :local
17
19
  ActiveRecord::Schema.define(:version => 1) do
18
20
  create_table :companies do |t|
19
21
  t.datetime :created_at
metadata CHANGED
@@ -1,144 +1,141 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authlogic
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
5
- prerelease:
4
+ version: 3.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ben Johnson
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-04 00:00:00.000000000 Z
11
+ date: 2014-03-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.2'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '3.2'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: activesupport
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '3.2'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '3.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: request_store
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.5
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.5
46
55
  - !ruby/object:Gem::Dependency
47
56
  name: rake
48
57
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
58
  requirements:
51
- - - ! '>='
59
+ - - ">="
52
60
  - !ruby/object:Gem::Version
53
- version: '0'
61
+ version: 10.1.1
54
62
  type: :development
55
63
  prerelease: false
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
65
  requirements:
59
- - - ! '>='
66
+ - - ">="
60
67
  - !ruby/object:Gem::Version
61
- version: '0'
68
+ version: 10.1.1
62
69
  - !ruby/object:Gem::Dependency
63
70
  name: bcrypt-ruby
64
71
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
72
  requirements:
67
- - - ! '>='
73
+ - - ">="
68
74
  - !ruby/object:Gem::Version
69
- version: '0'
75
+ version: 3.1.5
70
76
  type: :development
71
77
  prerelease: false
72
78
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
79
  requirements:
75
- - - ! '>='
80
+ - - ">="
76
81
  - !ruby/object:Gem::Version
77
- version: '0'
82
+ version: 3.1.5
78
83
  - !ruby/object:Gem::Dependency
79
84
  name: scrypt
80
85
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
86
  requirements:
83
- - - ! '>='
87
+ - - ">="
84
88
  - !ruby/object:Gem::Version
85
- version: '0'
89
+ version: 1.2.0
86
90
  type: :development
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
93
  requirements:
91
- - - ! '>='
94
+ - - ">="
92
95
  - !ruby/object:Gem::Version
93
- version: '0'
96
+ version: 1.2.0
94
97
  - !ruby/object:Gem::Dependency
95
98
  name: sqlite3
96
99
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
100
  requirements:
99
- - - ! '>='
101
+ - - ">="
100
102
  - !ruby/object:Gem::Version
101
- version: '0'
103
+ version: 1.3.9
102
104
  type: :development
103
105
  prerelease: false
104
106
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
107
  requirements:
107
- - - ! '>='
108
+ - - ">="
108
109
  - !ruby/object:Gem::Version
109
- version: '0'
110
+ version: 1.3.9
110
111
  - !ruby/object:Gem::Dependency
111
112
  name: timecop
112
113
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
114
  requirements:
115
- - - ! '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 0.7.1
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
121
  requirements:
123
- - - ! '>='
122
+ - - ">="
124
123
  - !ruby/object:Gem::Version
125
- version: '0'
124
+ version: 0.7.1
126
125
  - !ruby/object:Gem::Dependency
127
126
  name: i18n
128
127
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
128
  requirements:
131
- - - ! '>='
129
+ - - ">="
132
130
  - !ruby/object:Gem::Version
133
- version: '0'
131
+ version: 0.6.9
134
132
  type: :development
135
133
  prerelease: false
136
134
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
135
  requirements:
139
- - - ! '>='
136
+ - - ">="
140
137
  - !ruby/object:Gem::Version
141
- version: '0'
138
+ version: 0.6.9
142
139
  description: A clean, simple, and unobtrusive ruby authentication solution.
143
140
  email:
144
141
  - bjohnson@binarylogic.com
@@ -146,9 +143,12 @@ executables: []
146
143
  extensions: []
147
144
  extra_rdoc_files: []
148
145
  files:
149
- - .gitignore
146
+ - ".gitignore"
147
+ - ".travis.yml"
148
+ - CONTRIBUTING.md
150
149
  - Gemfile
151
150
  - Gemfile.lock
151
+ - History
152
152
  - LICENSE
153
153
  - README.rdoc
154
154
  - Rakefile
@@ -169,7 +169,6 @@ files:
169
169
  - lib/authlogic/authenticates_many/association.rb
170
170
  - lib/authlogic/authenticates_many/base.rb
171
171
  - lib/authlogic/controller_adapters/abstract_adapter.rb
172
- - lib/authlogic/controller_adapters/rack_adapter.rb
173
172
  - lib/authlogic/controller_adapters/rails_adapter.rb
174
173
  - lib/authlogic/controller_adapters/sinatra_adapter.rb
175
174
  - lib/authlogic/crypto_providers/aes256.rb
@@ -235,6 +234,9 @@ files:
235
234
  - test/fixtures/employees.yml
236
235
  - test/fixtures/projects.yml
237
236
  - test/fixtures/users.yml
237
+ - test/gemfiles/Gemfile.rails-3.2.x
238
+ - test/gemfiles/Gemfile.rails-4.0.x
239
+ - test/gemfiles/Gemfile.rails-4.1.x
238
240
  - test/i18n/lol.yml
239
241
  - test/i18n_test.rb
240
242
  - test/libs/affiliate.rb
@@ -271,27 +273,26 @@ files:
271
273
  - test/test_helper.rb
272
274
  homepage: http://github.com/binarylogic/authlogic
273
275
  licenses: []
276
+ metadata: {}
274
277
  post_install_message:
275
278
  rdoc_options: []
276
279
  require_paths:
277
280
  - lib
278
281
  required_ruby_version: !ruby/object:Gem::Requirement
279
- none: false
280
282
  requirements:
281
- - - ! '>='
283
+ - - ">="
282
284
  - !ruby/object:Gem::Version
283
285
  version: '0'
284
286
  required_rubygems_version: !ruby/object:Gem::Requirement
285
- none: false
286
287
  requirements:
287
- - - ! '>='
288
+ - - ">="
288
289
  - !ruby/object:Gem::Version
289
290
  version: '0'
290
291
  requirements: []
291
292
  rubyforge_project:
292
- rubygems_version: 1.8.25
293
+ rubygems_version: 2.2.2
293
294
  signing_key:
294
- specification_version: 3
295
+ specification_version: 4
295
296
  summary: A clean, simple, and unobtrusive ruby authentication solution.
296
297
  test_files:
297
298
  - test/acts_as_authentic_test/base_test.rb
@@ -316,6 +317,9 @@ test_files:
316
317
  - test/fixtures/employees.yml
317
318
  - test/fixtures/projects.yml
318
319
  - test/fixtures/users.yml
320
+ - test/gemfiles/Gemfile.rails-3.2.x
321
+ - test/gemfiles/Gemfile.rails-4.0.x
322
+ - test/gemfiles/Gemfile.rails-4.1.x
319
323
  - test/i18n/lol.yml
320
324
  - test/i18n_test.rb
321
325
  - test/libs/affiliate.rb