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.

Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +29 -104
  3. data/CHANGELOG.md +13 -1
  4. data/Gemfile +2 -16
  5. data/README.md +124 -272
  6. data/Rakefile +2 -2
  7. data/gemfiles/{mongoid-rails40.gemfile → active_record-rails42.gemfile} +1 -3
  8. data/lib/generators/sorcery/helpers.rb +4 -4
  9. data/lib/generators/sorcery/install_generator.rb +25 -19
  10. data/lib/generators/sorcery/templates/initializer.rb +27 -52
  11. data/lib/generators/sorcery/templates/migration/activity_logging.rb +2 -2
  12. data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +1 -1
  13. data/lib/generators/sorcery/templates/migration/core.rb +3 -3
  14. data/lib/generators/sorcery/templates/migration/external.rb +2 -2
  15. data/lib/generators/sorcery/templates/migration/remember_me.rb +2 -2
  16. data/lib/generators/sorcery/templates/migration/reset_password.rb +2 -2
  17. data/lib/generators/sorcery/templates/migration/user_activation.rb +2 -2
  18. data/lib/sorcery.rb +0 -28
  19. data/lib/sorcery/adapters/active_record_adapter.rb +7 -18
  20. data/lib/sorcery/controller.rb +19 -21
  21. data/lib/sorcery/controller/config.rb +20 -18
  22. data/lib/sorcery/controller/submodules/activity_logging.rb +7 -15
  23. data/lib/sorcery/controller/submodules/brute_force_protection.rb +1 -2
  24. data/lib/sorcery/controller/submodules/external.rb +22 -14
  25. data/lib/sorcery/controller/submodules/http_basic_auth.rb +16 -19
  26. data/lib/sorcery/controller/submodules/remember_me.rb +15 -10
  27. data/lib/sorcery/controller/submodules/session_timeout.rb +7 -8
  28. data/lib/sorcery/crypto_providers/aes256.rb +15 -15
  29. data/lib/sorcery/crypto_providers/bcrypt.rb +19 -21
  30. data/lib/sorcery/crypto_providers/common.rb +1 -1
  31. data/lib/sorcery/crypto_providers/md5.rb +5 -5
  32. data/lib/sorcery/crypto_providers/sha1.rb +5 -5
  33. data/lib/sorcery/crypto_providers/sha256.rb +2 -2
  34. data/lib/sorcery/crypto_providers/sha512.rb +3 -3
  35. data/lib/sorcery/engine.rb +3 -8
  36. data/lib/sorcery/model.rb +24 -32
  37. data/lib/sorcery/model/config.rb +64 -49
  38. data/lib/sorcery/model/submodules/activity_logging.rb +31 -12
  39. data/lib/sorcery/model/submodules/brute_force_protection.rb +23 -23
  40. data/lib/sorcery/model/submodules/external.rb +3 -7
  41. data/lib/sorcery/model/submodules/remember_me.rb +19 -7
  42. data/lib/sorcery/model/submodules/reset_password.rb +32 -36
  43. data/lib/sorcery/model/submodules/user_activation.rb +38 -50
  44. data/lib/sorcery/model/temporary_token.rb +2 -2
  45. data/lib/sorcery/protocols/oauth.rb +3 -9
  46. data/lib/sorcery/protocols/oauth2.rb +0 -2
  47. data/lib/sorcery/providers/base.rb +4 -4
  48. data/lib/sorcery/providers/facebook.rb +5 -8
  49. data/lib/sorcery/providers/github.rb +5 -7
  50. data/lib/sorcery/providers/google.rb +3 -5
  51. data/lib/sorcery/providers/heroku.rb +6 -8
  52. data/lib/sorcery/providers/jira.rb +12 -17
  53. data/lib/sorcery/providers/linkedin.rb +6 -8
  54. data/lib/sorcery/providers/liveid.rb +4 -7
  55. data/lib/sorcery/providers/paypal.rb +60 -0
  56. data/lib/sorcery/providers/salesforce.rb +3 -5
  57. data/lib/sorcery/providers/slack.rb +45 -0
  58. data/lib/sorcery/providers/twitter.rb +4 -6
  59. data/lib/sorcery/providers/vk.rb +3 -5
  60. data/lib/sorcery/providers/wechat.rb +79 -0
  61. data/lib/sorcery/providers/xing.rb +7 -10
  62. data/lib/sorcery/test_helpers/internal.rb +10 -10
  63. data/lib/sorcery/test_helpers/internal/rails.rb +16 -8
  64. data/lib/sorcery/test_helpers/rails/controller.rb +1 -1
  65. data/lib/sorcery/test_helpers/rails/integration.rb +5 -6
  66. data/lib/sorcery/version.rb +1 -1
  67. data/sorcery.gemspec +25 -27
  68. data/spec/active_record/user_activation_spec.rb +2 -3
  69. data/spec/active_record/user_activity_logging_spec.rb +2 -4
  70. data/spec/active_record/user_brute_force_protection_spec.rb +3 -4
  71. data/spec/active_record/user_oauth_spec.rb +3 -4
  72. data/spec/active_record/user_remember_me_spec.rb +3 -4
  73. data/spec/active_record/user_reset_password_spec.rb +2 -3
  74. data/spec/active_record/user_spec.rb +7 -7
  75. data/spec/controllers/controller_activity_logging_spec.rb +13 -24
  76. data/spec/controllers/controller_brute_force_protection_spec.rb +6 -8
  77. data/spec/controllers/controller_http_basic_auth_spec.rb +19 -20
  78. data/spec/controllers/controller_oauth2_spec.rb +125 -100
  79. data/spec/controllers/controller_oauth_spec.rb +86 -66
  80. data/spec/controllers/controller_remember_me_spec.rb +35 -30
  81. data/spec/controllers/controller_session_timeout_spec.rb +14 -15
  82. data/spec/controllers/controller_spec.rb +77 -111
  83. data/spec/orm/active_record.rb +1 -1
  84. data/spec/rails_app/app/active_record/authentication.rb +1 -1
  85. data/spec/rails_app/app/active_record/user.rb +2 -2
  86. data/spec/rails_app/app/controllers/sorcery_controller.rb +89 -24
  87. data/spec/rails_app/app/mailers/sorcery_mailer.rb +16 -17
  88. data/spec/rails_app/config.ru +1 -1
  89. data/spec/rails_app/config/application.rb +7 -7
  90. data/spec/rails_app/config/boot.rb +1 -1
  91. data/spec/rails_app/config/environments/test.rb +1 -1
  92. data/spec/rails_app/config/initializers/compatible_legacy_migration.rb +11 -0
  93. data/spec/rails_app/config/initializers/session_store.rb +3 -3
  94. data/spec/rails_app/config/routes.rb +11 -1
  95. data/spec/rails_app/db/migrate/activation/20101224223622_add_activation_to_users.rb +4 -4
  96. data/spec/rails_app/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +8 -8
  97. data/spec/rails_app/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +5 -5
  98. data/spec/rails_app/db/migrate/core/20101224223620_create_users.rb +5 -5
  99. data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +3 -3
  100. data/spec/rails_app/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +6 -6
  101. data/spec/rails_app/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +5 -5
  102. data/spec/shared_examples/user_activation_shared_examples.rb +99 -58
  103. data/spec/shared_examples/user_activity_logging_shared_examples.rb +47 -41
  104. data/spec/shared_examples/user_brute_force_protection_shared_examples.rb +19 -24
  105. data/spec/shared_examples/user_oauth_shared_examples.rb +7 -10
  106. data/spec/shared_examples/user_remember_me_shared_examples.rb +90 -21
  107. data/spec/shared_examples/user_reset_password_shared_examples.rb +52 -54
  108. data/spec/shared_examples/user_shared_examples.rb +215 -118
  109. data/spec/sorcery_crypto_providers_spec.rb +63 -76
  110. data/spec/spec_helper.rb +17 -13
  111. metadata +28 -83
  112. data/gemfiles/mongo_mapper-rails40.gemfile +0 -9
  113. data/gemfiles/mongo_mapper-rails41.gemfile +0 -9
  114. data/gemfiles/mongoid-rails41.gemfile +0 -9
  115. data/gemfiles/mongoid3-rails32.gemfile +0 -9
  116. data/lib/sorcery/adapters/data_mapper_adapter.rb +0 -176
  117. data/lib/sorcery/adapters/mongo_mapper_adapter.rb +0 -110
  118. data/lib/sorcery/adapters/mongoid_adapter.rb +0 -97
  119. data/lib/sorcery/railties/tasks.rake +0 -6
  120. data/spec/data_mapper/user_activation_spec.rb +0 -10
  121. data/spec/data_mapper/user_activity_logging_spec.rb +0 -14
  122. data/spec/data_mapper/user_brute_force_protection_spec.rb +0 -9
  123. data/spec/data_mapper/user_oauth_spec.rb +0 -9
  124. data/spec/data_mapper/user_remember_me_spec.rb +0 -8
  125. data/spec/data_mapper/user_reset_password_spec.rb +0 -8
  126. data/spec/data_mapper/user_spec.rb +0 -27
  127. data/spec/mongo_mapper/user_activation_spec.rb +0 -9
  128. data/spec/mongo_mapper/user_activity_logging_spec.rb +0 -8
  129. data/spec/mongo_mapper/user_brute_force_protection_spec.rb +0 -8
  130. data/spec/mongo_mapper/user_oauth_spec.rb +0 -8
  131. data/spec/mongo_mapper/user_remember_me_spec.rb +0 -8
  132. data/spec/mongo_mapper/user_reset_password_spec.rb +0 -8
  133. data/spec/mongo_mapper/user_spec.rb +0 -37
  134. data/spec/mongoid/user_activation_spec.rb +0 -9
  135. data/spec/mongoid/user_activity_logging_spec.rb +0 -8
  136. data/spec/mongoid/user_brute_force_protection_spec.rb +0 -8
  137. data/spec/mongoid/user_oauth_spec.rb +0 -8
  138. data/spec/mongoid/user_remember_me_spec.rb +0 -8
  139. data/spec/mongoid/user_reset_password_spec.rb +0 -8
  140. data/spec/mongoid/user_spec.rb +0 -51
  141. data/spec/orm/data_mapper.rb +0 -48
  142. data/spec/orm/mongo_mapper.rb +0 -10
  143. data/spec/orm/mongoid.rb +0 -22
  144. data/spec/rails_app/app/data_mapper/authentication.rb +0 -8
  145. data/spec/rails_app/app/data_mapper/user.rb +0 -7
  146. data/spec/rails_app/app/mongo_mapper/authentication.rb +0 -6
  147. data/spec/rails_app/app/mongo_mapper/user.rb +0 -7
  148. data/spec/rails_app/app/mongoid/authentication.rb +0 -7
  149. data/spec/rails_app/app/mongoid/user.rb +0 -7
@@ -1,198 +1,185 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Crypto Providers wrappers" do
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 "encrypt works via wrapper like normal lib" do
12
- expect(Sorcery::CryptoProviders::MD5.encrypt 'Noam Ben-Ari').to eq Digest::MD5.hexdigest('Noam Ben-Ari')
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 "works with multiple stretches" do
13
+ it 'works with multiple stretches' do
16
14
  Sorcery::CryptoProviders::MD5.stretches = 3
17
- expect(Sorcery::CryptoProviders::MD5.encrypt 'Noam Ben-Ari').to eq Digest::MD5.hexdigest(Digest::MD5.hexdigest(Digest::MD5.hexdigest('Noam Ben-Ari')))
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 "matches? returns true when matches" do
21
- expect(Sorcery::CryptoProviders::MD5.matches? Digest::MD5.hexdigest('Noam Ben-Ari'), 'Noam Ben-Ari').to be true
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 "matches? returns false when no match" do
25
- expect(Sorcery::CryptoProviders::MD5.matches? Digest::MD5.hexdigest('Noam Ben-Ari'), 'Some Dude').to be false
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 "encrypt works via wrapper like normal lib" do
42
- expect(Sorcery::CryptoProviders::SHA1.encrypt 'Noam Ben-Ari').to eq @digest
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 "works with multiple stretches" do
41
+ it 'works with multiple stretches' do
46
42
  Sorcery::CryptoProviders::SHA1.stretches = 3
47
- expect(Sorcery::CryptoProviders::SHA1.encrypt 'Noam Ben-Ari').to eq Digest::SHA1.hexdigest(Digest::SHA1.hexdigest(Digest::SHA1.hexdigest('Noam Ben-Ari')))
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 "matches? returns true when matches" do
51
- expect(Sorcery::CryptoProviders::SHA1.matches? @digest, 'Noam Ben-Ari').to be true
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 "matches? returns false when no match" do
55
- expect(Sorcery::CryptoProviders::SHA1.matches? @digest, 'Some Dude').to be false
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 "matches password encrypted using salt and join token from upstream" do
59
- Sorcery::CryptoProviders::SHA1.join_token = "test"
60
- expect(Sorcery::CryptoProviders::SHA1.encrypt ['password', 'gq18WBnJYNh2arkC1kgH']).to eq '894b5bf1643b8d0e1b2eaddb22426be7036dab70'
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 "encrypt works via wrapper like normal lib" do
76
- expect(Sorcery::CryptoProviders::SHA256.encrypt 'Noam Ben-Ari').to eq @digest
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 "works with multiple stretches" do
74
+ it 'works with multiple stretches' do
80
75
  Sorcery::CryptoProviders::SHA256.stretches = 3
81
- expect(Sorcery::CryptoProviders::SHA256.encrypt 'Noam Ben-Ari').to eq Digest::SHA256.hexdigest(Digest::SHA256.hexdigest(Digest::SHA256.hexdigest('Noam Ben-Ari')))
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 "matches? returns true when matches" do
85
- expect(Sorcery::CryptoProviders::SHA256.matches? @digest, 'Noam Ben-Ari').to be true
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 "matches? returns false when no match" do
89
- expect(Sorcery::CryptoProviders::SHA256.matches? @digest, 'Some Dude').to be false
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 "encrypt works via wrapper like normal lib" do
106
- expect(Sorcery::CryptoProviders::SHA512.encrypt 'Noam Ben-Ari').to eq @digest
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 "works with multiple stretches" do
102
+ it 'works with multiple stretches' do
110
103
  Sorcery::CryptoProviders::SHA512.stretches = 3
111
- expect(Sorcery::CryptoProviders::SHA512.encrypt 'Noam Ben-Ari').to eq Digest::SHA512.hexdigest(Digest::SHA512.hexdigest(Digest::SHA512.hexdigest('Noam Ben-Ari')))
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 "matches? returns true when matches" do
115
- expect(Sorcery::CryptoProviders::SHA512.matches? @digest, 'Noam Ben-Ari').to be true
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 "matches? returns false when no match" do
119
- expect(Sorcery::CryptoProviders::SHA512.matches? @digest, 'Some Dude').to be false
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::Cipher.new("AES-256-ECB")
118
+ aes = OpenSSL::Cipher.new('AES-256-ECB')
128
119
  aes.encrypt
129
- @key = "asd234dfs423fddsmndsflktsdf32343"
120
+ @key = 'asd234dfs423fddsmndsflktsdf32343'
130
121
  aes.key = @key
131
122
  @digest = 'Noam Ben-Ari'
132
- @digest = [aes.update(@digest) + aes.final].pack("m").chomp
123
+ @digest = [aes.update(@digest) + aes.final].pack('m').chomp
133
124
  Sorcery::CryptoProviders::AES256.key = @key
134
125
  end
135
126
 
136
- it "encrypt works via wrapper like normal lib" do
137
- expect(Sorcery::CryptoProviders::AES256.encrypt 'Noam Ben-Ari').to eq @digest
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 "matches? returns true when matches" do
141
- expect(Sorcery::CryptoProviders::AES256.matches? @digest, 'Noam Ben-Ari').to be true
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 "matches? returns false when no match" do
145
- expect(Sorcery::CryptoProviders::AES256.matches? @digest, 'Some Dude').to be false
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 "can be decrypted" do
149
- aes = OpenSSL::Cipher::Cipher.new("AES-256-ECB")
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("m").first) + aes.final).to eq "Noam Ben-Ari"
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', :cost => Sorcery::CryptoProviders::BCrypt.cost)
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 "is comparable with original secret" do
169
- expect(BCrypt::Password.new Sorcery::CryptoProviders::BCrypt.encrypt('Noam Ben-Ari')).to eq 'Noam Ben-Ari'
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 "works with multiple costs" do
161
+ it 'works with multiple costs' do
173
162
  Sorcery::CryptoProviders::BCrypt.cost = 3
174
- expect(BCrypt::Password.new(Sorcery::CryptoProviders::BCrypt.encrypt 'Noam Ben-Ari')).to eq 'Noam Ben-Ari'
163
+ expect(BCrypt::Password.new(Sorcery::CryptoProviders::BCrypt.encrypt('Noam Ben-Ari'))).to eq 'Noam Ben-Ari'
175
164
  end
176
165
 
177
- it "matches? returns true when matches" do
178
- expect(Sorcery::CryptoProviders::BCrypt.matches? @digest, 'Noam Ben-Ari').to be true
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 "matches? returns false when no match" do
182
- expect(Sorcery::CryptoProviders::BCrypt.matches? @digest, 'Some Dude').to be false
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 "respond_to?(:stretches) returns true" do
186
- expect(Sorcery::CryptoProviders::BCrypt.respond_to? :stretches).to be true
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 "sets cost when stretches is set" do
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
@@ -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["RAILS_ENV"] ||= 'test'
4
+ ENV['RAILS_ENV'] ||= 'test'
5
5
 
6
- SORCERY_ORM = (ENV["SORCERY_ORM"] || :active_record).to_sym
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 "rails_app/config/environment"
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, :file_path => /controller(.)*_spec.rb$/
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.9.1
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: 2015-04-05 00:00:00.000000000 Z
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.0.0
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.0.0
125
+ version: 3.5.0
147
126
  - !ruby/object:Gem::Dependency
148
- name: rspec-rails
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.0.0
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.0.0
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: nbenari@gmail.com
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/mongo_mapper-rails40.gemfile
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: http://github.com/NoamB/sorcery
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: 1.9.3
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.2.2
309
+ rubygems_version: 2.6.8
364
310
  signing_key:
365
311
  specification_version: 4
366
- summary: Magical authentication for Rails 3 & 4 applications
312
+ summary: Magical authentication for Rails applications
367
313
  test_files: []
368
- has_rdoc: