devise-suspicious_login 0.1.1

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 (63) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/Gemfile +2 -0
  4. data/README.md +111 -0
  5. data/Rakefile +36 -0
  6. data/app/views/devise/mailer/suspicious_login_instructions.html.erb +7 -0
  7. data/bin/test +7 -0
  8. data/config/locales/en.yml +10 -0
  9. data/devise-suspicious_login.gemspec +26 -0
  10. data/lib/generators/active_record/suspicious_login_generator.rb +97 -0
  11. data/lib/generators/active_record/templates/migration.rb +11 -0
  12. data/lib/generators/active_record/templates/migration_existing.rb +13 -0
  13. data/lib/generators/suspicious_login/install_generator.rb +23 -0
  14. data/lib/generators/suspicious_login/orm_helpers.rb +56 -0
  15. data/lib/generators/templates/suspicious_login.rb +26 -0
  16. data/lib/suspicious_login.rb +38 -0
  17. data/lib/suspicious_login/controllers/helpers.rb +6 -0
  18. data/lib/suspicious_login/hooks/suspicious_login.rb +8 -0
  19. data/lib/suspicious_login/mailer.rb +11 -0
  20. data/lib/suspicious_login/model.rb +79 -0
  21. data/lib/suspicious_login/patches.rb +12 -0
  22. data/lib/suspicious_login/rails.rb +9 -0
  23. data/lib/suspicious_login/schema.rb +19 -0
  24. data/lib/suspicious_login/strategies/token.rb +54 -0
  25. data/lib/suspicious_login/version.rb +3 -0
  26. data/test/dummy/Rakefile +6 -0
  27. data/test/dummy/app/controllers/application_controller.rb +3 -0
  28. data/test/dummy/app/controllers/home_controller.rb +5 -0
  29. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  30. data/test/dummy/app/models/application_record.rb +3 -0
  31. data/test/dummy/app/models/user.rb +9 -0
  32. data/test/dummy/app/views/home/index.html +0 -0
  33. data/test/dummy/bin/bundle +3 -0
  34. data/test/dummy/bin/rails +4 -0
  35. data/test/dummy/bin/rake +4 -0
  36. data/test/dummy/bin/setup +38 -0
  37. data/test/dummy/bin/update +29 -0
  38. data/test/dummy/bin/yarn +11 -0
  39. data/test/dummy/config.ru +5 -0
  40. data/test/dummy/config/application.rb +17 -0
  41. data/test/dummy/config/boot.rb +5 -0
  42. data/test/dummy/config/database.yml +21 -0
  43. data/test/dummy/config/environment.rb +2 -0
  44. data/test/dummy/config/environments/test.rb +19 -0
  45. data/test/dummy/config/initializers/devise.rb +13 -0
  46. data/test/dummy/config/locales/devise.en.yml +12 -0
  47. data/test/dummy/config/routes.rb +5 -0
  48. data/test/dummy/config/secrets.yml +5 -0
  49. data/test/dummy/config/spring.rb +6 -0
  50. data/test/dummy/db/migrate/20180910092425_create_tables.rb +16 -0
  51. data/test/dummy/db/migrate/20180910094718_add_login_token_columns.rb +8 -0
  52. data/test/dummy/db/migrate/20180910104707_add_trackable_columns.rb +11 -0
  53. data/test/dummy/db/migrate/20180919081730_add_recoverable_columns.rb +8 -0
  54. data/test/dummy/db/schema.rb +38 -0
  55. data/test/dummy/log/.keep +0 -0
  56. data/test/factories.rb +47 -0
  57. data/test/generators/active_record_generator_test.rb +40 -0
  58. data/test/generators/install_generator_test.rb +15 -0
  59. data/test/support/helpers.rb +16 -0
  60. data/test/suspicious_acceptance_test.rb +269 -0
  61. data/test/suspicious_login_test.rb +38 -0
  62. data/test/test_helper.rb +37 -0
  63. metadata +245 -0
@@ -0,0 +1,38 @@
1
+ require_relative 'test_helper.rb'
2
+
3
+
4
+ class SuspiciousLoginIntegrationTest < ActionDispatch::IntegrationTest
5
+ include Devise::Test::IntegrationHelpers
6
+
7
+ def setup
8
+ @@default_ip = '127.0.0.4'
9
+ @request = ActionDispatch::Request.new({})
10
+ end
11
+
12
+ test 'new user' do
13
+ user = create(:new_user)
14
+ assert_equal(user.suspicious?(@request), false)
15
+ end
16
+
17
+ test 'user with honest login' do
18
+ user = create(:user_with_honest_login)
19
+ assert_equal(user.suspicious?(@request), false)
20
+ end
21
+
22
+ test 'user with dormant login from existing previous ip' do
23
+ @@default_ip = '127.0.0.1'
24
+ user = create(:user_with_dormant_login)
25
+ assert_equal(user.dormant_account?(@request), false)
26
+ end
27
+
28
+ test 'user with dormant login from different ip' do
29
+ @request.remote_ip = '227.0.0.1'
30
+ user = create(:user_with_dormant_login)
31
+ assert_equal(user.dormant_account?(@request), true)
32
+ end
33
+
34
+ test 'user with suspicious login from existing ip' do
35
+ user = create(:user_with_suspicious_login)
36
+ assert_equal(user.suspicious?(@request), true)
37
+ end
38
+ end
@@ -0,0 +1,37 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ DEVISE_ORM = (ENV["DEVISE_ORM"] || :active_record).to_sym
3
+
4
+ require_relative "../test/dummy/config/environment"
5
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __dir__)]
6
+ ActiveRecord::Migrator.migrations_paths << File.expand_path("../db/migrate", __dir__)
7
+ require "rails/test_help"
8
+ require "factory_bot"
9
+
10
+ FactoryBot.definition_file_paths = [
11
+ File.join(Dir.pwd, 'test', 'factories')
12
+ ]
13
+
14
+ FactoryBot.find_definitions
15
+
16
+ class ActionDispatch::IntegrationTest
17
+ include FactoryBot::Syntax::Methods
18
+ end
19
+
20
+
21
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
22
+
23
+ Rails::TestUnitReporter.executable = "bin/test"
24
+
25
+ $:.unshift File.expand_path('../support', __FILE__)
26
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
27
+
28
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
29
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
30
+ ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
31
+ ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_path + "/files"
32
+ ActiveSupport::TestCase.fixtures :all
33
+ end
34
+
35
+ ActionMailer::Base.delivery_method = :test
36
+ ActionMailer::Base.perform_deliveries = true
37
+ ActionMailer::Base.default_url_options[:host] = 'test.com'
metadata ADDED
@@ -0,0 +1,245 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: devise-suspicious_login
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - ceres629
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-10-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: devise
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: colorize
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '6.0'
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '5.0'
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '6.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: minitest
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rake
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: sqlite3
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: factory_bot_rails
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ description:
118
+ email:
119
+ - ceres629@gmail.com
120
+ executables: []
121
+ extensions: []
122
+ extra_rdoc_files: []
123
+ files:
124
+ - ".gitignore"
125
+ - Gemfile
126
+ - README.md
127
+ - Rakefile
128
+ - app/views/devise/mailer/suspicious_login_instructions.html.erb
129
+ - bin/test
130
+ - config/locales/en.yml
131
+ - devise-suspicious_login.gemspec
132
+ - lib/generators/active_record/suspicious_login_generator.rb
133
+ - lib/generators/active_record/templates/migration.rb
134
+ - lib/generators/active_record/templates/migration_existing.rb
135
+ - lib/generators/suspicious_login/install_generator.rb
136
+ - lib/generators/suspicious_login/orm_helpers.rb
137
+ - lib/generators/templates/suspicious_login.rb
138
+ - lib/suspicious_login.rb
139
+ - lib/suspicious_login/controllers/helpers.rb
140
+ - lib/suspicious_login/hooks/suspicious_login.rb
141
+ - lib/suspicious_login/mailer.rb
142
+ - lib/suspicious_login/model.rb
143
+ - lib/suspicious_login/patches.rb
144
+ - lib/suspicious_login/rails.rb
145
+ - lib/suspicious_login/schema.rb
146
+ - lib/suspicious_login/strategies/token.rb
147
+ - lib/suspicious_login/version.rb
148
+ - test/dummy/Rakefile
149
+ - test/dummy/app/controllers/application_controller.rb
150
+ - test/dummy/app/controllers/home_controller.rb
151
+ - test/dummy/app/mailers/application_mailer.rb
152
+ - test/dummy/app/models/application_record.rb
153
+ - test/dummy/app/models/user.rb
154
+ - test/dummy/app/views/home/index.html
155
+ - test/dummy/bin/bundle
156
+ - test/dummy/bin/rails
157
+ - test/dummy/bin/rake
158
+ - test/dummy/bin/setup
159
+ - test/dummy/bin/update
160
+ - test/dummy/bin/yarn
161
+ - test/dummy/config.ru
162
+ - test/dummy/config/application.rb
163
+ - test/dummy/config/boot.rb
164
+ - test/dummy/config/database.yml
165
+ - test/dummy/config/environment.rb
166
+ - test/dummy/config/environments/test.rb
167
+ - test/dummy/config/initializers/devise.rb
168
+ - test/dummy/config/locales/devise.en.yml
169
+ - test/dummy/config/routes.rb
170
+ - test/dummy/config/secrets.yml
171
+ - test/dummy/config/spring.rb
172
+ - test/dummy/db/migrate/20180910092425_create_tables.rb
173
+ - test/dummy/db/migrate/20180910094718_add_login_token_columns.rb
174
+ - test/dummy/db/migrate/20180910104707_add_trackable_columns.rb
175
+ - test/dummy/db/migrate/20180919081730_add_recoverable_columns.rb
176
+ - test/dummy/db/schema.rb
177
+ - test/dummy/log/.keep
178
+ - test/factories.rb
179
+ - test/generators/active_record_generator_test.rb
180
+ - test/generators/install_generator_test.rb
181
+ - test/support/helpers.rb
182
+ - test/suspicious_acceptance_test.rb
183
+ - test/suspicious_login_test.rb
184
+ - test/test_helper.rb
185
+ homepage:
186
+ licenses: []
187
+ metadata: {}
188
+ post_install_message:
189
+ rdoc_options: []
190
+ require_paths:
191
+ - lib
192
+ required_ruby_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ required_rubygems_version: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ requirements: []
203
+ rubyforge_project:
204
+ rubygems_version: 2.7.7
205
+ signing_key:
206
+ specification_version: 4
207
+ summary: Devise extension that check for suspicious logins
208
+ test_files:
209
+ - test/dummy/Rakefile
210
+ - test/dummy/app/controllers/application_controller.rb
211
+ - test/dummy/app/controllers/home_controller.rb
212
+ - test/dummy/app/mailers/application_mailer.rb
213
+ - test/dummy/app/models/application_record.rb
214
+ - test/dummy/app/models/user.rb
215
+ - test/dummy/app/views/home/index.html
216
+ - test/dummy/bin/bundle
217
+ - test/dummy/bin/rails
218
+ - test/dummy/bin/rake
219
+ - test/dummy/bin/setup
220
+ - test/dummy/bin/update
221
+ - test/dummy/bin/yarn
222
+ - test/dummy/config.ru
223
+ - test/dummy/config/application.rb
224
+ - test/dummy/config/boot.rb
225
+ - test/dummy/config/database.yml
226
+ - test/dummy/config/environment.rb
227
+ - test/dummy/config/environments/test.rb
228
+ - test/dummy/config/initializers/devise.rb
229
+ - test/dummy/config/locales/devise.en.yml
230
+ - test/dummy/config/routes.rb
231
+ - test/dummy/config/secrets.yml
232
+ - test/dummy/config/spring.rb
233
+ - test/dummy/db/migrate/20180910092425_create_tables.rb
234
+ - test/dummy/db/migrate/20180910094718_add_login_token_columns.rb
235
+ - test/dummy/db/migrate/20180910104707_add_trackable_columns.rb
236
+ - test/dummy/db/migrate/20180919081730_add_recoverable_columns.rb
237
+ - test/dummy/db/schema.rb
238
+ - test/dummy/log/.keep
239
+ - test/factories.rb
240
+ - test/generators/active_record_generator_test.rb
241
+ - test/generators/install_generator_test.rb
242
+ - test/support/helpers.rb
243
+ - test/suspicious_acceptance_test.rb
244
+ - test/suspicious_login_test.rb
245
+ - test/test_helper.rb