authlogic 3.3.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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