stn-simple_token_authentication 1.7.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 (55) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +674 -0
  3. data/README.md +270 -0
  4. data/Rakefile +61 -0
  5. data/doc/README.md +18 -0
  6. data/lib/simple_token_authentication.rb +58 -0
  7. data/lib/simple_token_authentication/acts_as_token_authenticatable.rb +49 -0
  8. data/lib/simple_token_authentication/acts_as_token_authentication_handler.rb +22 -0
  9. data/lib/simple_token_authentication/adapter.rb +7 -0
  10. data/lib/simple_token_authentication/adapters/active_record_adapter.rb +14 -0
  11. data/lib/simple_token_authentication/adapters/mongoid_adapter.rb +14 -0
  12. data/lib/simple_token_authentication/adapters/rails_adapter.rb +14 -0
  13. data/lib/simple_token_authentication/adapters/rails_api_adapter.rb +18 -0
  14. data/lib/simple_token_authentication/configuration.rb +45 -0
  15. data/lib/simple_token_authentication/entities_manager.rb +10 -0
  16. data/lib/simple_token_authentication/entity.rb +64 -0
  17. data/lib/simple_token_authentication/fallback_authentication_handler.rb +11 -0
  18. data/lib/simple_token_authentication/sign_in_handler.rb +19 -0
  19. data/lib/simple_token_authentication/token_authentication_handler.rb +149 -0
  20. data/lib/simple_token_authentication/token_comparator.rb +20 -0
  21. data/lib/simple_token_authentication/token_generator.rb +9 -0
  22. data/lib/simple_token_authentication/version.rb +3 -0
  23. data/lib/tasks/simple_token_authentication_tasks.rake +4 -0
  24. data/spec/configuration/action_controller_callbacks_options_spec.rb +53 -0
  25. data/spec/configuration/fallback_to_devise_option_spec.rb +128 -0
  26. data/spec/configuration/header_names_option_spec.rb +463 -0
  27. data/spec/configuration/sign_in_token_option_spec.rb +92 -0
  28. data/spec/lib/simple_token_authentication/acts_as_token_authenticatable_spec.rb +108 -0
  29. data/spec/lib/simple_token_authentication/acts_as_token_authentication_handler_spec.rb +127 -0
  30. data/spec/lib/simple_token_authentication/adapter_spec.rb +19 -0
  31. data/spec/lib/simple_token_authentication/adapters/active_record_adapter_spec.rb +21 -0
  32. data/spec/lib/simple_token_authentication/adapters/mongoid_adapter_spec.rb +21 -0
  33. data/spec/lib/simple_token_authentication/adapters/rails_adapter_spec.rb +21 -0
  34. data/spec/lib/simple_token_authentication/adapters/rails_api_adapter_spec.rb +43 -0
  35. data/spec/lib/simple_token_authentication/configuration_spec.rb +133 -0
  36. data/spec/lib/simple_token_authentication/entities_manager_spec.rb +67 -0
  37. data/spec/lib/simple_token_authentication/entity_spec.rb +190 -0
  38. data/spec/lib/simple_token_authentication/errors_spec.rb +8 -0
  39. data/spec/lib/simple_token_authentication/fallback_authentication_handler_spec.rb +24 -0
  40. data/spec/lib/simple_token_authentication/sign_in_handler_spec.rb +43 -0
  41. data/spec/lib/simple_token_authentication/token_authentication_handler_spec.rb +351 -0
  42. data/spec/lib/simple_token_authentication/token_comparator_spec.rb +19 -0
  43. data/spec/lib/simple_token_authentication/token_generator_spec.rb +19 -0
  44. data/spec/lib/simple_token_authentication_spec.rb +181 -0
  45. data/spec/spec_helper.rb +15 -0
  46. data/spec/support/dummy_classes_helper.rb +80 -0
  47. data/spec/support/spec_for_adapter.rb +10 -0
  48. data/spec/support/spec_for_authentication_handler_interface.rb +8 -0
  49. data/spec/support/spec_for_configuration_option_interface.rb +28 -0
  50. data/spec/support/spec_for_entities_manager_interface.rb +8 -0
  51. data/spec/support/spec_for_sign_in_handler_interface.rb +8 -0
  52. data/spec/support/spec_for_token_comparator_interface.rb +8 -0
  53. data/spec/support/spec_for_token_generator_interface.rb +8 -0
  54. data/spec/support/specs_for_token_authentication_handler_interface.rb +8 -0
  55. metadata +250 -0
@@ -0,0 +1,15 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require 'action_controller'
5
+ require 'active_record'
6
+ require 'mongoid'
7
+ require 'active_support'
8
+
9
+ require 'simple_token_authentication'
10
+
11
+ Dir["./spec/support/**/*.rb"].sort.each { |f| require f; puts f }
12
+
13
+ RSpec.configure do |config|
14
+ config.raise_errors_for_deprecations!
15
+ end
@@ -0,0 +1,80 @@
1
+ # Create dummy classes to test modules with RSpec
2
+ #
3
+ # Usage:
4
+ #
5
+ # describe SimpleTokenAuthentication::ModuleUnderTest do
6
+ #
7
+ # after(:each) do
8
+ # ensure_examples_independence
9
+ # end
10
+ #
11
+ # before(:each) do
12
+ # define_test_subjects_for_inclusion_of(SimpleTokenAuthentication::ModuleUnderTest)
13
+ # end
14
+ #
15
+ # # spec examples...
16
+ #
17
+ # end
18
+ ##
19
+
20
+
21
+ # Returns a dummy class which includes the module under test.
22
+ def define_dummy_class_which_includes(module_under_test)
23
+ unless defined? SimpleTokenAuthentication::SomeClass
24
+ SimpleTokenAuthentication.const_set(:SomeClass, Class.new)
25
+ end
26
+ SimpleTokenAuthentication::SomeClass.send :include, module_under_test
27
+ SimpleTokenAuthentication::SomeClass
28
+ end
29
+
30
+ # Returns a dummy class which extends the module under test.
31
+ def define_dummy_class_which_extends(module_under_test)
32
+ unless defined? SimpleTokenAuthentication::SomeClass
33
+ SimpleTokenAuthentication.const_set(:SomeClass, Class.new)
34
+ end
35
+ SimpleTokenAuthentication::SomeClass.send :extend, module_under_test
36
+ SimpleTokenAuthentication::SomeClass
37
+ end
38
+
39
+ # Returns a dummy class which inherits from parent_class.
40
+ def define_dummy_class_child_of(parent_class)
41
+ unless defined? SimpleTokenAuthentication::SomeChildClass
42
+ SimpleTokenAuthentication.const_set(:SomeChildClass, Class.new(parent_class))
43
+ end
44
+ SimpleTokenAuthentication::SomeChildClass
45
+ end
46
+
47
+ def ensure_examples_independence
48
+ SimpleTokenAuthentication.send(:remove_const, :SomeClass)
49
+ SimpleTokenAuthentication.send(:remove_const, :SomeChildClass)
50
+ end
51
+
52
+ # Must be used in coordination with ensure_examples_independence
53
+ def define_test_subjects_for_inclusion_of(module_under_test)
54
+ klass = define_dummy_class_which_includes(module_under_test)
55
+ child_klass = define_dummy_class_child_of(klass)
56
+
57
+ # all specs must apply to classes which include the module and their children
58
+ @subjects = [klass, child_klass]
59
+ end
60
+
61
+ # Must be used in coordination with ensure_examples_independence
62
+ def define_test_subjects_for_extension_of(module_under_test)
63
+ klass = define_dummy_class_which_extends(module_under_test)
64
+ child_klass = define_dummy_class_child_of(klass)
65
+
66
+ # all specs must apply to classes which extend the module and their children
67
+ @subjects = [klass, child_klass]
68
+ end
69
+
70
+ def double_user_model
71
+ user = double()
72
+ stub_const('User', user)
73
+ allow(user).to receive(:name).and_return('User')
74
+ end
75
+
76
+ def double_super_admin_model
77
+ super_admin = double()
78
+ stub_const('SuperAdmin', super_admin)
79
+ allow(super_admin).to receive(:name).and_return('SuperAdmin')
80
+ end
@@ -0,0 +1,10 @@
1
+ RSpec.shared_examples 'an adapter' do
2
+
3
+ it 'responds to :base_class', public: true do
4
+ expect(@subject).to respond_to :base_class
5
+ end
6
+
7
+ it 'defines :base_class', public: true do
8
+ expect { @subject.base_class }.not_to raise_error
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ RSpec.shared_examples 'an authentication handler' do
2
+
3
+ let(:authentication_handler) { described_class.new() }
4
+
5
+ it 'responds to :authenticate_entity!', private: true do
6
+ expect(authentication_handler).to respond_to :authenticate_entity!
7
+ end
8
+ end
@@ -0,0 +1,28 @@
1
+ RSpec.shared_examples 'a configuration option' do |option_name|
2
+
3
+ before(:each) do
4
+ @get_option = option_name.to_sym # e.g. :sign_in_token
5
+ @set_option = option_name.+('=').to_sym # e.g. :sign_in_token=
6
+ end
7
+
8
+ it 'is accessible', private: true do
9
+ expect(@subject).to respond_to @get_option
10
+ expect(@subject).to respond_to @set_option
11
+ end
12
+
13
+ context 'once set' do
14
+
15
+ before(:each) do
16
+ @_original_value = @subject.send @get_option
17
+ @subject.send @set_option, 'custom header'
18
+ end
19
+
20
+ after(:each) do
21
+ @subject.send @set_option, @_original_value
22
+ end
23
+
24
+ it 'can be retrieved', private: true do
25
+ expect(@subject.send @get_option).to eq 'custom header'
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,8 @@
1
+ RSpec.shared_examples 'an entities manager' do
2
+
3
+ let(:entities_manager) { described_class.new() }
4
+
5
+ it 'responds to :find_or_create_entity', private: true do
6
+ expect(entities_manager).to respond_to :find_or_create_entity
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ RSpec.shared_examples 'a sign in handler' do
2
+
3
+ let(:sign_in_hanlder) { described_class.new() }
4
+
5
+ it 'responds to :sign_in', private: true do
6
+ expect(sign_in_hanlder).to respond_to :sign_in
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ RSpec.shared_examples 'a token comparator' do
2
+
3
+ let(:token_comparator) { described_class.new() }
4
+
5
+ it 'responds to :compare', public: true do
6
+ expect(token_comparator).to respond_to :compare
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ RSpec.shared_examples 'a token generator' do
2
+
3
+ let(:token_generator) { described_class.new() }
4
+
5
+ it 'responds to :generate_token', public: true do
6
+ expect(token_generator).to respond_to :generate_token
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ RSpec.shared_examples 'a token authentication handler' do
2
+
3
+ let(:token_authentication_handler) { described_class }
4
+
5
+ it 'responds to :handle_token_authentication_for', private: true do
6
+ expect(token_authentication_handler).to respond_to :handle_token_authentication_for
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,250 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: stn-simple_token_authentication
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.7.1
5
+ platform: ruby
6
+ authors:
7
+ - Gonzalo Bulnes Guilpain
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: actionmailer
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.6
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '5'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.6
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '5'
33
+ - !ruby/object:Gem::Dependency
34
+ name: actionpack
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: 3.2.6
40
+ - - <
41
+ - !ruby/object:Gem::Version
42
+ version: '5'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: 3.2.6
50
+ - - <
51
+ - !ruby/object:Gem::Version
52
+ version: '5'
53
+ - !ruby/object:Gem::Dependency
54
+ name: devise
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: '3.2'
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: '3.2'
67
+ - !ruby/object:Gem::Dependency
68
+ name: rspec
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ version: '3.0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ~>
79
+ - !ruby/object:Gem::Version
80
+ version: '3.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: inch
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: '0.4'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: '0.4'
95
+ - !ruby/object:Gem::Dependency
96
+ name: activerecord
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - '>='
100
+ - !ruby/object:Gem::Version
101
+ version: 3.2.6
102
+ - - <
103
+ - !ruby/object:Gem::Version
104
+ version: '5'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: 3.2.6
112
+ - - <
113
+ - !ruby/object:Gem::Version
114
+ version: '5'
115
+ - !ruby/object:Gem::Dependency
116
+ name: mongoid
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - '>='
120
+ - !ruby/object:Gem::Version
121
+ version: 3.1.0
122
+ - - <
123
+ - !ruby/object:Gem::Version
124
+ version: '5'
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: 3.1.0
132
+ - - <
133
+ - !ruby/object:Gem::Version
134
+ version: '5'
135
+ description:
136
+ email:
137
+ - gon.bulnes@gmail.com
138
+ executables: []
139
+ extensions: []
140
+ extra_rdoc_files: []
141
+ files:
142
+ - doc/README.md
143
+ - lib/simple_token_authentication/acts_as_token_authenticatable.rb
144
+ - lib/simple_token_authentication/acts_as_token_authentication_handler.rb
145
+ - lib/simple_token_authentication/adapter.rb
146
+ - lib/simple_token_authentication/adapters/active_record_adapter.rb
147
+ - lib/simple_token_authentication/adapters/mongoid_adapter.rb
148
+ - lib/simple_token_authentication/adapters/rails_adapter.rb
149
+ - lib/simple_token_authentication/adapters/rails_api_adapter.rb
150
+ - lib/simple_token_authentication/configuration.rb
151
+ - lib/simple_token_authentication/entities_manager.rb
152
+ - lib/simple_token_authentication/entity.rb
153
+ - lib/simple_token_authentication/fallback_authentication_handler.rb
154
+ - lib/simple_token_authentication/sign_in_handler.rb
155
+ - lib/simple_token_authentication/token_authentication_handler.rb
156
+ - lib/simple_token_authentication/token_comparator.rb
157
+ - lib/simple_token_authentication/token_generator.rb
158
+ - lib/simple_token_authentication/version.rb
159
+ - lib/simple_token_authentication.rb
160
+ - lib/tasks/simple_token_authentication_tasks.rake
161
+ - LICENSE
162
+ - Rakefile
163
+ - README.md
164
+ - spec/configuration/action_controller_callbacks_options_spec.rb
165
+ - spec/configuration/fallback_to_devise_option_spec.rb
166
+ - spec/configuration/header_names_option_spec.rb
167
+ - spec/configuration/sign_in_token_option_spec.rb
168
+ - spec/lib/simple_token_authentication/acts_as_token_authenticatable_spec.rb
169
+ - spec/lib/simple_token_authentication/acts_as_token_authentication_handler_spec.rb
170
+ - spec/lib/simple_token_authentication/adapter_spec.rb
171
+ - spec/lib/simple_token_authentication/adapters/active_record_adapter_spec.rb
172
+ - spec/lib/simple_token_authentication/adapters/mongoid_adapter_spec.rb
173
+ - spec/lib/simple_token_authentication/adapters/rails_adapter_spec.rb
174
+ - spec/lib/simple_token_authentication/adapters/rails_api_adapter_spec.rb
175
+ - spec/lib/simple_token_authentication/configuration_spec.rb
176
+ - spec/lib/simple_token_authentication/entities_manager_spec.rb
177
+ - spec/lib/simple_token_authentication/entity_spec.rb
178
+ - spec/lib/simple_token_authentication/errors_spec.rb
179
+ - spec/lib/simple_token_authentication/fallback_authentication_handler_spec.rb
180
+ - spec/lib/simple_token_authentication/sign_in_handler_spec.rb
181
+ - spec/lib/simple_token_authentication/token_authentication_handler_spec.rb
182
+ - spec/lib/simple_token_authentication/token_comparator_spec.rb
183
+ - spec/lib/simple_token_authentication/token_generator_spec.rb
184
+ - spec/lib/simple_token_authentication_spec.rb
185
+ - spec/spec_helper.rb
186
+ - spec/support/dummy_classes_helper.rb
187
+ - spec/support/spec_for_adapter.rb
188
+ - spec/support/spec_for_authentication_handler_interface.rb
189
+ - spec/support/spec_for_configuration_option_interface.rb
190
+ - spec/support/spec_for_entities_manager_interface.rb
191
+ - spec/support/spec_for_sign_in_handler_interface.rb
192
+ - spec/support/spec_for_token_comparator_interface.rb
193
+ - spec/support/spec_for_token_generator_interface.rb
194
+ - spec/support/specs_for_token_authentication_handler_interface.rb
195
+ homepage: https://github.com/gonzalo-bulnes/simple_token_authentication
196
+ licenses:
197
+ - GPLv3
198
+ metadata: {}
199
+ post_install_message:
200
+ rdoc_options: []
201
+ require_paths:
202
+ - lib
203
+ required_ruby_version: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - '>='
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ requirements: []
214
+ rubyforge_project:
215
+ rubygems_version: 2.0.14
216
+ signing_key:
217
+ specification_version: 4
218
+ summary: Simple (but safe) token authentication for Rails apps or API with Devise.
219
+ test_files:
220
+ - spec/configuration/action_controller_callbacks_options_spec.rb
221
+ - spec/configuration/fallback_to_devise_option_spec.rb
222
+ - spec/configuration/header_names_option_spec.rb
223
+ - spec/configuration/sign_in_token_option_spec.rb
224
+ - spec/lib/simple_token_authentication/acts_as_token_authenticatable_spec.rb
225
+ - spec/lib/simple_token_authentication/acts_as_token_authentication_handler_spec.rb
226
+ - spec/lib/simple_token_authentication/adapter_spec.rb
227
+ - spec/lib/simple_token_authentication/adapters/active_record_adapter_spec.rb
228
+ - spec/lib/simple_token_authentication/adapters/mongoid_adapter_spec.rb
229
+ - spec/lib/simple_token_authentication/adapters/rails_adapter_spec.rb
230
+ - spec/lib/simple_token_authentication/adapters/rails_api_adapter_spec.rb
231
+ - spec/lib/simple_token_authentication/configuration_spec.rb
232
+ - spec/lib/simple_token_authentication/entities_manager_spec.rb
233
+ - spec/lib/simple_token_authentication/entity_spec.rb
234
+ - spec/lib/simple_token_authentication/errors_spec.rb
235
+ - spec/lib/simple_token_authentication/fallback_authentication_handler_spec.rb
236
+ - spec/lib/simple_token_authentication/sign_in_handler_spec.rb
237
+ - spec/lib/simple_token_authentication/token_authentication_handler_spec.rb
238
+ - spec/lib/simple_token_authentication/token_comparator_spec.rb
239
+ - spec/lib/simple_token_authentication/token_generator_spec.rb
240
+ - spec/lib/simple_token_authentication_spec.rb
241
+ - spec/spec_helper.rb
242
+ - spec/support/dummy_classes_helper.rb
243
+ - spec/support/spec_for_adapter.rb
244
+ - spec/support/spec_for_authentication_handler_interface.rb
245
+ - spec/support/spec_for_configuration_option_interface.rb
246
+ - spec/support/spec_for_entities_manager_interface.rb
247
+ - spec/support/spec_for_sign_in_handler_interface.rb
248
+ - spec/support/spec_for_token_comparator_interface.rb
249
+ - spec/support/spec_for_token_generator_interface.rb
250
+ - spec/support/specs_for_token_authentication_handler_interface.rb