sorcery 0.9.1 → 0.10.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +29 -104
- data/CHANGELOG.md +13 -1
- data/Gemfile +2 -16
- data/README.md +124 -272
- data/Rakefile +2 -2
- data/gemfiles/{mongoid-rails40.gemfile → active_record-rails42.gemfile} +1 -3
- data/lib/generators/sorcery/helpers.rb +4 -4
- data/lib/generators/sorcery/install_generator.rb +25 -19
- data/lib/generators/sorcery/templates/initializer.rb +27 -52
- data/lib/generators/sorcery/templates/migration/activity_logging.rb +2 -2
- data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +1 -1
- data/lib/generators/sorcery/templates/migration/core.rb +3 -3
- data/lib/generators/sorcery/templates/migration/external.rb +2 -2
- data/lib/generators/sorcery/templates/migration/remember_me.rb +2 -2
- data/lib/generators/sorcery/templates/migration/reset_password.rb +2 -2
- data/lib/generators/sorcery/templates/migration/user_activation.rb +2 -2
- data/lib/sorcery.rb +0 -28
- data/lib/sorcery/adapters/active_record_adapter.rb +7 -18
- data/lib/sorcery/controller.rb +19 -21
- data/lib/sorcery/controller/config.rb +20 -18
- data/lib/sorcery/controller/submodules/activity_logging.rb +7 -15
- data/lib/sorcery/controller/submodules/brute_force_protection.rb +1 -2
- data/lib/sorcery/controller/submodules/external.rb +22 -14
- data/lib/sorcery/controller/submodules/http_basic_auth.rb +16 -19
- data/lib/sorcery/controller/submodules/remember_me.rb +15 -10
- data/lib/sorcery/controller/submodules/session_timeout.rb +7 -8
- data/lib/sorcery/crypto_providers/aes256.rb +15 -15
- data/lib/sorcery/crypto_providers/bcrypt.rb +19 -21
- data/lib/sorcery/crypto_providers/common.rb +1 -1
- data/lib/sorcery/crypto_providers/md5.rb +5 -5
- data/lib/sorcery/crypto_providers/sha1.rb +5 -5
- data/lib/sorcery/crypto_providers/sha256.rb +2 -2
- data/lib/sorcery/crypto_providers/sha512.rb +3 -3
- data/lib/sorcery/engine.rb +3 -8
- data/lib/sorcery/model.rb +24 -32
- data/lib/sorcery/model/config.rb +64 -49
- data/lib/sorcery/model/submodules/activity_logging.rb +31 -12
- data/lib/sorcery/model/submodules/brute_force_protection.rb +23 -23
- data/lib/sorcery/model/submodules/external.rb +3 -7
- data/lib/sorcery/model/submodules/remember_me.rb +19 -7
- data/lib/sorcery/model/submodules/reset_password.rb +32 -36
- data/lib/sorcery/model/submodules/user_activation.rb +38 -50
- data/lib/sorcery/model/temporary_token.rb +2 -2
- data/lib/sorcery/protocols/oauth.rb +3 -9
- data/lib/sorcery/protocols/oauth2.rb +0 -2
- data/lib/sorcery/providers/base.rb +4 -4
- data/lib/sorcery/providers/facebook.rb +5 -8
- data/lib/sorcery/providers/github.rb +5 -7
- data/lib/sorcery/providers/google.rb +3 -5
- data/lib/sorcery/providers/heroku.rb +6 -8
- data/lib/sorcery/providers/jira.rb +12 -17
- data/lib/sorcery/providers/linkedin.rb +6 -8
- data/lib/sorcery/providers/liveid.rb +4 -7
- data/lib/sorcery/providers/paypal.rb +60 -0
- data/lib/sorcery/providers/salesforce.rb +3 -5
- data/lib/sorcery/providers/slack.rb +45 -0
- data/lib/sorcery/providers/twitter.rb +4 -6
- data/lib/sorcery/providers/vk.rb +3 -5
- data/lib/sorcery/providers/wechat.rb +79 -0
- data/lib/sorcery/providers/xing.rb +7 -10
- data/lib/sorcery/test_helpers/internal.rb +10 -10
- data/lib/sorcery/test_helpers/internal/rails.rb +16 -8
- data/lib/sorcery/test_helpers/rails/controller.rb +1 -1
- data/lib/sorcery/test_helpers/rails/integration.rb +5 -6
- data/lib/sorcery/version.rb +1 -1
- data/sorcery.gemspec +25 -27
- data/spec/active_record/user_activation_spec.rb +2 -3
- data/spec/active_record/user_activity_logging_spec.rb +2 -4
- data/spec/active_record/user_brute_force_protection_spec.rb +3 -4
- data/spec/active_record/user_oauth_spec.rb +3 -4
- data/spec/active_record/user_remember_me_spec.rb +3 -4
- data/spec/active_record/user_reset_password_spec.rb +2 -3
- data/spec/active_record/user_spec.rb +7 -7
- data/spec/controllers/controller_activity_logging_spec.rb +13 -24
- data/spec/controllers/controller_brute_force_protection_spec.rb +6 -8
- data/spec/controllers/controller_http_basic_auth_spec.rb +19 -20
- data/spec/controllers/controller_oauth2_spec.rb +125 -100
- data/spec/controllers/controller_oauth_spec.rb +86 -66
- data/spec/controllers/controller_remember_me_spec.rb +35 -30
- data/spec/controllers/controller_session_timeout_spec.rb +14 -15
- data/spec/controllers/controller_spec.rb +77 -111
- data/spec/orm/active_record.rb +1 -1
- data/spec/rails_app/app/active_record/authentication.rb +1 -1
- data/spec/rails_app/app/active_record/user.rb +2 -2
- data/spec/rails_app/app/controllers/sorcery_controller.rb +89 -24
- data/spec/rails_app/app/mailers/sorcery_mailer.rb +16 -17
- data/spec/rails_app/config.ru +1 -1
- data/spec/rails_app/config/application.rb +7 -7
- data/spec/rails_app/config/boot.rb +1 -1
- data/spec/rails_app/config/environments/test.rb +1 -1
- data/spec/rails_app/config/initializers/compatible_legacy_migration.rb +11 -0
- data/spec/rails_app/config/initializers/session_store.rb +3 -3
- data/spec/rails_app/config/routes.rb +11 -1
- data/spec/rails_app/db/migrate/activation/20101224223622_add_activation_to_users.rb +4 -4
- data/spec/rails_app/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +8 -8
- data/spec/rails_app/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +5 -5
- data/spec/rails_app/db/migrate/core/20101224223620_create_users.rb +5 -5
- data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +3 -3
- data/spec/rails_app/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +6 -6
- data/spec/rails_app/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +5 -5
- data/spec/shared_examples/user_activation_shared_examples.rb +99 -58
- data/spec/shared_examples/user_activity_logging_shared_examples.rb +47 -41
- data/spec/shared_examples/user_brute_force_protection_shared_examples.rb +19 -24
- data/spec/shared_examples/user_oauth_shared_examples.rb +7 -10
- data/spec/shared_examples/user_remember_me_shared_examples.rb +90 -21
- data/spec/shared_examples/user_reset_password_shared_examples.rb +52 -54
- data/spec/shared_examples/user_shared_examples.rb +215 -118
- data/spec/sorcery_crypto_providers_spec.rb +63 -76
- data/spec/spec_helper.rb +17 -13
- metadata +28 -83
- data/gemfiles/mongo_mapper-rails40.gemfile +0 -9
- data/gemfiles/mongo_mapper-rails41.gemfile +0 -9
- data/gemfiles/mongoid-rails41.gemfile +0 -9
- data/gemfiles/mongoid3-rails32.gemfile +0 -9
- data/lib/sorcery/adapters/data_mapper_adapter.rb +0 -176
- data/lib/sorcery/adapters/mongo_mapper_adapter.rb +0 -110
- data/lib/sorcery/adapters/mongoid_adapter.rb +0 -97
- data/lib/sorcery/railties/tasks.rake +0 -6
- data/spec/data_mapper/user_activation_spec.rb +0 -10
- data/spec/data_mapper/user_activity_logging_spec.rb +0 -14
- data/spec/data_mapper/user_brute_force_protection_spec.rb +0 -9
- data/spec/data_mapper/user_oauth_spec.rb +0 -9
- data/spec/data_mapper/user_remember_me_spec.rb +0 -8
- data/spec/data_mapper/user_reset_password_spec.rb +0 -8
- data/spec/data_mapper/user_spec.rb +0 -27
- data/spec/mongo_mapper/user_activation_spec.rb +0 -9
- data/spec/mongo_mapper/user_activity_logging_spec.rb +0 -8
- data/spec/mongo_mapper/user_brute_force_protection_spec.rb +0 -8
- data/spec/mongo_mapper/user_oauth_spec.rb +0 -8
- data/spec/mongo_mapper/user_remember_me_spec.rb +0 -8
- data/spec/mongo_mapper/user_reset_password_spec.rb +0 -8
- data/spec/mongo_mapper/user_spec.rb +0 -37
- data/spec/mongoid/user_activation_spec.rb +0 -9
- data/spec/mongoid/user_activity_logging_spec.rb +0 -8
- data/spec/mongoid/user_brute_force_protection_spec.rb +0 -8
- data/spec/mongoid/user_oauth_spec.rb +0 -8
- data/spec/mongoid/user_remember_me_spec.rb +0 -8
- data/spec/mongoid/user_reset_password_spec.rb +0 -8
- data/spec/mongoid/user_spec.rb +0 -51
- data/spec/orm/data_mapper.rb +0 -48
- data/spec/orm/mongo_mapper.rb +0 -10
- data/spec/orm/mongoid.rb +0 -22
- data/spec/rails_app/app/data_mapper/authentication.rb +0 -8
- data/spec/rails_app/app/data_mapper/user.rb +0 -7
- data/spec/rails_app/app/mongo_mapper/authentication.rb +0 -6
- data/spec/rails_app/app/mongo_mapper/user.rb +0 -7
- data/spec/rails_app/app/mongoid/authentication.rb +0 -7
- data/spec/rails_app/app/mongoid/user.rb +0 -7
@@ -1,198 +1,185 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
3
|
+
describe 'Crypto Providers wrappers' do
|
5
4
|
describe Sorcery::CryptoProviders::MD5 do
|
6
|
-
|
7
5
|
after(:each) do
|
8
6
|
Sorcery::CryptoProviders::MD5.reset!
|
9
7
|
end
|
10
8
|
|
11
|
-
it
|
12
|
-
expect(Sorcery::CryptoProviders::MD5.encrypt
|
9
|
+
it 'encrypt works via wrapper like normal lib' do
|
10
|
+
expect(Sorcery::CryptoProviders::MD5.encrypt('Noam Ben-Ari')).to eq Digest::MD5.hexdigest('Noam Ben-Ari')
|
13
11
|
end
|
14
12
|
|
15
|
-
it
|
13
|
+
it 'works with multiple stretches' do
|
16
14
|
Sorcery::CryptoProviders::MD5.stretches = 3
|
17
|
-
expect(Sorcery::CryptoProviders::MD5.encrypt
|
15
|
+
expect(Sorcery::CryptoProviders::MD5.encrypt('Noam Ben-Ari')).to eq Digest::MD5.hexdigest(Digest::MD5.hexdigest(Digest::MD5.hexdigest('Noam Ben-Ari')))
|
18
16
|
end
|
19
17
|
|
20
|
-
it
|
21
|
-
expect(Sorcery::CryptoProviders::MD5.matches?
|
18
|
+
it 'matches? returns true when matches' do
|
19
|
+
expect(Sorcery::CryptoProviders::MD5.matches?(Digest::MD5.hexdigest('Noam Ben-Ari'), 'Noam Ben-Ari')).to be true
|
22
20
|
end
|
23
21
|
|
24
|
-
it
|
25
|
-
expect(Sorcery::CryptoProviders::MD5.matches?
|
22
|
+
it 'matches? returns false when no match' do
|
23
|
+
expect(Sorcery::CryptoProviders::MD5.matches?(Digest::MD5.hexdigest('Noam Ben-Ari'), 'Some Dude')).to be false
|
26
24
|
end
|
27
|
-
|
28
25
|
end
|
29
26
|
|
30
27
|
describe Sorcery::CryptoProviders::SHA1 do
|
31
|
-
|
32
28
|
before(:all) do
|
33
29
|
@digest = 'Noam Ben-Ari'
|
34
|
-
Sorcery::CryptoProviders::SHA1.stretches.times {@digest = Digest::SHA1.hexdigest(@digest)}
|
30
|
+
Sorcery::CryptoProviders::SHA1.stretches.times { @digest = Digest::SHA1.hexdigest(@digest) }
|
35
31
|
end
|
36
32
|
|
37
33
|
after(:each) do
|
38
34
|
Sorcery::CryptoProviders::SHA1.reset!
|
39
35
|
end
|
40
36
|
|
41
|
-
it
|
42
|
-
expect(Sorcery::CryptoProviders::SHA1.encrypt
|
37
|
+
it 'encrypt works via wrapper like normal lib' do
|
38
|
+
expect(Sorcery::CryptoProviders::SHA1.encrypt('Noam Ben-Ari')).to eq @digest
|
43
39
|
end
|
44
40
|
|
45
|
-
it
|
41
|
+
it 'works with multiple stretches' do
|
46
42
|
Sorcery::CryptoProviders::SHA1.stretches = 3
|
47
|
-
expect(Sorcery::CryptoProviders::SHA1.encrypt
|
43
|
+
expect(Sorcery::CryptoProviders::SHA1.encrypt('Noam Ben-Ari')).to eq Digest::SHA1.hexdigest(Digest::SHA1.hexdigest(Digest::SHA1.hexdigest('Noam Ben-Ari')))
|
48
44
|
end
|
49
45
|
|
50
|
-
it
|
51
|
-
expect(Sorcery::CryptoProviders::SHA1.matches?
|
46
|
+
it 'matches? returns true when matches' do
|
47
|
+
expect(Sorcery::CryptoProviders::SHA1.matches?(@digest, 'Noam Ben-Ari')).to be true
|
52
48
|
end
|
53
49
|
|
54
|
-
it
|
55
|
-
expect(Sorcery::CryptoProviders::SHA1.matches?
|
50
|
+
it 'matches? returns false when no match' do
|
51
|
+
expect(Sorcery::CryptoProviders::SHA1.matches?(@digest, 'Some Dude')).to be false
|
56
52
|
end
|
57
53
|
|
58
|
-
it
|
59
|
-
Sorcery::CryptoProviders::SHA1.join_token =
|
60
|
-
expect(Sorcery::CryptoProviders::SHA1.encrypt
|
54
|
+
it 'matches password encrypted using salt and join token from upstream' do
|
55
|
+
Sorcery::CryptoProviders::SHA1.join_token = 'test'
|
56
|
+
expect(Sorcery::CryptoProviders::SHA1.encrypt(%w(password gq18WBnJYNh2arkC1kgH))).to eq '894b5bf1643b8d0e1b2eaddb22426be7036dab70'
|
61
57
|
end
|
62
58
|
end
|
63
59
|
|
64
60
|
describe Sorcery::CryptoProviders::SHA256 do
|
65
|
-
|
66
61
|
before(:all) do
|
67
62
|
@digest = 'Noam Ben-Ari'
|
68
|
-
Sorcery::CryptoProviders::SHA256.stretches.times {@digest = Digest::SHA256.hexdigest(@digest)}
|
63
|
+
Sorcery::CryptoProviders::SHA256.stretches.times { @digest = Digest::SHA256.hexdigest(@digest) }
|
69
64
|
end
|
70
65
|
|
71
66
|
after(:each) do
|
72
67
|
Sorcery::CryptoProviders::SHA256.reset!
|
73
68
|
end
|
74
69
|
|
75
|
-
it
|
76
|
-
expect(Sorcery::CryptoProviders::SHA256.encrypt
|
70
|
+
it 'encrypt works via wrapper like normal lib' do
|
71
|
+
expect(Sorcery::CryptoProviders::SHA256.encrypt('Noam Ben-Ari')).to eq @digest
|
77
72
|
end
|
78
73
|
|
79
|
-
it
|
74
|
+
it 'works with multiple stretches' do
|
80
75
|
Sorcery::CryptoProviders::SHA256.stretches = 3
|
81
|
-
expect(Sorcery::CryptoProviders::SHA256.encrypt
|
76
|
+
expect(Sorcery::CryptoProviders::SHA256.encrypt('Noam Ben-Ari')).to eq Digest::SHA256.hexdigest(Digest::SHA256.hexdigest(Digest::SHA256.hexdigest('Noam Ben-Ari')))
|
82
77
|
end
|
83
78
|
|
84
|
-
it
|
85
|
-
expect(Sorcery::CryptoProviders::SHA256.matches?
|
79
|
+
it 'matches? returns true when matches' do
|
80
|
+
expect(Sorcery::CryptoProviders::SHA256.matches?(@digest, 'Noam Ben-Ari')).to be true
|
86
81
|
end
|
87
82
|
|
88
|
-
it
|
89
|
-
expect(Sorcery::CryptoProviders::SHA256.matches?
|
83
|
+
it 'matches? returns false when no match' do
|
84
|
+
expect(Sorcery::CryptoProviders::SHA256.matches?(@digest, 'Some Dude')).to be false
|
90
85
|
end
|
91
|
-
|
92
86
|
end
|
93
87
|
|
94
88
|
describe Sorcery::CryptoProviders::SHA512 do
|
95
|
-
|
96
89
|
before(:all) do
|
97
90
|
@digest = 'Noam Ben-Ari'
|
98
|
-
Sorcery::CryptoProviders::SHA512.stretches.times {@digest = Digest::SHA512.hexdigest(@digest)}
|
91
|
+
Sorcery::CryptoProviders::SHA512.stretches.times { @digest = Digest::SHA512.hexdigest(@digest) }
|
99
92
|
end
|
100
93
|
|
101
94
|
after(:each) do
|
102
95
|
Sorcery::CryptoProviders::SHA512.reset!
|
103
96
|
end
|
104
97
|
|
105
|
-
it
|
106
|
-
expect(Sorcery::CryptoProviders::SHA512.encrypt
|
98
|
+
it 'encrypt works via wrapper like normal lib' do
|
99
|
+
expect(Sorcery::CryptoProviders::SHA512.encrypt('Noam Ben-Ari')).to eq @digest
|
107
100
|
end
|
108
101
|
|
109
|
-
it
|
102
|
+
it 'works with multiple stretches' do
|
110
103
|
Sorcery::CryptoProviders::SHA512.stretches = 3
|
111
|
-
expect(Sorcery::CryptoProviders::SHA512.encrypt
|
104
|
+
expect(Sorcery::CryptoProviders::SHA512.encrypt('Noam Ben-Ari')).to eq Digest::SHA512.hexdigest(Digest::SHA512.hexdigest(Digest::SHA512.hexdigest('Noam Ben-Ari')))
|
112
105
|
end
|
113
106
|
|
114
|
-
it
|
115
|
-
expect(Sorcery::CryptoProviders::SHA512.matches?
|
107
|
+
it 'matches? returns true when matches' do
|
108
|
+
expect(Sorcery::CryptoProviders::SHA512.matches?(@digest, 'Noam Ben-Ari')).to be true
|
116
109
|
end
|
117
110
|
|
118
|
-
it
|
119
|
-
expect(Sorcery::CryptoProviders::SHA512.matches?
|
111
|
+
it 'matches? returns false when no match' do
|
112
|
+
expect(Sorcery::CryptoProviders::SHA512.matches?(@digest, 'Some Dude')).to be false
|
120
113
|
end
|
121
|
-
|
122
114
|
end
|
123
115
|
|
124
116
|
describe Sorcery::CryptoProviders::AES256 do
|
125
|
-
|
126
117
|
before(:all) do
|
127
|
-
aes = OpenSSL::Cipher
|
118
|
+
aes = OpenSSL::Cipher.new('AES-256-ECB')
|
128
119
|
aes.encrypt
|
129
|
-
@key =
|
120
|
+
@key = 'asd234dfs423fddsmndsflktsdf32343'
|
130
121
|
aes.key = @key
|
131
122
|
@digest = 'Noam Ben-Ari'
|
132
|
-
@digest = [aes.update(@digest) + aes.final].pack(
|
123
|
+
@digest = [aes.update(@digest) + aes.final].pack('m').chomp
|
133
124
|
Sorcery::CryptoProviders::AES256.key = @key
|
134
125
|
end
|
135
126
|
|
136
|
-
it
|
137
|
-
expect(Sorcery::CryptoProviders::AES256.encrypt
|
127
|
+
it 'encrypt works via wrapper like normal lib' do
|
128
|
+
expect(Sorcery::CryptoProviders::AES256.encrypt('Noam Ben-Ari')).to eq @digest
|
138
129
|
end
|
139
130
|
|
140
|
-
it
|
141
|
-
expect(Sorcery::CryptoProviders::AES256.matches?
|
131
|
+
it 'matches? returns true when matches' do
|
132
|
+
expect(Sorcery::CryptoProviders::AES256.matches?(@digest, 'Noam Ben-Ari')).to be true
|
142
133
|
end
|
143
134
|
|
144
|
-
it
|
145
|
-
expect(Sorcery::CryptoProviders::AES256.matches?
|
135
|
+
it 'matches? returns false when no match' do
|
136
|
+
expect(Sorcery::CryptoProviders::AES256.matches?(@digest, 'Some Dude')).to be false
|
146
137
|
end
|
147
138
|
|
148
|
-
it
|
149
|
-
aes = OpenSSL::Cipher
|
139
|
+
it 'can be decrypted' do
|
140
|
+
aes = OpenSSL::Cipher.new('AES-256-ECB')
|
150
141
|
aes.decrypt
|
151
142
|
aes.key = @key
|
152
|
-
expect(aes.update(@digest.unpack(
|
143
|
+
expect(aes.update(@digest.unpack('m').first) + aes.final).to eq 'Noam Ben-Ari'
|
153
144
|
end
|
154
|
-
|
155
145
|
end
|
156
146
|
|
157
147
|
describe Sorcery::CryptoProviders::BCrypt do
|
158
|
-
|
159
148
|
before(:all) do
|
160
149
|
Sorcery::CryptoProviders::BCrypt.cost = 1
|
161
|
-
@digest = BCrypt::Password.create('Noam Ben-Ari', :
|
150
|
+
@digest = BCrypt::Password.create('Noam Ben-Ari', cost: Sorcery::CryptoProviders::BCrypt.cost)
|
162
151
|
end
|
163
152
|
|
164
153
|
after(:each) do
|
165
154
|
Sorcery::CryptoProviders::BCrypt.reset!
|
166
155
|
end
|
167
156
|
|
168
|
-
it
|
169
|
-
expect(BCrypt::Password.new
|
157
|
+
it 'is comparable with original secret' do
|
158
|
+
expect(BCrypt::Password.new(Sorcery::CryptoProviders::BCrypt.encrypt('Noam Ben-Ari'))).to eq 'Noam Ben-Ari'
|
170
159
|
end
|
171
160
|
|
172
|
-
it
|
161
|
+
it 'works with multiple costs' do
|
173
162
|
Sorcery::CryptoProviders::BCrypt.cost = 3
|
174
|
-
expect(BCrypt::Password.new(Sorcery::CryptoProviders::BCrypt.encrypt
|
163
|
+
expect(BCrypt::Password.new(Sorcery::CryptoProviders::BCrypt.encrypt('Noam Ben-Ari'))).to eq 'Noam Ben-Ari'
|
175
164
|
end
|
176
165
|
|
177
|
-
it
|
178
|
-
expect(Sorcery::CryptoProviders::BCrypt.matches?
|
166
|
+
it 'matches? returns true when matches' do
|
167
|
+
expect(Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'Noam Ben-Ari')).to be true
|
179
168
|
end
|
180
169
|
|
181
|
-
it
|
182
|
-
expect(Sorcery::CryptoProviders::BCrypt.matches?
|
170
|
+
it 'matches? returns false when no match' do
|
171
|
+
expect(Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'Some Dude')).to be false
|
183
172
|
end
|
184
173
|
|
185
|
-
it
|
186
|
-
expect(Sorcery::CryptoProviders::BCrypt.respond_to?
|
174
|
+
it 'respond_to?(:stretches) returns true' do
|
175
|
+
expect(Sorcery::CryptoProviders::BCrypt.respond_to?(:stretches)).to be true
|
187
176
|
end
|
188
177
|
|
189
|
-
it
|
178
|
+
it 'sets cost when stretches is set' do
|
190
179
|
Sorcery::CryptoProviders::BCrypt.stretches = 4
|
191
180
|
|
192
181
|
# stubbed in Sorcery::TestHelpers::Internal
|
193
182
|
expect(Sorcery::CryptoProviders::BCrypt.cost).to eq 1
|
194
183
|
end
|
195
|
-
|
196
184
|
end
|
197
|
-
|
198
185
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,37 +1,31 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
3
|
|
4
|
-
ENV[
|
4
|
+
ENV['RAILS_ENV'] ||= 'test'
|
5
5
|
|
6
|
-
SORCERY_ORM =
|
6
|
+
SORCERY_ORM = :active_record
|
7
7
|
|
8
8
|
# require 'simplecov'
|
9
9
|
# SimpleCov.root File.join(File.dirname(__FILE__), '..', 'lib')
|
10
10
|
# SimpleCov.start
|
11
|
-
|
12
|
-
require 'rspec'
|
13
|
-
|
14
11
|
require 'rails/all'
|
15
12
|
require 'rspec/rails'
|
16
13
|
require 'timecop'
|
17
14
|
|
18
15
|
def setup_orm; end
|
16
|
+
|
19
17
|
def teardown_orm; end
|
20
18
|
|
21
19
|
require "orm/#{SORCERY_ORM}"
|
22
20
|
|
23
|
-
require
|
21
|
+
require 'rails_app/config/environment'
|
24
22
|
|
25
|
-
class TestMailer < ActionMailer::Base;end
|
23
|
+
class TestMailer < ActionMailer::Base; end
|
26
24
|
|
27
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
25
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
28
26
|
|
29
27
|
RSpec.configure do |config|
|
30
|
-
config.include RSpec::Rails::ControllerExampleGroup, :
|
31
|
-
config.filter_run_excluding :active_record => SORCERY_ORM.to_sym != :active_record
|
32
|
-
config.filter_run_excluding :mongo_mapper => SORCERY_ORM.to_sym != :mongo_mapper
|
33
|
-
config.filter_run_excluding :data_mapper => SORCERY_ORM.to_sym != :data_mapper
|
34
|
-
config.filter_run_excluding :mongoid => SORCERY_ORM.to_sym != :mongoid
|
28
|
+
config.include RSpec::Rails::ControllerExampleGroup, file_path: /controller(.)*_spec.rb$/
|
35
29
|
config.mock_with :rspec
|
36
30
|
|
37
31
|
config.use_transactional_fixtures = true
|
@@ -42,4 +36,14 @@ RSpec.configure do |config|
|
|
42
36
|
|
43
37
|
config.include ::Sorcery::TestHelpers::Internal
|
44
38
|
config.include ::Sorcery::TestHelpers::Internal::Rails
|
39
|
+
|
40
|
+
if begin
|
41
|
+
Module.const_defined?('::Rails::Controller::Testing')
|
42
|
+
rescue
|
43
|
+
false
|
44
|
+
end
|
45
|
+
config.include ::Rails::Controller::Testing::TestProcess, type: :controller
|
46
|
+
config.include ::Rails::Controller::Testing::TemplateAssertions, type: :controller
|
47
|
+
config.include ::Rails::Controller::Testing::Integration, type: :controller
|
48
|
+
end
|
45
49
|
end
|
metadata
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sorcery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Noam Ben Ari
|
8
8
|
- Kir Shatrov
|
9
9
|
- Grzegorz Witek
|
10
|
+
- Chase Gilliam
|
10
11
|
autorequire:
|
11
12
|
bindir: bin
|
12
13
|
cert_chain: []
|
13
|
-
date:
|
14
|
+
date: 2016-12-30 00:00:00.000000000 Z
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: oauth
|
@@ -36,6 +37,9 @@ dependencies:
|
|
36
37
|
name: oauth2
|
37
38
|
requirement: !ruby/object:Gem::Requirement
|
38
39
|
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '1.0'
|
39
43
|
- - ">="
|
40
44
|
- !ruby/object:Gem::Version
|
41
45
|
version: 0.8.0
|
@@ -43,6 +47,9 @@ dependencies:
|
|
43
47
|
prerelease: false
|
44
48
|
version_requirements: !ruby/object:Gem::Requirement
|
45
49
|
requirements:
|
50
|
+
- - "~>"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '1.0'
|
46
53
|
- - ">="
|
47
54
|
- !ruby/object:Gem::Version
|
48
55
|
version: 0.8.0
|
@@ -60,34 +67,6 @@ dependencies:
|
|
60
67
|
- - "~>"
|
61
68
|
- !ruby/object:Gem::Version
|
62
69
|
version: '3.1'
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
name: abstract
|
65
|
-
requirement: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 1.0.0
|
70
|
-
type: :development
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 1.0.0
|
77
|
-
- !ruby/object:Gem::Dependency
|
78
|
-
name: json
|
79
|
-
requirement: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: 1.7.7
|
84
|
-
type: :development
|
85
|
-
prerelease: false
|
86
|
-
version_requirements: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: 1.7.7
|
91
70
|
- !ruby/object:Gem::Dependency
|
92
71
|
name: yard
|
93
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,36 +110,36 @@ dependencies:
|
|
131
110
|
- !ruby/object:Gem::Version
|
132
111
|
version: 0.3.8
|
133
112
|
- !ruby/object:Gem::Dependency
|
134
|
-
name: rspec
|
113
|
+
name: rspec-rails
|
135
114
|
requirement: !ruby/object:Gem::Requirement
|
136
115
|
requirements:
|
137
116
|
- - "~>"
|
138
117
|
- !ruby/object:Gem::Version
|
139
|
-
version: 3.
|
118
|
+
version: 3.5.0
|
140
119
|
type: :development
|
141
120
|
prerelease: false
|
142
121
|
version_requirements: !ruby/object:Gem::Requirement
|
143
122
|
requirements:
|
144
123
|
- - "~>"
|
145
124
|
- !ruby/object:Gem::Version
|
146
|
-
version: 3.
|
125
|
+
version: 3.5.0
|
147
126
|
- !ruby/object:Gem::Dependency
|
148
|
-
name:
|
127
|
+
name: test-unit
|
149
128
|
requirement: !ruby/object:Gem::Requirement
|
150
129
|
requirements:
|
151
130
|
- - "~>"
|
152
131
|
- !ruby/object:Gem::Version
|
153
|
-
version: 3.
|
132
|
+
version: 3.1.0
|
154
133
|
type: :development
|
155
134
|
prerelease: false
|
156
135
|
version_requirements: !ruby/object:Gem::Requirement
|
157
136
|
requirements:
|
158
137
|
- - "~>"
|
159
138
|
- !ruby/object:Gem::Version
|
160
|
-
version: 3.
|
139
|
+
version: 3.1.0
|
161
140
|
description: Provides common authentication needs such as signing in/out, activating
|
162
141
|
by email and resetting password.
|
163
|
-
email:
|
142
|
+
email: chase.gilliam@gmail.com
|
164
143
|
executables: []
|
165
144
|
extensions: []
|
166
145
|
extra_rdoc_files: []
|
@@ -176,11 +155,7 @@ files:
|
|
176
155
|
- Rakefile
|
177
156
|
- gemfiles/active_record-rails40.gemfile
|
178
157
|
- gemfiles/active_record-rails41.gemfile
|
179
|
-
- gemfiles/
|
180
|
-
- gemfiles/mongo_mapper-rails41.gemfile
|
181
|
-
- gemfiles/mongoid-rails40.gemfile
|
182
|
-
- gemfiles/mongoid-rails41.gemfile
|
183
|
-
- gemfiles/mongoid3-rails32.gemfile
|
158
|
+
- gemfiles/active_record-rails42.gemfile
|
184
159
|
- lib/generators/sorcery/USAGE
|
185
160
|
- lib/generators/sorcery/helpers.rb
|
186
161
|
- lib/generators/sorcery/install_generator.rb
|
@@ -195,9 +170,6 @@ files:
|
|
195
170
|
- lib/sorcery.rb
|
196
171
|
- lib/sorcery/adapters/active_record_adapter.rb
|
197
172
|
- lib/sorcery/adapters/base_adapter.rb
|
198
|
-
- lib/sorcery/adapters/data_mapper_adapter.rb
|
199
|
-
- lib/sorcery/adapters/mongo_mapper_adapter.rb
|
200
|
-
- lib/sorcery/adapters/mongoid_adapter.rb
|
201
173
|
- lib/sorcery/controller.rb
|
202
174
|
- lib/sorcery/controller/config.rb
|
203
175
|
- lib/sorcery/controller/submodules/activity_logging.rb
|
@@ -234,11 +206,13 @@ files:
|
|
234
206
|
- lib/sorcery/providers/jira.rb
|
235
207
|
- lib/sorcery/providers/linkedin.rb
|
236
208
|
- lib/sorcery/providers/liveid.rb
|
209
|
+
- lib/sorcery/providers/paypal.rb
|
237
210
|
- lib/sorcery/providers/salesforce.rb
|
211
|
+
- lib/sorcery/providers/slack.rb
|
238
212
|
- lib/sorcery/providers/twitter.rb
|
239
213
|
- lib/sorcery/providers/vk.rb
|
214
|
+
- lib/sorcery/providers/wechat.rb
|
240
215
|
- lib/sorcery/providers/xing.rb
|
241
|
-
- lib/sorcery/railties/tasks.rake
|
242
216
|
- lib/sorcery/test_helpers/internal.rb
|
243
217
|
- lib/sorcery/test_helpers/internal/rails.rb
|
244
218
|
- lib/sorcery/test_helpers/rails/controller.rb
|
@@ -260,43 +234,13 @@ files:
|
|
260
234
|
- spec/controllers/controller_remember_me_spec.rb
|
261
235
|
- spec/controllers/controller_session_timeout_spec.rb
|
262
236
|
- spec/controllers/controller_spec.rb
|
263
|
-
- spec/data_mapper/user_activation_spec.rb
|
264
|
-
- spec/data_mapper/user_activity_logging_spec.rb
|
265
|
-
- spec/data_mapper/user_brute_force_protection_spec.rb
|
266
|
-
- spec/data_mapper/user_oauth_spec.rb
|
267
|
-
- spec/data_mapper/user_remember_me_spec.rb
|
268
|
-
- spec/data_mapper/user_reset_password_spec.rb
|
269
|
-
- spec/data_mapper/user_spec.rb
|
270
|
-
- spec/mongo_mapper/user_activation_spec.rb
|
271
|
-
- spec/mongo_mapper/user_activity_logging_spec.rb
|
272
|
-
- spec/mongo_mapper/user_brute_force_protection_spec.rb
|
273
|
-
- spec/mongo_mapper/user_oauth_spec.rb
|
274
|
-
- spec/mongo_mapper/user_remember_me_spec.rb
|
275
|
-
- spec/mongo_mapper/user_reset_password_spec.rb
|
276
|
-
- spec/mongo_mapper/user_spec.rb
|
277
|
-
- spec/mongoid/user_activation_spec.rb
|
278
|
-
- spec/mongoid/user_activity_logging_spec.rb
|
279
|
-
- spec/mongoid/user_brute_force_protection_spec.rb
|
280
|
-
- spec/mongoid/user_oauth_spec.rb
|
281
|
-
- spec/mongoid/user_remember_me_spec.rb
|
282
|
-
- spec/mongoid/user_reset_password_spec.rb
|
283
|
-
- spec/mongoid/user_spec.rb
|
284
237
|
- spec/orm/active_record.rb
|
285
|
-
- spec/orm/data_mapper.rb
|
286
|
-
- spec/orm/mongo_mapper.rb
|
287
|
-
- spec/orm/mongoid.rb
|
288
238
|
- spec/rails_app/app/active_record/authentication.rb
|
289
239
|
- spec/rails_app/app/active_record/user.rb
|
290
240
|
- spec/rails_app/app/active_record/user_provider.rb
|
291
241
|
- spec/rails_app/app/controllers/sorcery_controller.rb
|
292
|
-
- spec/rails_app/app/data_mapper/authentication.rb
|
293
|
-
- spec/rails_app/app/data_mapper/user.rb
|
294
242
|
- spec/rails_app/app/helpers/application_helper.rb
|
295
243
|
- spec/rails_app/app/mailers/sorcery_mailer.rb
|
296
|
-
- spec/rails_app/app/mongo_mapper/authentication.rb
|
297
|
-
- spec/rails_app/app/mongo_mapper/user.rb
|
298
|
-
- spec/rails_app/app/mongoid/authentication.rb
|
299
|
-
- spec/rails_app/app/mongoid/user.rb
|
300
244
|
- spec/rails_app/app/views/application/index.html.erb
|
301
245
|
- spec/rails_app/app/views/layouts/application.html.erb
|
302
246
|
- spec/rails_app/app/views/sorcery_mailer/activation_email.html.erb
|
@@ -314,6 +258,7 @@ files:
|
|
314
258
|
- spec/rails_app/config/environment.rb
|
315
259
|
- spec/rails_app/config/environments/test.rb
|
316
260
|
- spec/rails_app/config/initializers/backtrace_silencers.rb
|
261
|
+
- spec/rails_app/config/initializers/compatible_legacy_migration.rb
|
317
262
|
- spec/rails_app/config/initializers/inflections.rb
|
318
263
|
- spec/rails_app/config/initializers/mime_types.rb
|
319
264
|
- spec/rails_app/config/initializers/secret_token.rb
|
@@ -329,7 +274,6 @@ files:
|
|
329
274
|
- spec/rails_app/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb
|
330
275
|
- spec/rails_app/db/schema.rb
|
331
276
|
- spec/rails_app/db/seeds.rb
|
332
|
-
- spec/rails_app/log/development.log
|
333
277
|
- spec/shared_examples/user_activation_shared_examples.rb
|
334
278
|
- spec/shared_examples/user_activity_logging_shared_examples.rb
|
335
279
|
- spec/shared_examples/user_brute_force_protection_shared_examples.rb
|
@@ -340,11 +284,13 @@ files:
|
|
340
284
|
- spec/sorcery_crypto_providers_spec.rb
|
341
285
|
- spec/spec.opts
|
342
286
|
- spec/spec_helper.rb
|
343
|
-
homepage:
|
287
|
+
homepage: https://github.com/Sorcery/sorcery
|
344
288
|
licenses:
|
345
289
|
- MIT
|
346
290
|
metadata: {}
|
347
|
-
post_install_message:
|
291
|
+
post_install_message: |-
|
292
|
+
As of version 1.0 oauth/oauth2 won't be automatically bundled
|
293
|
+
you need to add those dependencies to your Gemfile
|
348
294
|
rdoc_options: []
|
349
295
|
require_paths:
|
350
296
|
- lib
|
@@ -352,7 +298,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
352
298
|
requirements:
|
353
299
|
- - ">="
|
354
300
|
- !ruby/object:Gem::Version
|
355
|
-
version:
|
301
|
+
version: 2.0.0
|
356
302
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
357
303
|
requirements:
|
358
304
|
- - ">="
|
@@ -360,9 +306,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
360
306
|
version: '0'
|
361
307
|
requirements: []
|
362
308
|
rubyforge_project:
|
363
|
-
rubygems_version: 2.
|
309
|
+
rubygems_version: 2.6.8
|
364
310
|
signing_key:
|
365
311
|
specification_version: 4
|
366
|
-
summary: Magical authentication for Rails
|
312
|
+
summary: Magical authentication for Rails applications
|
367
313
|
test_files: []
|
368
|
-
has_rdoc:
|