authenticate 0.3.1 → 0.3.2
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +27 -0
- data/CHANGELOG.md +6 -0
- data/CONTRIBUTING.md +59 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +11 -11
- data/README.md +37 -4
- data/Rakefile +2 -4
- data/app/controllers/authenticate/passwords_controller.rb +3 -3
- data/app/controllers/authenticate/sessions_controller.rb +4 -4
- data/app/controllers/authenticate/users_controller.rb +5 -7
- data/app/mailers/authenticate_mailer.rb +6 -8
- data/authenticate.gemspec +8 -9
- data/lib/authenticate.rb +1 -1
- data/lib/authenticate/callbacks/authenticatable.rb +1 -2
- data/lib/authenticate/callbacks/brute_force.rb +1 -3
- data/lib/authenticate/callbacks/lifetimed.rb +2 -1
- data/lib/authenticate/callbacks/timeoutable.rb +3 -2
- data/lib/authenticate/callbacks/trackable.rb +1 -1
- data/lib/authenticate/configuration.rb +11 -7
- data/lib/authenticate/controller.rb +32 -23
- data/lib/authenticate/crypto/bcrypt.rb +3 -3
- data/lib/authenticate/debug.rb +7 -7
- data/lib/authenticate/engine.rb +4 -2
- data/lib/authenticate/lifecycle.rb +12 -22
- data/lib/authenticate/login_status.rb +4 -3
- data/lib/authenticate/model/brute_force.rb +4 -6
- data/lib/authenticate/model/db_password.rb +5 -14
- data/lib/authenticate/model/email.rb +7 -9
- data/lib/authenticate/model/lifetimed.rb +1 -2
- data/lib/authenticate/model/password_reset.rb +1 -3
- data/lib/authenticate/model/timeoutable.rb +14 -15
- data/lib/authenticate/model/trackable.rb +5 -4
- data/lib/authenticate/model/username.rb +3 -5
- data/lib/authenticate/modules.rb +37 -39
- data/lib/authenticate/session.rb +15 -23
- data/lib/authenticate/token.rb +3 -0
- data/lib/authenticate/user.rb +2 -6
- data/lib/authenticate/version.rb +1 -1
- data/lib/generators/authenticate/controllers/controllers_generator.rb +1 -2
- data/lib/generators/authenticate/helpers.rb +1 -2
- data/lib/generators/authenticate/install/install_generator.rb +31 -32
- data/lib/generators/authenticate/install/templates/authenticate.rb +0 -1
- data/lib/generators/authenticate/routes/routes_generator.rb +1 -2
- data/lib/generators/authenticate/views/USAGE +3 -2
- data/lib/generators/authenticate/views/views_generator.rb +1 -2
- data/spec/controllers/passwords_controller_spec.rb +5 -7
- data/spec/controllers/secured_controller_spec.rb +6 -6
- data/spec/controllers/sessions_controller_spec.rb +2 -2
- data/spec/controllers/users_controller_spec.rb +4 -4
- data/spec/features/brute_force_spec.rb +0 -2
- data/spec/features/max_session_lifetime_spec.rb +0 -1
- data/spec/features/password_reset_spec.rb +10 -19
- data/spec/features/password_update_spec.rb +0 -2
- data/spec/features/sign_out_spec.rb +0 -1
- data/spec/features/sign_up_spec.rb +0 -1
- data/spec/features/timeoutable_spec.rb +0 -1
- data/spec/model/brute_force_spec.rb +2 -3
- data/spec/model/configuration_spec.rb +2 -7
- data/spec/model/db_password_spec.rb +4 -6
- data/spec/model/email_spec.rb +1 -3
- data/spec/model/lifetimed_spec.rb +0 -3
- data/spec/model/modules_spec.rb +22 -0
- data/spec/model/password_reset_spec.rb +3 -10
- data/spec/model/session_spec.rb +4 -5
- data/spec/model/timeoutable_spec.rb +0 -1
- data/spec/model/token_spec.rb +1 -3
- data/spec/model/trackable_spec.rb +1 -2
- data/spec/model/user_spec.rb +0 -1
- data/spec/orm/active_record.rb +1 -1
- data/spec/spec_helper.rb +3 -11
- data/spec/support/controllers/controller_helpers.rb +1 -2
- data/spec/support/features/feature_helpers.rb +2 -4
- metadata +29 -26
@@ -28,7 +28,6 @@ feature 'visitor updates password' do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
|
32
31
|
def update_password(user, password)
|
33
32
|
visit_password_reset_page_for user
|
34
33
|
fill_in 'password_reset_password', with: password
|
@@ -38,4 +37,3 @@ end
|
|
38
37
|
def visit_password_reset_page_for(user)
|
39
38
|
visit edit_users_password_path(id: user, token: user.password_reset_token)
|
40
39
|
end
|
41
|
-
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'authenticate/model/brute_force'
|
3
3
|
|
4
|
-
|
5
4
|
describe Authenticate::Model::BruteForce do
|
6
5
|
before(:each) do
|
7
6
|
@user = create(:user)
|
@@ -46,10 +45,10 @@ describe Authenticate::Model::BruteForce do
|
|
46
45
|
end
|
47
46
|
|
48
47
|
context '#unlock!' do
|
49
|
-
before(:each)
|
48
|
+
before(:each) do
|
50
49
|
@user.lock!
|
51
50
|
@user.unlock!
|
52
|
-
|
51
|
+
end
|
53
52
|
it 'zeros failed_logins_count' do
|
54
53
|
expect(@user.failed_logins_count).to be(0)
|
55
54
|
end
|
@@ -2,9 +2,9 @@ require 'spec_helper'
|
|
2
2
|
require 'authenticate/configuration'
|
3
3
|
|
4
4
|
describe Authenticate::Configuration do
|
5
|
-
|
6
5
|
context 'user model' do
|
7
6
|
module Gug
|
7
|
+
# Faux user model
|
8
8
|
class Profile
|
9
9
|
extend ActiveModel::Naming
|
10
10
|
end
|
@@ -42,7 +42,7 @@ describe Authenticate::Configuration do
|
|
42
42
|
|
43
43
|
context 'with strategy set to username' do
|
44
44
|
before do
|
45
|
-
|
45
|
+
@conf.authentication_strategy = :username
|
46
46
|
end
|
47
47
|
it 'includes username in modules' do
|
48
48
|
expect(@conf.modules).to include :username
|
@@ -51,11 +51,6 @@ describe Authenticate::Configuration do
|
|
51
51
|
expect(@conf.modules).to_not include :email
|
52
52
|
end
|
53
53
|
end
|
54
|
-
|
55
54
|
end
|
56
|
-
|
57
55
|
end
|
58
|
-
|
59
|
-
|
60
|
-
|
61
56
|
end
|
@@ -1,18 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'authenticate/model/db_password'
|
3
3
|
|
4
|
-
|
5
4
|
describe Authenticate::Model::DbPassword do
|
6
5
|
describe 'Passwords' do
|
7
6
|
context '#password_match?' do
|
8
7
|
subject { create(:user, password: 'password') }
|
9
8
|
|
10
9
|
it 'matches a password' do
|
11
|
-
expect(subject.password_match?
|
10
|
+
expect(subject.password_match?('password')).to be_truthy
|
12
11
|
end
|
13
12
|
|
14
13
|
it 'fails to match a bad password' do
|
15
|
-
expect(subject.password_match?
|
14
|
+
expect(subject.password_match?('bad password')).to be_falsey
|
16
15
|
end
|
17
16
|
|
18
17
|
it 'saves passwords' do
|
@@ -20,7 +19,7 @@ describe Authenticate::Model::DbPassword do
|
|
20
19
|
subject.save!
|
21
20
|
|
22
21
|
user = User.find(subject.id)
|
23
|
-
expect(user.password_match?
|
22
|
+
expect(user.password_match?('new_password')).to be_truthy
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
@@ -49,7 +48,7 @@ describe Authenticate::Model::DbPassword do
|
|
49
48
|
context 'on an existing user' do
|
50
49
|
subject { create(:user, password: 'password') }
|
51
50
|
|
52
|
-
it { is_expected.to be_valid
|
51
|
+
it { is_expected.to be_valid }
|
53
52
|
|
54
53
|
it 'should not be valid with an empty password' do
|
55
54
|
subject.password = ''
|
@@ -64,6 +63,5 @@ describe Authenticate::Model::DbPassword do
|
|
64
63
|
end
|
65
64
|
end
|
66
65
|
end
|
67
|
-
|
68
66
|
end
|
69
67
|
end
|
data/spec/model/email_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'authenticate/model/email'
|
3
3
|
|
4
|
-
|
5
4
|
describe Authenticate::Model::Email do
|
6
5
|
it 'validates email' do
|
7
6
|
user = build(:user, :without_email)
|
@@ -12,7 +11,7 @@ describe Authenticate::Model::Email do
|
|
12
11
|
end
|
13
12
|
|
14
13
|
it 'extracts credentials from params' do
|
15
|
-
params = {session:{email:'foo', password:'bar'}}
|
14
|
+
params = { session: { email: 'foo', password: 'bar' } }
|
16
15
|
expect(User.credentials(params)).to match_array(%w(foo bar))
|
17
16
|
end
|
18
17
|
|
@@ -20,5 +19,4 @@ describe Authenticate::Model::Email do
|
|
20
19
|
user = create(:user)
|
21
20
|
expect(User.authenticate([user.email, user.password])).to eq(user)
|
22
21
|
end
|
23
|
-
|
24
22
|
end
|
@@ -1,10 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'authenticate/model/lifetimed'
|
3
3
|
|
4
|
-
|
5
4
|
describe Authenticate::Model::Lifetimed do
|
6
5
|
context '#max_session_lifetime_exceeded?' do
|
7
|
-
|
8
6
|
it 'passes fresh sessions' do
|
9
7
|
Timecop.freeze do
|
10
8
|
user = create(:user, current_sign_in_at: 1.minute.ago.utc)
|
@@ -19,5 +17,4 @@ describe Authenticate::Model::Lifetimed do
|
|
19
17
|
end
|
20
18
|
end
|
21
19
|
end
|
22
|
-
|
23
20
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Authenticate::Modules do
|
4
|
+
# dummy user model to test .check_fields
|
5
|
+
class UserProfile
|
6
|
+
extend ActiveModel::Model
|
7
|
+
include Authenticate::Modules
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '.check_fields' do
|
11
|
+
context 'user model with missing fields' do
|
12
|
+
it 'fails when required_fields are not present' do
|
13
|
+
expect { UserProfile.load_modules }.to raise_error(Authenticate::Modules::MissingAttribute)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
context 'user model with all fields' do
|
17
|
+
it 'fleshed out user model is fine' do
|
18
|
+
expect { User.load_modules }.to_not raise_error
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'authenticate/model/password_reset'
|
3
3
|
|
4
|
-
|
5
4
|
describe Authenticate::Model::PasswordReset do
|
6
5
|
context 'forgot_password!' do
|
7
6
|
subject { create(:user) }
|
@@ -14,7 +13,6 @@ describe Authenticate::Model::PasswordReset do
|
|
14
13
|
it 'sets password reset sent at' do
|
15
14
|
expect(subject.password_reset_sent_at).to_not be_nil
|
16
15
|
end
|
17
|
-
|
18
16
|
end
|
19
17
|
|
20
18
|
context '#reset_password_period_valid?' do
|
@@ -43,12 +41,10 @@ describe Authenticate::Model::PasswordReset do
|
|
43
41
|
subject { create(:user) }
|
44
42
|
|
45
43
|
context 'within time time' do
|
46
|
-
before(:each) {
|
47
|
-
subject.password_reset_sent_at = 1.minutes.ago
|
48
|
-
}
|
44
|
+
before(:each) { subject.password_reset_sent_at = 1.minutes.ago }
|
49
45
|
|
50
46
|
it 'allows password update within time limit' do
|
51
|
-
expect(subject.update_password
|
47
|
+
expect(subject.update_password('password2')).to be_truthy
|
52
48
|
end
|
53
49
|
|
54
50
|
it 'clears password reset token' do
|
@@ -61,14 +57,11 @@ describe Authenticate::Model::PasswordReset do
|
|
61
57
|
subject.update_password 'password2'
|
62
58
|
expect(subject.session_token).to_not eq(token)
|
63
59
|
end
|
64
|
-
|
65
60
|
end
|
66
61
|
|
67
62
|
it 'stops password update after time limit' do
|
68
63
|
subject.password_reset_sent_at = 6.minutes.ago
|
69
|
-
expect(subject.update_password
|
64
|
+
expect(subject.update_password('password2')).to be_falsey
|
70
65
|
end
|
71
|
-
|
72
66
|
end
|
73
|
-
|
74
67
|
end
|
data/spec/model/session_spec.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
3
|
describe Authenticate::Session do
|
5
4
|
describe 'session token' do
|
6
5
|
it 'finds a user from session token' do
|
@@ -18,7 +17,7 @@ describe Authenticate::Session do
|
|
18
17
|
end
|
19
18
|
it 'returns nil with a bogus session token' do
|
20
19
|
request = mock_request
|
21
|
-
cookies = {Authenticate.configuration.cookie_name.freeze.to_sym => 'some made up value'}
|
20
|
+
cookies = { Authenticate.configuration.cookie_name.freeze.to_sym => 'some made up value' }
|
22
21
|
session = Authenticate::Session.new(request, cookies)
|
23
22
|
expect(session.current_user).to be_nil
|
24
23
|
end
|
@@ -56,9 +55,9 @@ describe Authenticate::Session do
|
|
56
55
|
context 'modules' do
|
57
56
|
it 'runs the callbacks' do
|
58
57
|
user = create(:user, :with_session_token, sign_in_count: 0)
|
59
|
-
cookies = {authenticate_session_token: user.session_token}
|
58
|
+
cookies = { authenticate_session_token: user.session_token }
|
60
59
|
session = Authenticate::Session.new(mock_request, cookies)
|
61
|
-
expect{session.login(user)}.to change{user.sign_in_count}.by(1)
|
60
|
+
expect { session.login(user) }. to change { user.sign_in_count }.by(1)
|
62
61
|
end
|
63
62
|
it 'fails login if a callback fails' do
|
64
63
|
cookies = {}
|
@@ -72,6 +71,6 @@ describe Authenticate::Session do
|
|
72
71
|
end
|
73
72
|
end
|
74
73
|
|
75
|
-
def cookies_for
|
74
|
+
def cookies_for(user)
|
76
75
|
{ Authenticate.configuration.cookie_name.freeze.to_sym => user.session_token }
|
77
76
|
end
|
data/spec/model/token_spec.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'authenticate/model/trackable'
|
3
3
|
|
4
|
-
|
5
4
|
describe Authenticate::Model::Trackable do
|
6
|
-
subject {create(:user)}
|
5
|
+
subject { create(:user) }
|
7
6
|
context '#last_sign_in_at' do
|
8
7
|
it 'sets to old current_sign_in_at if it is not nil' do
|
9
8
|
old_sign_in = 2.days.ago.utc
|
data/spec/model/user_spec.rb
CHANGED
data/spec/orm/active_record.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
ENV['RAILS_ENV'] ||= 'test'
|
3
3
|
|
4
|
-
require File.expand_path('../dummy/config/environment.rb',
|
4
|
+
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
5
5
|
require 'rspec/rails'
|
6
6
|
require 'shoulda-matchers'
|
7
7
|
require 'capybara/rails'
|
@@ -26,8 +26,6 @@ RSpec.configure do |config|
|
|
26
26
|
config.order = :random
|
27
27
|
config.use_transactional_fixtures = true
|
28
28
|
|
29
|
-
# config.mock_with :rspec
|
30
|
-
|
31
29
|
config.expect_with :rspec do |expectations|
|
32
30
|
expectations.syntax = :expect
|
33
31
|
end
|
@@ -36,21 +34,15 @@ RSpec.configure do |config|
|
|
36
34
|
mocks.syntax = :expect
|
37
35
|
end
|
38
36
|
|
39
|
-
|
40
|
-
config.after(:each, :type => :feature) do
|
37
|
+
config.after(:each, type: :feature) do
|
41
38
|
DatabaseCleaner.clean # Truncate the database
|
42
39
|
Capybara.reset_sessions! # Forget the (simulated) browser state
|
43
40
|
Capybara.use_default_driver # Revert Capybara.current_driver to Capybara.default_driver
|
44
41
|
end
|
45
42
|
end
|
46
43
|
|
47
|
-
|
48
|
-
def restore_default_configuration
|
49
|
-
puts 'restore_default_configuration called!!!!!!!!!!!!!!!!!!!!!'
|
50
|
-
end
|
51
|
-
|
52
44
|
def mock_request(params = {})
|
53
|
-
req = double(
|
45
|
+
req = double('request')
|
54
46
|
allow(req).to receive(:params).and_return(params)
|
55
47
|
allow(req).to receive(:remote_ip).and_return('111.111.111.111')
|
56
48
|
req
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'authenticate/controller'
|
2
2
|
|
3
3
|
module Controllers
|
4
|
+
# Helpers for controller tests
|
4
5
|
module ControllerHelpers
|
5
|
-
|
6
6
|
def sign_in
|
7
7
|
user = create(:user)
|
8
8
|
sign_in_as user
|
@@ -15,7 +15,6 @@ module Controllers
|
|
15
15
|
def sign_out
|
16
16
|
controller.logout
|
17
17
|
end
|
18
|
-
|
19
18
|
end
|
20
19
|
end
|
21
20
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module Features
|
2
|
+
# Helpers for feature tests
|
2
3
|
module FeatureHelpers
|
3
|
-
|
4
|
-
|
5
4
|
def sign_in_with(email, password)
|
6
5
|
visit sign_in_path
|
7
6
|
fill_in 'session_email', with: email
|
@@ -11,7 +10,7 @@ module Features
|
|
11
10
|
|
12
11
|
def sign_out
|
13
12
|
within '#header' do
|
14
|
-
click_link I18n.t(
|
13
|
+
click_link I18n.t('layouts.application.sign_out')
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
@@ -27,7 +26,6 @@ module Features
|
|
27
26
|
def expect_user_to_be_signed_out
|
28
27
|
expect(page).to have_content 'Sign in'
|
29
28
|
end
|
30
|
-
|
31
29
|
end
|
32
30
|
end
|
33
31
|
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: authenticate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Tomich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '3.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: email_validator
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -62,58 +62,58 @@ dependencies:
|
|
62
62
|
name: factory_girl
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - "
|
65
|
+
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '4.4'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- - "
|
72
|
+
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '4.4'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: rspec-rails
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 3.1
|
81
|
+
version: '3.1'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 3.1
|
88
|
+
version: '3.1'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: pry
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - "
|
93
|
+
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: '0'
|
95
|
+
version: '0.10'
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- - "
|
100
|
+
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '0'
|
102
|
+
version: '0.10'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: sqlite3
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
|
-
- - "
|
107
|
+
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
109
|
+
version: '1.3'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
|
-
- - "
|
114
|
+
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
116
|
+
version: '1.3'
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
118
|
name: shoulda-matchers
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,42 +134,42 @@ dependencies:
|
|
134
134
|
requirements:
|
135
135
|
- - "~>"
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version: 2.6
|
137
|
+
version: '2.6'
|
138
138
|
type: :development
|
139
139
|
prerelease: false
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
142
|
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: 2.6
|
144
|
+
version: '2.6'
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: database_cleaner
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
149
|
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: 1.5
|
151
|
+
version: '1.5'
|
152
152
|
type: :development
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
156
|
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: 1.5
|
158
|
+
version: '1.5'
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
160
|
name: timecop
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
163
|
- - "~>"
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version: 0.8
|
165
|
+
version: '0.8'
|
166
166
|
type: :development
|
167
167
|
prerelease: false
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
170
|
- - "~>"
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version: 0.8
|
172
|
+
version: '0.8'
|
173
173
|
description: Authentication for Rails applications
|
174
174
|
email:
|
175
175
|
- justin@tomich.org
|
@@ -182,9 +182,11 @@ extra_rdoc_files:
|
|
182
182
|
files:
|
183
183
|
- ".gitignore"
|
184
184
|
- ".rspec"
|
185
|
+
- ".rubocop.yml"
|
185
186
|
- ".ruby-version"
|
186
187
|
- ".travis.yml"
|
187
188
|
- CHANGELOG.md
|
189
|
+
- CONTRIBUTING.md
|
188
190
|
- Gemfile
|
189
191
|
- Gemfile.lock
|
190
192
|
- LICENSE
|
@@ -321,6 +323,7 @@ files:
|
|
321
323
|
- spec/model/db_password_spec.rb
|
322
324
|
- spec/model/email_spec.rb
|
323
325
|
- spec/model/lifetimed_spec.rb
|
326
|
+
- spec/model/modules_spec.rb
|
324
327
|
- spec/model/password_reset_spec.rb
|
325
328
|
- spec/model/session_spec.rb
|
326
329
|
- spec/model/timeoutable_spec.rb
|