sorcery 0.17.0 → 0.18.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 (154) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -1
  3. data/README.md +8 -5
  4. data/lib/generators/sorcery/helpers.rb +1 -1
  5. data/lib/generators/sorcery/install_generator.rb +9 -18
  6. data/lib/generators/sorcery/templates/initializer.rb +24 -10
  7. data/lib/sorcery/adapters/active_record_adapter.rb +12 -14
  8. data/lib/sorcery/adapters/mongoid_adapter.rb +6 -8
  9. data/lib/sorcery/controller/config.rb +27 -29
  10. data/lib/sorcery/controller/submodules/activity_logging.rb +4 -7
  11. data/lib/sorcery/controller/submodules/brute_force_protection.rb +4 -1
  12. data/lib/sorcery/controller/submodules/external.rb +11 -11
  13. data/lib/sorcery/controller/submodules/http_basic_auth.rb +7 -2
  14. data/lib/sorcery/controller/submodules/remember_me.rb +2 -1
  15. data/lib/sorcery/controller/submodules/session_timeout.rb +2 -2
  16. data/lib/sorcery/controller.rb +36 -18
  17. data/lib/sorcery/crypto_providers/aes256.rb +4 -2
  18. data/lib/sorcery/crypto_providers/bcrypt.rb +2 -1
  19. data/lib/sorcery/crypto_providers/md5.rb +1 -0
  20. data/lib/sorcery/crypto_providers/sha1.rb +1 -0
  21. data/lib/sorcery/crypto_providers/sha256.rb +1 -0
  22. data/lib/sorcery/crypto_providers/sha512.rb +1 -0
  23. data/lib/sorcery/engine.rb +6 -4
  24. data/lib/sorcery/errors.rb +10 -0
  25. data/lib/sorcery/model/config.rb +20 -31
  26. data/lib/sorcery/model/submodules/activity_logging.rb +8 -6
  27. data/lib/sorcery/model/submodules/brute_force_protection.rb +16 -14
  28. data/lib/sorcery/model/submodules/external.rb +8 -10
  29. data/lib/sorcery/model/submodules/magic_login.rb +8 -4
  30. data/lib/sorcery/model/submodules/remember_me.rb +3 -3
  31. data/lib/sorcery/model/submodules/reset_password.rb +21 -13
  32. data/lib/sorcery/model/submodules/user_activation.rb +19 -17
  33. data/lib/sorcery/model/temporary_token.rb +5 -5
  34. data/lib/sorcery/model.rb +21 -25
  35. data/lib/sorcery/providers/base.rb +1 -1
  36. data/lib/sorcery/providers/facebook.rb +2 -2
  37. data/lib/sorcery/providers/github.rb +3 -3
  38. data/lib/sorcery/providers/heroku.rb +1 -2
  39. data/lib/sorcery/providers/jira.rb +3 -2
  40. data/lib/sorcery/providers/line.rb +2 -4
  41. data/lib/sorcery/providers/microsoft.rb +1 -1
  42. data/lib/sorcery/providers/twitter.rb +2 -2
  43. data/lib/sorcery/providers/vk.rb +4 -4
  44. data/lib/sorcery/providers/xing.rb +3 -2
  45. data/lib/sorcery/test_helpers/internal/rails.rb +5 -22
  46. data/lib/sorcery/test_helpers/internal.rb +4 -6
  47. data/lib/sorcery/test_helpers/rails/integration.rb +1 -1
  48. data/lib/sorcery/test_helpers/rails/request.rb +1 -1
  49. data/lib/sorcery/version.rb +1 -1
  50. data/lib/sorcery.rb +6 -1
  51. metadata +21 -150
  52. data/.devcontainer/Dockerfile +0 -10
  53. data/.devcontainer/devcontainer.json +0 -29
  54. data/.devcontainer/postcreate.sh +0 -4
  55. data/.document +0 -5
  56. data/.github/FUNDING.yml +0 -1
  57. data/.github/ISSUE_TEMPLATE.md +0 -24
  58. data/.github/PULL_REQUEST_TEMPLATE.md +0 -7
  59. data/.github/workflows/ruby.yml +0 -54
  60. data/.gitignore +0 -60
  61. data/.rspec +0 -1
  62. data/.rubocop.yml +0 -55
  63. data/.rubocop_todo.yml +0 -163
  64. data/CODE_OF_CONDUCT.md +0 -14
  65. data/Gemfile +0 -8
  66. data/MAINTAINING.md +0 -64
  67. data/Rakefile +0 -8
  68. data/SECURITY.md +0 -19
  69. data/gemfiles/rails_61.gemfile +0 -7
  70. data/gemfiles/rails_70.gemfile +0 -7
  71. data/gemfiles/rails_71.gemfile +0 -7
  72. data/sorcery.gemspec +0 -49
  73. data/spec/active_record/user_activation_spec.rb +0 -17
  74. data/spec/active_record/user_activity_logging_spec.rb +0 -15
  75. data/spec/active_record/user_brute_force_protection_spec.rb +0 -15
  76. data/spec/active_record/user_magic_login_spec.rb +0 -15
  77. data/spec/active_record/user_oauth_spec.rb +0 -15
  78. data/spec/active_record/user_remember_me_spec.rb +0 -15
  79. data/spec/active_record/user_reset_password_spec.rb +0 -15
  80. data/spec/active_record/user_spec.rb +0 -27
  81. data/spec/controllers/controller_activity_logging_spec.rb +0 -113
  82. data/spec/controllers/controller_brute_force_protection_spec.rb +0 -41
  83. data/spec/controllers/controller_http_basic_auth_spec.rb +0 -67
  84. data/spec/controllers/controller_oauth2_spec.rb +0 -568
  85. data/spec/controllers/controller_oauth_spec.rb +0 -266
  86. data/spec/controllers/controller_remember_me_spec.rb +0 -130
  87. data/spec/controllers/controller_session_timeout_spec.rb +0 -168
  88. data/spec/controllers/controller_spec.rb +0 -200
  89. data/spec/orm/active_record.rb +0 -21
  90. data/spec/providers/example_provider_spec.rb +0 -17
  91. data/spec/providers/example_spec.rb +0 -17
  92. data/spec/providers/examples_spec.rb +0 -17
  93. data/spec/providers/vk_spec.rb +0 -42
  94. data/spec/rails_app/app/active_record/authentication.rb +0 -3
  95. data/spec/rails_app/app/active_record/user.rb +0 -5
  96. data/spec/rails_app/app/active_record/user_provider.rb +0 -3
  97. data/spec/rails_app/app/assets/config/manifest.js +0 -1
  98. data/spec/rails_app/app/controllers/application_controller.rb +0 -2
  99. data/spec/rails_app/app/controllers/sorcery_controller.rb +0 -489
  100. data/spec/rails_app/app/helpers/application_helper.rb +0 -2
  101. data/spec/rails_app/app/mailers/sorcery_mailer.rb +0 -38
  102. data/spec/rails_app/app/views/application/index.html.erb +0 -17
  103. data/spec/rails_app/app/views/layouts/application.html.erb +0 -14
  104. data/spec/rails_app/app/views/sorcery_mailer/activation_email.html.erb +0 -17
  105. data/spec/rails_app/app/views/sorcery_mailer/activation_email.text.erb +0 -9
  106. data/spec/rails_app/app/views/sorcery_mailer/activation_needed_email.html.erb +0 -17
  107. data/spec/rails_app/app/views/sorcery_mailer/activation_success_email.html.erb +0 -17
  108. data/spec/rails_app/app/views/sorcery_mailer/activation_success_email.text.erb +0 -9
  109. data/spec/rails_app/app/views/sorcery_mailer/magic_login_email.html.erb +0 -13
  110. data/spec/rails_app/app/views/sorcery_mailer/magic_login_email.text.erb +0 -6
  111. data/spec/rails_app/app/views/sorcery_mailer/reset_password_email.html.erb +0 -16
  112. data/spec/rails_app/app/views/sorcery_mailer/reset_password_email.text.erb +0 -8
  113. data/spec/rails_app/app/views/sorcery_mailer/send_unlock_token_email.text.erb +0 -1
  114. data/spec/rails_app/config/application.rb +0 -61
  115. data/spec/rails_app/config/boot.rb +0 -4
  116. data/spec/rails_app/config/database.yml +0 -22
  117. data/spec/rails_app/config/environment.rb +0 -5
  118. data/spec/rails_app/config/environments/test.rb +0 -37
  119. data/spec/rails_app/config/initializers/backtrace_silencers.rb +0 -7
  120. data/spec/rails_app/config/initializers/compatible_legacy_migration.rb +0 -11
  121. data/spec/rails_app/config/initializers/inflections.rb +0 -10
  122. data/spec/rails_app/config/initializers/mime_types.rb +0 -5
  123. data/spec/rails_app/config/initializers/session_store.rb +0 -12
  124. data/spec/rails_app/config/locales/en.yml +0 -5
  125. data/spec/rails_app/config/routes.rb +0 -81
  126. data/spec/rails_app/config/secrets.yml +0 -4
  127. data/spec/rails_app/config.ru +0 -4
  128. data/spec/rails_app/db/migrate/activation/20101224223622_add_activation_to_users.rb +0 -17
  129. data/spec/rails_app/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +0 -19
  130. data/spec/rails_app/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +0 -13
  131. data/spec/rails_app/db/migrate/core/20101224223620_create_users.rb +0 -16
  132. data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +0 -22
  133. data/spec/rails_app/db/migrate/invalidate_active_sessions/20180221093235_add_invalidate_active_sessions_before_to_users.rb +0 -9
  134. data/spec/rails_app/db/migrate/magic_login/20170924151831_add_magic_login_to_users.rb +0 -17
  135. data/spec/rails_app/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +0 -15
  136. data/spec/rails_app/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +0 -15
  137. data/spec/rails_app/db/schema.rb +0 -21
  138. data/spec/rails_app/db/seeds.rb +0 -7
  139. data/spec/shared_examples/user_activation_shared_examples.rb +0 -361
  140. data/spec/shared_examples/user_activity_logging_shared_examples.rb +0 -106
  141. data/spec/shared_examples/user_brute_force_protection_shared_examples.rb +0 -151
  142. data/spec/shared_examples/user_magic_login_shared_examples.rb +0 -150
  143. data/spec/shared_examples/user_oauth_shared_examples.rb +0 -33
  144. data/spec/shared_examples/user_remember_me_shared_examples.rb +0 -129
  145. data/spec/shared_examples/user_reset_password_shared_examples.rb +0 -370
  146. data/spec/shared_examples/user_shared_examples.rb +0 -678
  147. data/spec/sorcery_crypto_providers_spec.rb +0 -245
  148. data/spec/sorcery_temporary_token_spec.rb +0 -27
  149. data/spec/spec.opts +0 -2
  150. data/spec/spec_helper.rb +0 -50
  151. data/spec/support/migration_helper.rb +0 -29
  152. data/spec/support/providers/example.rb +0 -11
  153. data/spec/support/providers/example_provider.rb +0 -11
  154. data/spec/support/providers/examples.rb +0 -11
@@ -1,245 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Crypto Providers wrappers' do
4
- describe Sorcery::CryptoProviders::MD5 do
5
- after(:each) do
6
- Sorcery::CryptoProviders::MD5.reset!
7
- end
8
-
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')
11
- end
12
-
13
- it 'works with multiple stretches' do
14
- Sorcery::CryptoProviders::MD5.stretches = 3
15
- expect(Sorcery::CryptoProviders::MD5.encrypt('Noam Ben-Ari')).to eq Digest::MD5.hexdigest(Digest::MD5.hexdigest(Digest::MD5.hexdigest('Noam Ben-Ari')))
16
- end
17
-
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
20
- end
21
-
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
24
- end
25
- end
26
-
27
- describe Sorcery::CryptoProviders::SHA1 do
28
- before(:all) do
29
- @digest = 'Noam Ben-Ari'
30
- Sorcery::CryptoProviders::SHA1.stretches.times { @digest = Digest::SHA1.hexdigest(@digest) }
31
- end
32
-
33
- after(:each) do
34
- Sorcery::CryptoProviders::SHA1.reset!
35
- end
36
-
37
- it 'encrypt works via wrapper like normal lib' do
38
- expect(Sorcery::CryptoProviders::SHA1.encrypt('Noam Ben-Ari')).to eq @digest
39
- end
40
-
41
- it 'works with multiple stretches' do
42
- Sorcery::CryptoProviders::SHA1.stretches = 3
43
- expect(Sorcery::CryptoProviders::SHA1.encrypt('Noam Ben-Ari')).to eq Digest::SHA1.hexdigest(Digest::SHA1.hexdigest(Digest::SHA1.hexdigest('Noam Ben-Ari')))
44
- end
45
-
46
- it 'matches? returns true when matches' do
47
- expect(Sorcery::CryptoProviders::SHA1.matches?(@digest, 'Noam Ben-Ari')).to be true
48
- end
49
-
50
- it 'matches? returns false when no match' do
51
- expect(Sorcery::CryptoProviders::SHA1.matches?(@digest, 'Some Dude')).to be false
52
- end
53
-
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'
57
- end
58
- end
59
-
60
- describe Sorcery::CryptoProviders::SHA256 do
61
- before(:all) do
62
- @digest = 'Noam Ben-Ari'
63
- Sorcery::CryptoProviders::SHA256.stretches.times { @digest = Digest::SHA256.hexdigest(@digest) }
64
- end
65
-
66
- after(:each) do
67
- Sorcery::CryptoProviders::SHA256.reset!
68
- end
69
-
70
- it 'encrypt works via wrapper like normal lib' do
71
- expect(Sorcery::CryptoProviders::SHA256.encrypt('Noam Ben-Ari')).to eq @digest
72
- end
73
-
74
- it 'works with multiple stretches' do
75
- Sorcery::CryptoProviders::SHA256.stretches = 3
76
- expect(Sorcery::CryptoProviders::SHA256.encrypt('Noam Ben-Ari')).to eq Digest::SHA256.hexdigest(Digest::SHA256.hexdigest(Digest::SHA256.hexdigest('Noam Ben-Ari')))
77
- end
78
-
79
- it 'matches? returns true when matches' do
80
- expect(Sorcery::CryptoProviders::SHA256.matches?(@digest, 'Noam Ben-Ari')).to be true
81
- end
82
-
83
- it 'matches? returns false when no match' do
84
- expect(Sorcery::CryptoProviders::SHA256.matches?(@digest, 'Some Dude')).to be false
85
- end
86
- end
87
-
88
- describe Sorcery::CryptoProviders::SHA512 do
89
- before(:all) do
90
- @digest = 'Noam Ben-Ari'
91
- Sorcery::CryptoProviders::SHA512.stretches.times { @digest = Digest::SHA512.hexdigest(@digest) }
92
- end
93
-
94
- after(:each) do
95
- Sorcery::CryptoProviders::SHA512.reset!
96
- end
97
-
98
- it 'encrypt works via wrapper like normal lib' do
99
- expect(Sorcery::CryptoProviders::SHA512.encrypt('Noam Ben-Ari')).to eq @digest
100
- end
101
-
102
- it 'works with multiple stretches' do
103
- Sorcery::CryptoProviders::SHA512.stretches = 3
104
- expect(Sorcery::CryptoProviders::SHA512.encrypt('Noam Ben-Ari')).to eq Digest::SHA512.hexdigest(Digest::SHA512.hexdigest(Digest::SHA512.hexdigest('Noam Ben-Ari')))
105
- end
106
-
107
- it 'matches? returns true when matches' do
108
- expect(Sorcery::CryptoProviders::SHA512.matches?(@digest, 'Noam Ben-Ari')).to be true
109
- end
110
-
111
- it 'matches? returns false when no match' do
112
- expect(Sorcery::CryptoProviders::SHA512.matches?(@digest, 'Some Dude')).to be false
113
- end
114
- end
115
-
116
- describe Sorcery::CryptoProviders::AES256 do
117
- before(:all) do
118
- aes = OpenSSL::Cipher.new('AES-256-ECB')
119
- aes.encrypt
120
- @key = 'asd234dfs423fddsmndsflktsdf32343'
121
- aes.key = @key
122
- @digest = 'Noam Ben-Ari'
123
- @digest = [aes.update(@digest) + aes.final].pack('m').chomp
124
- Sorcery::CryptoProviders::AES256.key = @key
125
- end
126
-
127
- it 'encrypt works via wrapper like normal lib' do
128
- expect(Sorcery::CryptoProviders::AES256.encrypt('Noam Ben-Ari')).to eq @digest
129
- end
130
-
131
- it 'matches? returns true when matches' do
132
- expect(Sorcery::CryptoProviders::AES256.matches?(@digest, 'Noam Ben-Ari')).to be true
133
- end
134
-
135
- it 'matches? returns false when no match' do
136
- expect(Sorcery::CryptoProviders::AES256.matches?(@digest, 'Some Dude')).to be false
137
- end
138
-
139
- it 'can be decrypted' do
140
- aes = OpenSSL::Cipher.new('AES-256-ECB')
141
- aes.decrypt
142
- aes.key = @key
143
- expect(aes.update(@digest.unpack('m').first) + aes.final).to eq 'Noam Ben-Ari'
144
- end
145
- end
146
-
147
- describe Sorcery::CryptoProviders::BCrypt do
148
- before(:all) do
149
- Sorcery::CryptoProviders::BCrypt.cost = 1
150
- @digest = BCrypt::Password.create('Noam Ben-Ari', cost: Sorcery::CryptoProviders::BCrypt.cost)
151
- @tokens = %w[password gq18WBnJYNh2arkC1kgH]
152
- end
153
-
154
- after(:each) do
155
- Sorcery::CryptoProviders::BCrypt.reset!
156
- end
157
-
158
- it 'is comparable with original secret' do
159
- expect(BCrypt::Password.new(Sorcery::CryptoProviders::BCrypt.encrypt('Noam Ben-Ari'))).to eq 'Noam Ben-Ari'
160
- end
161
-
162
- it 'works with multiple costs' do
163
- Sorcery::CryptoProviders::BCrypt.cost = 3
164
- expect(BCrypt::Password.new(Sorcery::CryptoProviders::BCrypt.encrypt('Noam Ben-Ari'))).to eq 'Noam Ben-Ari'
165
- end
166
-
167
- it 'matches? returns true when matches' do
168
- expect(Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'Noam Ben-Ari')).to be true
169
- end
170
-
171
- it 'matches? returns false when no match' do
172
- expect(Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'Some Dude')).to be false
173
- end
174
-
175
- it 'respond_to?(:stretches) returns true' do
176
- expect(Sorcery::CryptoProviders::BCrypt.respond_to?(:stretches)).to be true
177
- end
178
-
179
- it 'sets cost when stretches is set' do
180
- Sorcery::CryptoProviders::BCrypt.stretches = 4
181
-
182
- # stubbed in Sorcery::TestHelpers::Internal
183
- expect(Sorcery::CryptoProviders::BCrypt.cost).to eq 1
184
- end
185
-
186
- it 'matches token encrypted with salt from upstream' do
187
- # note: actual comparison is done by BCrypt::Password#==(raw_token)
188
- expect(Sorcery::CryptoProviders::BCrypt.encrypt(@tokens)).to eq @tokens.flatten.join
189
- end
190
-
191
- it 'respond_to?(:pepper) returns true' do
192
- expect(Sorcery::CryptoProviders::BCrypt.respond_to?(:pepper)).to be true
193
- end
194
-
195
- context 'when pepper is provided' do
196
- before(:each) do
197
- Sorcery::CryptoProviders::BCrypt.pepper = 'pepper'
198
- @digest = Sorcery::CryptoProviders::BCrypt.encrypt(@tokens) # a BCrypt::Password object
199
- end
200
-
201
- it 'matches token encrypted with salt and pepper from upstream' do
202
- # note: actual comparison is done by BCrypt::Password#==(raw_token)
203
- expect(@digest).to eq @tokens.flatten.join.concat('pepper')
204
- end
205
-
206
- it 'matches? returns true when matches' do
207
- expect(Sorcery::CryptoProviders::BCrypt.matches?(@digest, *@tokens)).to be true
208
- end
209
-
210
- it 'matches? returns false when pepper is replaced with empty string' do
211
- Sorcery::CryptoProviders::BCrypt.pepper = ''
212
- expect(Sorcery::CryptoProviders::BCrypt.matches?(@digest, *@tokens)).to be false
213
- end
214
-
215
- it 'matches? returns false when no match' do
216
- expect(Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'a_random_incorrect_password')).to be false
217
- end
218
- end
219
-
220
- context "when pepper is an empty string (default)" do
221
- before(:each) do
222
- Sorcery::CryptoProviders::BCrypt.pepper = ''
223
- @digest = Sorcery::CryptoProviders::BCrypt.encrypt(@tokens) # a BCrypt::Password object
224
- end
225
-
226
- # make sure the default pepper '' does nothing
227
- it 'matches token encrypted with salt only (without pepper)' do
228
- expect(@digest).to eq @tokens.flatten.join # keep consistency with the older versions of #join_token
229
- end
230
-
231
- it 'matches? returns true when matches' do
232
- expect(Sorcery::CryptoProviders::BCrypt.matches?(@digest, *@tokens)).to be true
233
- end
234
-
235
- it 'matches? returns false when pepper has changed' do
236
- Sorcery::CryptoProviders::BCrypt.pepper = 'a new pepper'
237
- expect(Sorcery::CryptoProviders::BCrypt.matches?(@digest, *@tokens)).to be false
238
- end
239
-
240
- it 'matches? returns false when no match' do
241
- expect(Sorcery::CryptoProviders::BCrypt.matches?(@digest, 'a_random_incorrect_password')).to be false
242
- end
243
- end
244
- end
245
- end
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Sorcery::Model::TemporaryToken do
4
- describe '.generate_random_token' do
5
- before do
6
- sorcery_reload!
7
- end
8
-
9
- subject { Sorcery::Model::TemporaryToken.generate_random_token.length }
10
-
11
- context 'token_randomness is 3' do
12
- before do
13
- sorcery_model_property_set(:token_randomness, 3)
14
- end
15
-
16
- it { is_expected.to eq 4 }
17
- end
18
-
19
- context 'token_randomness is 15' do
20
- before do
21
- sorcery_model_property_set(:token_randomness, 15)
22
- end
23
-
24
- it { is_expected.to eq 20 }
25
- end
26
- end
27
- end
data/spec/spec.opts DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --format documentation
data/spec/spec_helper.rb DELETED
@@ -1,50 +0,0 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- $LOAD_PATH.unshift(File.dirname(__FILE__))
3
-
4
- ENV['RAILS_ENV'] ||= 'test'
5
-
6
- SORCERY_ORM = :active_record
7
-
8
- # require 'simplecov'
9
- # SimpleCov.root File.join(File.dirname(__FILE__), '..', 'lib')
10
- # SimpleCov.start
11
- require 'rails/all'
12
- require 'rspec/rails'
13
- require 'timecop'
14
- require 'byebug'
15
-
16
- def setup_orm; end
17
-
18
- def teardown_orm; end
19
-
20
- require "orm/#{SORCERY_ORM}"
21
-
22
- require 'rails_app/config/environment'
23
-
24
- class TestMailer < ActionMailer::Base; end
25
-
26
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
27
-
28
- RSpec.configure do |config|
29
- config.include RSpec::Rails::ControllerExampleGroup, file_path: /controller(.)*_spec.rb$/
30
- config.mock_with :rspec
31
-
32
- config.use_transactional_fixtures = false
33
-
34
- config.before(:suite) { setup_orm }
35
- config.after(:suite) { teardown_orm }
36
- config.before(:each) { ActionMailer::Base.deliveries.clear }
37
-
38
- config.include ::Sorcery::TestHelpers::Internal
39
- config.include ::Sorcery::TestHelpers::Internal::Rails
40
-
41
- if begin
42
- Module.const_defined?('::Rails::Controller::Testing')
43
- rescue StandardError
44
- false
45
- end
46
- config.include ::Rails::Controller::Testing::TestProcess, type: :controller
47
- config.include ::Rails::Controller::Testing::TemplateAssertions, type: :controller
48
- config.include ::Rails::Controller::Testing::Integration, type: :controller
49
- end
50
- end
@@ -1,29 +0,0 @@
1
- class MigrationHelper
2
- class << self
3
- def migrate(path)
4
- if ActiveRecord.version >= Gem::Version.new('6.0.0')
5
- ActiveRecord::MigrationContext.new(path, schema_migration).migrate
6
- elsif ActiveRecord.version >= Gem::Version.new('5.2.0')
7
- ActiveRecord::MigrationContext.new(path).migrate
8
- else
9
- ActiveRecord::Migrator.migrate(path)
10
- end
11
- end
12
-
13
- def rollback(path)
14
- if ActiveRecord.version >= Gem::Version.new('6.0.0')
15
- ActiveRecord::MigrationContext.new(path, schema_migration).rollback
16
- elsif ActiveRecord.version >= Gem::Version.new('5.2.0')
17
- ActiveRecord::MigrationContext.new(path).rollback
18
- else
19
- ActiveRecord::Migrator.rollback(path)
20
- end
21
- end
22
-
23
- private
24
-
25
- def schema_migration
26
- ActiveRecord::Base.connection.schema_migration
27
- end
28
- end
29
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'sorcery/providers/base'
4
-
5
- module Sorcery
6
- module Providers
7
- class Example < Base
8
- include Protocols::Oauth2
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'sorcery/providers/base'
4
-
5
- module Sorcery
6
- module Providers
7
- class ExampleProvider < Base
8
- include Protocols::Oauth2
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'sorcery/providers/base'
4
-
5
- module Sorcery
6
- module Providers
7
- class Examples < Base
8
- include Protocols::Oauth2
9
- end
10
- end
11
- end