casino 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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