casino 1.0.0 → 1.1.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 (40) hide show
  1. data.tar.gz.sig +0 -0
  2. data/Gemfile.lock +11 -5
  3. data/app/assets/images/logo.png +0 -0
  4. data/app/assets/images/logo@2x.png +0 -0
  5. data/app/assets/stylesheets/{casino/index.css.scss → casino.scss} +177 -90
  6. data/app/controllers/casino/sessions_controller.rb +5 -0
  7. data/app/controllers/casino/two_factor_authenticators_controller.rb +15 -0
  8. data/app/views/casino/{sessions → application}/_footer.html.erb +0 -0
  9. data/app/views/casino/application/_messages.html.erb +5 -0
  10. data/app/views/casino/sessions/index.html.erb +13 -2
  11. data/app/views/casino/sessions/logout.html.erb +3 -0
  12. data/app/views/casino/sessions/new.html.erb +1 -5
  13. data/app/views/casino/sessions/validate_otp.html.erb +17 -0
  14. data/app/views/casino/two_factor_authenticators/new.html.erb +32 -0
  15. data/app/views/layouts/application.html.erb +1 -0
  16. data/casino.gemspec +4 -1
  17. data/config/locales/en.yml +23 -0
  18. data/config/routes.rb +3 -0
  19. data/lib/casino/listener.rb +5 -0
  20. data/lib/casino/listener/login_credential_acceptor.rb +5 -0
  21. data/lib/casino/listener/second_factor_authentication_acceptor.rb +26 -0
  22. data/lib/casino/listener/two_factor_authenticator_activator.rb +23 -0
  23. data/lib/casino/listener/two_factor_authenticator_destroyer.rb +16 -0
  24. data/lib/casino/listener/two_factor_authenticator_overview.rb +11 -0
  25. data/lib/casino/listener/two_factor_authenticator_registrator.rb +11 -0
  26. data/lib/casino/version.rb +1 -1
  27. data/lib/generators/casino/install_generator.rb +1 -3
  28. data/lib/generators/casino/templates/casino_and_overrides.scss +12 -0
  29. data/spec/controllers/listener/login_credential_acceptor_spec.rb +18 -0
  30. data/spec/controllers/listener/second_factor_authentication_acceptor_spec.rb +74 -0
  31. data/spec/controllers/listener/two_factor_authenticator_activator_spec.rb +64 -0
  32. data/spec/controllers/listener/two_factor_authenticator_destroyer_spec.rb +40 -0
  33. data/spec/controllers/listener/two_factor_authenticator_overview_spec.rb +16 -0
  34. data/spec/controllers/listener/two_factor_authenticator_registrator_spec.rb +27 -0
  35. data/spec/controllers/sessions_controller_spec.rb +10 -0
  36. data/spec/controllers/two_factor_authenticators_controller_spec.rb +34 -0
  37. metadata +63 -8
  38. metadata.gz.sig +1 -0
  39. data/lib/generators/casino/templates/casino.css +0 -3
  40. data/lib/generators/casino/templates/casino.js +0 -1
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ describe CASino::Listener::TwoFactorAuthenticatorActivator do
4
+ include CASino::Engine.routes.url_helpers
5
+ let(:controller) { Struct.new(:cookies).new(cookies: {}) }
6
+ let(:listener) { described_class.new(controller) }
7
+ let(:flash) { ActionDispatch::Flash::FlashHash.new }
8
+
9
+ before(:each) do
10
+ controller.stub(:redirect_to)
11
+ controller.stub(:render)
12
+ controller.stub(:flash).and_return(flash)
13
+ end
14
+
15
+ describe '#user_not_logged_in' do
16
+ it 'redirects to the login page' do
17
+ controller.should_receive(:redirect_to).with(login_path)
18
+ listener.user_not_logged_in
19
+ end
20
+ end
21
+
22
+ describe '#two_factor_authenticator_activated' do
23
+ it 'redirects to the session overview' do
24
+ controller.should_receive(:redirect_to).with(sessions_path)
25
+ listener.two_factor_authenticator_activated
26
+ end
27
+
28
+ it 'adds a notice' do
29
+ listener.two_factor_authenticator_activated
30
+ flash[:notice].should == I18n.t('two_factor_authenticators.successfully_activated')
31
+ end
32
+ end
33
+
34
+ describe '#invalid_two_factor_authenticator' do
35
+ it 'redirects to the two-factor authenticator new page' do
36
+ controller.should_receive(:redirect_to).with(new_two_factor_authenticator_path)
37
+ listener.invalid_two_factor_authenticator
38
+ end
39
+
40
+ it 'adds a error message' do
41
+ listener.invalid_two_factor_authenticator
42
+ flash[:error].should == I18n.t('two_factor_authenticators.invalid_two_factor_authenticator')
43
+ end
44
+ end
45
+
46
+ describe '#invalid_one_time_password' do
47
+ let(:two_factor_authenticator) { Object.new }
48
+
49
+ it 'rerenders the new page' do
50
+ controller.should_receive(:render).with('new')
51
+ listener.invalid_one_time_password(two_factor_authenticator)
52
+ end
53
+
54
+ it 'adds a error message' do
55
+ listener.invalid_one_time_password(two_factor_authenticator)
56
+ flash[:error].should == I18n.t('two_factor_authenticators.invalid_one_time_password')
57
+ end
58
+
59
+ it 'assigns the two-factor authenticator' do
60
+ listener.invalid_one_time_password(two_factor_authenticator)
61
+ controller.instance_variable_get(:@two_factor_authenticator).should == two_factor_authenticator
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe CASino::Listener::TwoFactorAuthenticatorDestroyer do
4
+ include CASino::Engine.routes.url_helpers
5
+ let(:controller) { Struct.new(:cookies).new(cookies: {}) }
6
+ let(:listener) { described_class.new(controller) }
7
+ let(:flash) { ActionDispatch::Flash::FlashHash.new }
8
+
9
+ before(:each) do
10
+ controller.stub(:redirect_to)
11
+ controller.stub(:render)
12
+ controller.stub(:flash).and_return(flash)
13
+ end
14
+
15
+ describe '#user_not_logged_in' do
16
+ it 'redirects to the login page' do
17
+ controller.should_receive(:redirect_to).with(login_path)
18
+ listener.user_not_logged_in
19
+ end
20
+ end
21
+
22
+ describe '#two_factor_authenticator_destroyed' do
23
+ it 'redirects to the session overview' do
24
+ controller.should_receive(:redirect_to).with(sessions_path)
25
+ listener.two_factor_authenticator_destroyed
26
+ end
27
+
28
+ it 'adds a notice' do
29
+ listener.two_factor_authenticator_destroyed
30
+ flash[:notice].should == I18n.t('two_factor_authenticators.successfully_deleted')
31
+ end
32
+ end
33
+
34
+ describe '#invalid_two_factor_authenticator' do
35
+ it 'redirects to the session overview' do
36
+ controller.should_receive(:redirect_to).with(sessions_path)
37
+ listener.invalid_two_factor_authenticator
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe CASino::Listener::TwoFactorAuthenticatorOverview do
4
+ include CASino::Engine.routes.url_helpers
5
+ let(:controller) { Struct.new(:cookies).new(cookies: {}) }
6
+ let(:listener) { described_class.new(controller) }
7
+
8
+ describe '#two_factor_authenticators_found' do
9
+ let(:two_factor_authenticators) { [Object.new] }
10
+
11
+ it 'assigns the two-factor authenticators' do
12
+ listener.two_factor_authenticators_found(two_factor_authenticators)
13
+ controller.instance_variable_get(:@two_factor_authenticators).should == two_factor_authenticators
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe CASino::Listener::TwoFactorAuthenticatorRegistrator do
4
+ include CASino::Engine.routes.url_helpers
5
+ let(:controller) { Struct.new(:cookies).new(cookies: {}) }
6
+ let(:listener) { described_class.new(controller) }
7
+
8
+ before(:each) do
9
+ controller.stub(:redirect_to)
10
+ end
11
+
12
+ describe '#user_not_logged_in' do
13
+ it 'redirects to the login page' do
14
+ controller.should_receive(:redirect_to).with(login_path)
15
+ listener.user_not_logged_in
16
+ end
17
+ end
18
+
19
+ describe '#two_factor_authenticator_registered' do
20
+ let(:two_factor_authenticator) { Object.new }
21
+
22
+ it 'assigns the two-factor authenticator' do
23
+ listener.two_factor_authenticator_registered(two_factor_authenticator)
24
+ controller.instance_variable_get(:@two_factor_authenticator).should == two_factor_authenticator
25
+ end
26
+ end
27
+ end
@@ -17,6 +17,15 @@ describe CASino::SessionsController do
17
17
  end
18
18
  end
19
19
 
20
+ describe 'POST "validate_otp"' do
21
+ it 'calls the process method of the SecondFactorAuthenticatonAcceptor' do
22
+ CASinoCore::Processor::SecondFactorAuthenticationAcceptor.any_instance.should_receive(:process) do
23
+ @controller.render nothing: true
24
+ end
25
+ post :validate_otp
26
+ end
27
+ end
28
+
20
29
  describe 'GET "logout"' do
21
30
  it 'calls the process method of the Logout processor' do
22
31
  CASinoCore::Processor::Logout.any_instance.should_receive(:process) do |params, cookies, user_agent|
@@ -30,6 +39,7 @@ describe CASino::SessionsController do
30
39
 
31
40
  describe 'GET "index"' do
32
41
  it 'calls the process method of the SessionOverview processor' do
42
+ CASinoCore::Processor::TwoFactorAuthenticatorOverview.any_instance.should_receive(:process)
33
43
  CASinoCore::Processor::SessionOverview.any_instance.should_receive(:process)
34
44
  get :index
35
45
  end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe CASino::TwoFactorAuthenticatorsController do
4
+ describe 'GET "new"' do
5
+ it 'calls the process method of the TwoFactorAuthenticatorRegistrator' do
6
+ CASinoCore::Processor::TwoFactorAuthenticatorRegistrator.any_instance.should_receive(:process)
7
+ get :new
8
+ end
9
+ end
10
+
11
+ describe 'POST "create"' do
12
+ it 'calls the process method of the TwoFactorAuthenticatorActivator' do
13
+ CASinoCore::Processor::TwoFactorAuthenticatorActivator.any_instance.should_receive(:process) do
14
+ @controller.render nothing: true
15
+ end
16
+ post :create
17
+ end
18
+ end
19
+
20
+ describe 'DELETE "destroy"' do
21
+ let(:id) { '123' }
22
+ let(:tgt) { 'TGT-foobar' }
23
+ it 'calls the process method of the TwoFactorAuthenticatorDestroyer processor' do
24
+ request.cookies[:tgt] = tgt
25
+ CASinoCore::Processor::TwoFactorAuthenticatorDestroyer.any_instance.should_receive(:process) do |params, cookies, user_agent|
26
+ params[:id].should == id
27
+ cookies[:tgt].should == tgt
28
+ user_agent.should == request.user_agent
29
+ @controller.render nothing: true
30
+ end
31
+ delete :destroy, id: id
32
+ end
33
+ end
34
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: casino
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,34 @@ authors:
10
10
  - Samuel Sieg
11
11
  autorequire:
12
12
  bindir: bin
13
- cert_chain: []
13
+ cert_chain:
14
+ - !binary |-
15
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLakNDQWhLZ0F3SUJB
16
+ Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREE3TVEwd0N3WURWUVFEREFScGJt
17
+ WnYKTVJVd0V3WUtDWkltaVpQeUxHUUJHUllGY21KallYTXhFekFSQmdvSmtp
18
+ YUprL0lzWkFFWkZnTmpiMjB3SGhjTgpNVE13TWpBeU1qSXlOakkyV2hjTk1U
19
+ UXdNakF5TWpJeU5qSTJXakE3TVEwd0N3WURWUVFEREFScGJtWnZNUlV3CkV3
20
+ WUtDWkltaVpQeUxHUUJHUllGY21KallYTXhFekFSQmdvSmtpYUprL0lzWkFF
21
+ WkZnTmpiMjB3Z2dFaU1BMEcKQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dF
22
+ S0FvSUJBUURiZG1OeTRoZU5SZUc4TFhCMm5ha3JwQXJrcVd2dwpqVm54WE1M
23
+ UzZUNXFlYmZMV2FsMVBSb1BIemJoUkdtQTN1Q1lZWXVWdVh2NlYxVm1DdG5N
24
+ MG1qM1lnTjZoNjFECkQrV25oMUtUOHNVWWhSQjM2TU50bWllclMxRWNNeXZS
25
+ dWpYUkxrNngwNkFiejliSmFkeUVXN0RTNFZrcEN6OW4KZjlNRW5IcUlseVFC
26
+ UFAzekhzRHlNclRySUJ1dkRXUHIrYUFNS3FJWExqcVdlcDFFYmQvL3BwTmNT
27
+ aVZGODdzKwplMEphRmU3LzFhbHhJUEdPYWsvY0dFdm9tNDJUTEdkUEt5dTBY
28
+ amsybi9jV1RBbEJzaEZQT1FTM2hrczZSaDhzClZ6d2owTFF2VTByaFhKV0hO
29
+ YjZXdWpLaml3c3Z6U1RsR3lkTndJRU5wckpJQVFKc2FJWDNSUUluQWdNQkFB
30
+ R2oKT1RBM01Ba0dBMVVkRXdRQ01BQXdIUVlEVlIwT0JCWUVGS3lML1V6R1U4
31
+ SVpuZU9qcjczWFBDTFpKN1F1TUFzRwpBMVVkRHdRRUF3SUVzREFOQmdrcWhr
32
+ aUc5dzBCQVFVRkFBT0NBUUVBVUsrZnVraS9nVWhJbEpxTTI0TkNzL3kzClNv
33
+ cUNHUDB6K2M1ZytCTXUzc2MzeElOL21IK0hZbFBhRWE2V2o0YndtU1ZnVGhh
34
+ WjU0T3NtUnlaSUsxVm9BeW0KVDR6T3FDd3QwdHdUMmF6MVA2WFRoVk1FZWJM
35
+ alpEYnVRL29RelUvZkE2RFlxam5mbVlOdGdwNXFZWDZDS05Kegp3M1lSS3JL
36
+ Mlg2cVlZSGNISS9LTDV3YzFET24rVU5VNGVmbVAwVlZkNVVOZlI0MElCTE50
37
+ eFg5Nlg5WVRYT0hFCndRc0xpK0xqbnorVWFPUmsxZHhabGNYWUdjMzR3Rmcx
38
+ b1VSdnUwRzgvWXlIVUFtSVUvV0tyanIxYmdjZjFWUnYKUjRLRDFNblVWL3Y1
39
+ MDJwaU1sWG1qeE9XZGJLOHl2UUVIa3N1L3pqYkNqU3UrTTJrd0ZtV0dzeDVu
40
+ eCtWZHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
14
41
  date: 2013-02-08 00:00:00.000000000 Z
15
42
  dependencies:
16
43
  - !ruby/object:Gem::Dependency
@@ -132,7 +159,7 @@ dependencies:
132
159
  requirements:
133
160
  - - ~>
134
161
  - !ruby/object:Gem::Version
135
- version: 1.2.0
162
+ version: 1.3.0
136
163
  type: :runtime
137
164
  prerelease: false
138
165
  version_requirements: !ruby/object:Gem::Requirement
@@ -140,7 +167,7 @@ dependencies:
140
167
  requirements:
141
168
  - - ~>
142
169
  - !ruby/object:Gem::Version
143
- version: 1.2.0
170
+ version: 1.3.0
144
171
  description: CASino is a simple CAS (Central Authentication Service) server using
145
172
  CASinoCore as its backend.
146
173
  email:
@@ -161,25 +188,31 @@ files:
161
188
  - LICENSE.txt
162
189
  - README.md
163
190
  - Rakefile
191
+ - app/assets/images/logo.png
192
+ - app/assets/images/logo@2x.png
164
193
  - app/assets/images/rails.png
165
194
  - app/assets/javascripts/casino/index.js
166
195
  - app/assets/javascripts/casino/sessions.js.coffee
167
- - app/assets/stylesheets/casino/index.css.scss
196
+ - app/assets/stylesheets/casino.scss
168
197
  - app/assets/stylesheets/casino/normalize.css
169
198
  - app/controllers/casino/api/v1/tickets_controller.rb
170
199
  - app/controllers/casino/application_controller.rb
171
200
  - app/controllers/casino/proxy_tickets_controller.rb
172
201
  - app/controllers/casino/service_tickets_controller.rb
173
202
  - app/controllers/casino/sessions_controller.rb
203
+ - app/controllers/casino/two_factor_authenticators_controller.rb
174
204
  - app/helpers/application_helper.rb
175
205
  - app/helpers/casino/sessions_helper.rb
176
206
  - app/helpers/service_tickets_helper.rb
207
+ - app/views/casino/application/_footer.html.erb
208
+ - app/views/casino/application/_messages.html.erb
177
209
  - app/views/casino/service_tickets/validate.text.erb
178
- - app/views/casino/sessions/_footer.html.erb
179
210
  - app/views/casino/sessions/index.html.erb
180
211
  - app/views/casino/sessions/logout.html.erb
181
212
  - app/views/casino/sessions/new.html.erb
182
213
  - app/views/casino/sessions/service_not_allowed.html.erb
214
+ - app/views/casino/sessions/validate_otp.html.erb
215
+ - app/views/casino/two_factor_authenticators/new.html.erb
183
216
  - app/views/layouts/application.html.erb
184
217
  - casino-public_cert.pem
185
218
  - casino.gemspec
@@ -199,15 +232,19 @@ files:
199
232
  - lib/casino/listener/login_credential_requestor.rb
200
233
  - lib/casino/listener/logout.rb
201
234
  - lib/casino/listener/proxy_ticket_provider.rb
235
+ - lib/casino/listener/second_factor_authentication_acceptor.rb
202
236
  - lib/casino/listener/session_destroyer.rb
203
237
  - lib/casino/listener/session_overview.rb
204
238
  - lib/casino/listener/ticket_validator.rb
239
+ - lib/casino/listener/two_factor_authenticator_activator.rb
240
+ - lib/casino/listener/two_factor_authenticator_destroyer.rb
241
+ - lib/casino/listener/two_factor_authenticator_overview.rb
242
+ - lib/casino/listener/two_factor_authenticator_registrator.rb
205
243
  - lib/casino/version.rb
206
244
  - lib/generators/casino/install_generator.rb
207
245
  - lib/generators/casino/templates/README
208
246
  - lib/generators/casino/templates/cas.yml
209
- - lib/generators/casino/templates/casino.css
210
- - lib/generators/casino/templates/casino.js
247
+ - lib/generators/casino/templates/casino_and_overrides.scss
211
248
  - lib/generators/casino/templates/casino_core.rb
212
249
  - lib/generators/casino/templates/database.yml
213
250
  - lib/tasks/.gitkeep
@@ -225,12 +262,18 @@ files:
225
262
  - spec/controllers/listener/login_credential_requestor_spec.rb
226
263
  - spec/controllers/listener/logout_spec.rb
227
264
  - spec/controllers/listener/proxy_ticket_provider_spec.rb
265
+ - spec/controllers/listener/second_factor_authentication_acceptor_spec.rb
228
266
  - spec/controllers/listener/session_destroyer_spec.rb
229
267
  - spec/controllers/listener/session_overview_spec.rb
230
268
  - spec/controllers/listener/ticket_validator_spec.rb
269
+ - spec/controllers/listener/two_factor_authenticator_activator_spec.rb
270
+ - spec/controllers/listener/two_factor_authenticator_destroyer_spec.rb
271
+ - spec/controllers/listener/two_factor_authenticator_overview_spec.rb
272
+ - spec/controllers/listener/two_factor_authenticator_registrator_spec.rb
231
273
  - spec/controllers/proxy_tickets_controller_spec.rb
232
274
  - spec/controllers/service_tickets_controller_spec.rb
233
275
  - spec/controllers/sessions_controller_spec.rb
276
+ - spec/controllers/two_factor_authenticators_controller_spec.rb
234
277
  - spec/dummy/Rakefile
235
278
  - spec/dummy/app/assets/javascripts/application.js
236
279
  - spec/dummy/app/assets/stylesheets/application.css
@@ -283,12 +326,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
283
326
  - - ! '>='
284
327
  - !ruby/object:Gem::Version
285
328
  version: '0'
329
+ segments:
330
+ - 0
331
+ hash: 2789463019795338295
286
332
  required_rubygems_version: !ruby/object:Gem::Requirement
287
333
  none: false
288
334
  requirements:
289
335
  - - ! '>='
290
336
  - !ruby/object:Gem::Version
291
337
  version: '0'
338
+ segments:
339
+ - 0
340
+ hash: 2789463019795338295
292
341
  requirements: []
293
342
  rubyforge_project:
294
343
  rubygems_version: 1.8.24
@@ -302,12 +351,18 @@ test_files:
302
351
  - spec/controllers/listener/login_credential_requestor_spec.rb
303
352
  - spec/controllers/listener/logout_spec.rb
304
353
  - spec/controllers/listener/proxy_ticket_provider_spec.rb
354
+ - spec/controllers/listener/second_factor_authentication_acceptor_spec.rb
305
355
  - spec/controllers/listener/session_destroyer_spec.rb
306
356
  - spec/controllers/listener/session_overview_spec.rb
307
357
  - spec/controllers/listener/ticket_validator_spec.rb
358
+ - spec/controllers/listener/two_factor_authenticator_activator_spec.rb
359
+ - spec/controllers/listener/two_factor_authenticator_destroyer_spec.rb
360
+ - spec/controllers/listener/two_factor_authenticator_overview_spec.rb
361
+ - spec/controllers/listener/two_factor_authenticator_registrator_spec.rb
308
362
  - spec/controllers/proxy_tickets_controller_spec.rb
309
363
  - spec/controllers/service_tickets_controller_spec.rb
310
364
  - spec/controllers/sessions_controller_spec.rb
365
+ - spec/controllers/two_factor_authenticators_controller_spec.rb
311
366
  - spec/dummy/Rakefile
312
367
  - spec/dummy/app/assets/javascripts/application.js
313
368
  - spec/dummy/app/assets/stylesheets/application.css
@@ -0,0 +1 @@
1
+ GfPf�9ǀۏ8�dH5�~?�
@@ -1,3 +0,0 @@
1
- /*
2
- *= require casino
3
- */
@@ -1 +0,0 @@
1
- //=require casino