sparkly-auth 1.1.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,12 @@
1
+ * 1.2.0 - 02-15-2011
2
+ * Made the login key, password and password confirmation attr_accessible for mass assignment.
3
+ This has the side effect of making all other attributes attr_protected, which is more secure, but may
4
+ require you to explicitly declare some attributes as attr_accessible if you want to mass assign them.
5
+
6
+ * 1.1.1 - 09-24-2010
7
+ * Some minor refactoring
8
+ * Upgraded test environment from Rails 3.0.0.rc to Rails 3.0.0 and resolved some complications from that
9
+
1
10
  * 1.1.0 - 08-13-2010
2
11
  * Official support for Rails 3 (tested against rails-3.0.0.rc)
3
12
  * Better internal design
@@ -0,0 +1,19 @@
1
+ RAILS 2
2
+ 1. Create a new RVM gemset for Rails2.
3
+ 2. gem install rails -v=2.3.9 && gem install sc-core-ext sqlite3
4
+ 3. gem install jeweler
5
+ 4. cd spec_env/rails2 && rake db:migrate && rake db:tes:prepare && cd ../..
6
+ 5. gem install rspec -v=1.3.2
7
+ gem install rspec-rails --version "= 1.3.2"
8
+ gem install webrat --version "= 0.7.1"
9
+ gem install genspec --version "= 0.1.1"
10
+ gem install email_spec --version "= 0.6.2"
11
+ 6. rake && cucumber
12
+
13
+ RAILS 3
14
+
15
+ 1. Create a new RVM gemset for Rails3.
16
+ 2. cd spec_env/rails3 && bundle install && cd ../..
17
+ 3. gem install jeweler
18
+ 4. ./rake3 db:migrate && ./rake3 db:test:prepare
19
+ 5. rake && cucumber
@@ -79,6 +79,15 @@ you should be ready to go!
79
79
 
80
80
  You should take a quick gander at config/initializers/sparkly_authentication.rb just to see what's in there.
81
81
 
82
+ == mass assignments
83
+
84
+ For added security, part of Sparkly's core behavior is to declare the login key (usually :email or :login),
85
+ the :password and the :password_confirmation attributes on the authenticated model as +attr_accessible+. This
86
+ allows you to mass assign those attributes, but disables mass assignment on any others. That means you'll have
87
+ to explicitly call +attr_accessible+ on any additional attributes you wish to mass assign. For more information
88
+ (and the reason Sparkly is doing this), see the excellent Railscast on the subject by Ryan Bates at
89
+ http://media.railscasts.com/videos/026_hackers_love_mass_assignment.mov .
90
+
82
91
  == routes
83
92
 
84
93
  Unless you disable them, Sparkly Auth will automatically generate a set of routes for its controllers. Run
data/Rakefile CHANGED
@@ -16,7 +16,8 @@ begin
16
16
  gem.add_development_dependency 'genspec', '>= 0.1.1'
17
17
  gem.add_development_dependency 'email_spec', '>= 0.6.2'
18
18
  # WHY does jeweler insist on using test/* files? THEY DON'T EXIST!
19
- gem.test_files = FileList['spec/**/*'] + FileList['spec_env/**/*'] + FileList['features/**/*']
19
+ # gem.test_files = FileList['spec/**/*'] + FileList['spec_env/**/*'] + FileList['features/**/*']
20
+ gem.files = `git ls-files`.split(/\n/)
20
21
  end
21
22
  Jeweler::GemcutterTasks.new
22
23
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.2.1
@@ -10,6 +10,28 @@ module Auth
10
10
  :password_history_length, :base_controller_name, :account_lock_duration,
11
11
  :password_format, :password_format_message, :minimum_password_length, :behaviors, :behavior_classes,
12
12
  :to => :configuration
13
+
14
+ def routing_proc
15
+ proc do
16
+ Auth.configuration.authenticated_models.each do |model|
17
+ catch :missing do
18
+ begin
19
+ model.name # if an error is going to occur due to missing model, it'll happen here.
20
+ rescue NameError
21
+ # we rescue silently because the user's already been warned (during startup).
22
+ throw :missing
23
+ end
24
+
25
+ resource model.name.underscore, :model => model.name,
26
+ :controller => model.accounts_controller do
27
+ resource :session, :controller => model.sessions_controller, :model => model.name
28
+ match '/login', :to => "#{model.sessions_controller}#new", :as => "login"
29
+ match '/logout', :to => "#{model.sessions_controller}#destroy", :as => "logout"
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
13
35
 
14
36
  def configuration
15
37
  @configuration ||= Auth::Configuration.new
@@ -38,7 +38,6 @@ module Auth
38
38
  validates_presence_of :secret_confirmation, :if => :secret_changed?
39
39
  validates_presence_of :persistence_token
40
40
  validates_uniqueness_of :persistence_token, :if => :persistence_token_changed?
41
- attr_protected :secret, :secret_confirmation
42
41
  include Auth::Behavior::Core::PasswordMethods
43
42
 
44
43
  validate do |password|
@@ -57,10 +56,10 @@ module Auth
57
56
  model_config.target.instance_eval do
58
57
  has_many :passwords, :dependent => :destroy, :as => :authenticatable, :autosave => true
59
58
 
60
- attr_protected :password, :password_confirmation
61
59
  validates_presence_of sparkly_config.key
62
60
  validates_uniqueness_of sparkly_config.key
63
61
  validates_presence_of :password
62
+ attr_accessible sparkly_config.key, :password, :password_confirmation
64
63
 
65
64
  include Auth::Behavior::Core::AuthenticatedModelMethods
66
65
 
@@ -6,6 +6,10 @@ module Auth::Behavior::Core::ControllerExtensions
6
6
  helper_method :new_session_path, :current_user
7
7
  hide_action :current_user, :find_current_session, :require_login, :require_logout, :login!, :logout!,
8
8
  :redirect_back_or_default, :new_session_path, :store_location
9
+
10
+ # we'll still check, but only if single_access_token is omitted
11
+ # TODO see if this is safe, and if there's a smarter approach
12
+ skip_before_filter :verify_authenticity_token
9
13
  end
10
14
  end
11
15
 
@@ -15,6 +19,8 @@ module Auth::Behavior::Core::ControllerExtensions
15
19
  flash[:notice] = @session_timeout_message || Auth.login_required_message
16
20
  login_path = Auth.default_login_path ? send(Auth.default_login_path) : Auth.default_destination
17
21
  redirect_to login_path
22
+ else
23
+ verify_authenticity_token unless current_user && params[:single_access_token]
18
24
  end
19
25
  end
20
26
 
@@ -23,6 +29,7 @@ module Auth::Behavior::Core::ControllerExtensions
23
29
  end
24
30
 
25
31
  def require_logout
32
+ verify_authenticity_token
26
33
  redirect_back_or_default Auth.default_destination, Auth.logout_required_message if current_user
27
34
  end
28
35
 
@@ -18,6 +18,21 @@ module Auth::Behavior::Core::PasswordMethods
18
18
  alias_method_chain :secret_confirmation=, :encryption
19
19
  end
20
20
  end
21
+
22
+ def single_access_token
23
+ current = super
24
+ return current if current
25
+ if authenticatable
26
+ # authenticatable.passwords.last == self
27
+ if (previous = authenticatable.passwords[-1]) != self
28
+ if previous && previous.single_access_token
29
+ return self.single_access_token = previous.single_access_token
30
+ end
31
+ end
32
+ end
33
+
34
+ nil
35
+ end
21
36
 
22
37
  def expired?
23
38
  authenticatable.password_expired?
@@ -3,12 +3,15 @@
3
3
 
4
4
  base_path = File.expand_path(File.join(File.dirname(__FILE__), '..'))
5
5
  def add_to_load_path(path, load_once = false)
6
+ load_paths = ActiveSupport::Dependencies.respond_to?(:autoload_paths) ? ActiveSupport::Dependencies.autoload_paths : ActiveSupport::Dependencies.load_paths
7
+ load_once_paths = ActiveSupport::Dependencies.respond_to?(:autoload_once_paths) ? ActiveSupport::Dependencies.autoload_once_paths : ActiveSupport::Dependencies.load_once_paths
8
+
6
9
  $LOAD_PATH << path
7
- ActiveSupport::Dependencies.load_paths << path
10
+ load_paths << path
8
11
  if load_once
9
- ActiveSupport::Dependencies.load_once_paths << path
12
+ load_once_paths << path
10
13
  else
11
- ActiveSupport::Dependencies.load_once_paths.delete path
14
+ load_once_paths.delete path
12
15
  end
13
16
  end
14
17
 
@@ -1,37 +1,3 @@
1
1
  if Auth.generate_routes?
2
- Rails.application.routes.draw do
3
- Auth.configuration.authenticated_models.each do |model|
4
- catch :missing do
5
- begin
6
- model.name # if an error is going to occur due to missing model, it'll happen here.
7
- rescue NameError
8
- # we rescue silently because the user's already been warned (during startup).
9
- throw :missing
10
- end
11
-
12
- resource model.name.underscore, :model => model.name,
13
- :controller => model.accounts_controller do
14
- resource :session, :controller => model.sessions_controller, :model => model.name
15
- match '/login', :to => "#{model.sessions_controller}#new", :as => "login"
16
- match '/logout', :to => "#{model.sessions_controller}#destroy", :as => "logout"
17
- end
18
- # map.resource model.name.underscore,
19
- # :controller => model.accounts_controller,
20
- # :requirements => { :model => model.name } do |model_res|
21
- # model_res.resource :session, :controller => model.sessions_controller, :requirements => { :model => model.name }
22
-
23
- # map some shorthand routes
24
- # model_res.login "login",
25
- # :controller => model.sessions_controller,
26
- # :action => 'new',
27
- # :requirements => { :model => model.name }
28
-
29
- # model_res.logout "logout",
30
- # :controller => model.sessions_controller,
31
- # :action => 'destroy',
32
- # :requirements => { :model => model.name }
33
- # end
34
- end
35
- end
36
- end
2
+ Rails.application.routes.draw &Auth.routing_proc
37
3
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sparkly-auth}
8
- s.version = "1.1.0"
8
+ s.version = "1.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Colin MacKenzie IV"]
12
- s.date = %q{2010-08-13}
12
+ s.date = %q{2011-06-05}
13
13
  s.description = %q{As fate would have it, I found other authentication solutions unable to suit my needs. So I rolled my own, totally supporting Rails 2 AND 3.}
14
14
  s.email = %q{sinisterchipmunk@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
21
21
  ".document",
22
22
  ".gitignore",
23
23
  "HISTORY.txt",
24
+ "HOW_TO_TEST.txt",
24
25
  "LICENSE",
25
26
  "README.rdoc",
26
27
  "Rakefile",
@@ -182,7 +183,7 @@ Gem::Specification.new do |s|
182
183
  "spec_env/rails2/lib/tasks/cucumber.rake",
183
184
  "spec_env/rails2/lib/tasks/rspec.rake",
184
185
  "spec_env/rails2/lib/tasks/sparkly_migration.rb",
185
- "spec_env/rails2/log/development.log",
186
+ "spec_env/rails2/log/test.log",
186
187
  "spec_env/rails2/public/404.html",
187
188
  "spec_env/rails2/public/422.html",
188
189
  "spec_env/rails2/public/500.html",
@@ -286,295 +287,29 @@ Gem::Specification.new do |s|
286
287
  s.homepage = %q{http://www.thoughtsincomputation.com}
287
288
  s.rdoc_options = ["--charset=UTF-8"]
288
289
  s.require_paths = ["lib"]
289
- s.rubygems_version = %q{1.3.7}
290
+ s.rubygems_version = %q{1.5.0}
290
291
  s.summary = %q{User authentication with Sparkles!}
291
292
  s.test_files = [
292
- "spec/behaviors",
293
- "spec/behaviors/core",
294
- "spec/behaviors/core/controller_extensions_spec.rb",
293
+ "spec/behaviors/core/controller_extensions_spec.rb",
295
294
  "spec/behaviors/core_spec.rb",
296
- "spec/behaviors/remember_me",
297
295
  "spec/behaviors/remember_me/configuration_spec.rb",
298
296
  "spec/behaviors/remember_me_spec.rb",
299
- "spec/controllers",
300
297
  "spec/controllers/application_controller_spec.rb",
301
- "spec/generators",
302
298
  "spec/generators/sanity_checks_spec.rb",
303
299
  "spec/generators/sparkly_spec.rb",
304
- "spec/lib",
305
- "spec/lib/auth",
306
300
  "spec/lib/auth/configuration_spec.rb",
307
301
  "spec/lib/auth/model_spec.rb",
308
302
  "spec/lib/auth_spec.rb",
309
- "spec/lib/hacks",
310
303
  "spec/lib/hacks/rename_attributes_spec.rb",
311
- "spec/mocks",
312
- "spec/mocks/models",
313
304
  "spec/mocks/models/user.rb",
314
305
  "spec/routes_spec.rb",
315
306
  "spec/spec2_helper.rb",
316
307
  "spec/spec3_helper.rb",
317
308
  "spec/spec_helper.rb",
318
- "spec/views_spec.rb",
319
- "spec_env/rails2",
320
- "spec_env/rails2/app",
321
- "spec_env/rails2/app/controllers",
322
- "spec_env/rails2/app/controllers/application_controller.rb",
323
- "spec_env/rails2/app/helpers",
324
- "spec_env/rails2/app/helpers/application_helper.rb",
325
- "spec_env/rails2/app/models",
326
- "spec_env/rails2/app/models/user.rb",
327
- "spec_env/rails2/app/views",
328
- "spec_env/rails2/app/views/application",
329
- "spec_env/rails2/app/views/application/not_found.html.erb",
330
- "spec_env/rails2/app/views/layouts",
331
- "spec_env/rails2/app/views/layouts/application.html.erb",
332
- "spec_env/rails2/config",
333
- "spec_env/rails2/config/boot.rb",
334
- "spec_env/rails2/config/cucumber.yml",
335
- "spec_env/rails2/config/database.yml",
336
- "spec_env/rails2/config/environment.rb",
337
- "spec_env/rails2/config/environments",
338
- "spec_env/rails2/config/environments/cucumber.rb",
339
- "spec_env/rails2/config/environments/development.rb",
340
- "spec_env/rails2/config/environments/production.rb",
341
- "spec_env/rails2/config/environments/test.rb",
342
- "spec_env/rails2/config/initializers",
343
- "spec_env/rails2/config/initializers/backtrace_silencers.rb",
344
- "spec_env/rails2/config/initializers/inflections.rb",
345
- "spec_env/rails2/config/initializers/mime_types.rb",
346
- "spec_env/rails2/config/initializers/new_rails_defaults.rb",
347
- "spec_env/rails2/config/initializers/session_store.rb",
348
- "spec_env/rails2/config/initializers/sparkly_authentication.rb",
349
- "spec_env/rails2/config/locales",
350
- "spec_env/rails2/config/locales/en.yml",
351
- "spec_env/rails2/config/routes.rb",
352
- "spec_env/rails2/db",
353
- "spec_env/rails2/db/development.sqlite3",
354
- "spec_env/rails2/db/migrate",
355
- "spec_env/rails2/db/migrate/001_create_sparkly_passwords.rb",
356
- "spec_env/rails2/db/migrate/002_create_sparkly_remembered_tokens.rb",
357
- "spec_env/rails2/db/migrate/003_add_confirmed_to_sparkly_passwords.rb",
358
- "spec_env/rails2/db/migrate/20100607103543_create_users.rb",
359
- "spec_env/rails2/db/migrate/20100609152058_add_email_to_users.rb",
360
- "spec_env/rails2/db/schema.rb",
361
- "spec_env/rails2/db/seeds.rb",
362
- "spec_env/rails2/db/test.sqlite3",
363
- "spec_env/rails2/doc",
364
- "spec_env/rails2/doc/README_FOR_APP",
365
- "spec_env/rails2/doc/sparkly_authentication.txt",
366
- "spec_env/rails2/features",
367
- "spec_env/rails2/features/support",
368
- "spec_env/rails2/features/support/env.rb",
369
- "spec_env/rails2/lib",
370
- "spec_env/rails2/lib/tasks",
371
- "spec_env/rails2/lib/tasks/cucumber.rake",
372
- "spec_env/rails2/lib/tasks/rspec.rake",
373
- "spec_env/rails2/lib/tasks/sparkly_migration.rb",
374
- "spec_env/rails2/log",
375
- "spec_env/rails2/log/cucumber.log",
376
- "spec_env/rails2/log/development.log",
377
- "spec_env/rails2/log/test.log",
378
- "spec_env/rails2/public",
379
- "spec_env/rails2/public/404.html",
380
- "spec_env/rails2/public/422.html",
381
- "spec_env/rails2/public/500.html",
382
- "spec_env/rails2/public/favicon.ico",
383
- "spec_env/rails2/public/images",
384
- "spec_env/rails2/public/images/rails.png",
385
- "spec_env/rails2/public/javascripts",
386
- "spec_env/rails2/public/javascripts/application.js",
387
- "spec_env/rails2/public/javascripts/controls.js",
388
- "spec_env/rails2/public/javascripts/dragdrop.js",
389
- "spec_env/rails2/public/javascripts/effects.js",
390
- "spec_env/rails2/public/javascripts/prototype.js",
391
- "spec_env/rails2/public/robots.txt",
392
- "spec_env/rails2/Rakefile",
393
- "spec_env/rails2/README.1ST",
394
- "spec_env/rails2/rerun.txt",
395
- "spec_env/rails2/script",
396
- "spec_env/rails2/script/about",
397
- "spec_env/rails2/script/autospec",
398
- "spec_env/rails2/script/console",
399
- "spec_env/rails2/script/cucumber",
400
- "spec_env/rails2/script/dbconsole",
401
- "spec_env/rails2/script/destroy",
402
- "spec_env/rails2/script/generate",
403
- "spec_env/rails2/script/performance",
404
- "spec_env/rails2/script/performance/benchmarker",
405
- "spec_env/rails2/script/performance/profiler",
406
- "spec_env/rails2/script/plugin",
407
- "spec_env/rails2/script/runner",
408
- "spec_env/rails2/script/server",
409
- "spec_env/rails2/script/spec",
410
- "spec_env/rails2/spec",
411
- "spec_env/rails2/spec/controllers",
412
- "spec_env/rails2/spec/controllers/sparkly_user_sessions_controller_spec.rb",
413
- "spec_env/rails2/spec/rcov.opts",
414
- "spec_env/rails2/spec/spec.opts",
415
- "spec_env/rails2/spec/spec_helper.rb",
416
- "spec_env/rails2/test",
417
- "spec_env/rails2/test/fixtures",
418
- "spec_env/rails2/test/fixtures/users.yml",
419
- "spec_env/rails2/test/performance",
420
- "spec_env/rails2/test/performance/browsing_test.rb",
421
- "spec_env/rails2/test/test_helper.rb",
422
- "spec_env/rails2/test/unit",
423
- "spec_env/rails2/test/unit/user_test.rb",
424
- "spec_env/rails2/tmp",
425
- "spec_env/rails2/tmp/cache",
426
- "spec_env/rails2/tmp/pids",
427
- "spec_env/rails2/tmp/sessions",
428
- "spec_env/rails2/tmp/sockets",
429
- "spec_env/rails2/vendor",
430
- "spec_env/rails2/vendor/gems",
431
- "spec_env/rails2/vendor/gems/sparkly-auth-bootstrap-1.0.0",
432
- "spec_env/rails2/vendor/gems/sparkly-auth-bootstrap-1.0.0/app",
433
- "spec_env/rails2/vendor/gems/sparkly-auth-bootstrap-1.0.0/generators",
434
- "spec_env/rails2/vendor/gems/sparkly-auth-bootstrap-1.0.0/generators/sparkly",
435
- "spec_env/rails2/vendor/gems/sparkly-auth-bootstrap-1.0.0/generators/sparkly/sparkly_generator.rb",
436
- "spec_env/rails2/vendor/gems/sparkly-auth-bootstrap-1.0.0/lib",
437
- "spec_env/rails2/vendor/gems/sparkly-auth-bootstrap-1.0.0/lib/sparkly-auth-bootstrap.rb",
438
- "spec_env/rails2/vendor/gems/sparkly-auth-bootstrap-1.0.0/rails",
439
- "spec_env/rails2/vendor/gems/sparkly-auth-bootstrap-1.0.0/rails/init.rb",
440
- "spec_env/rails2/vendor/gems/sparkly-auth-bootstrap-1.0.0/sparkly-auth-bootstrap.gemspec",
441
- "spec_env/rails3",
442
- "spec_env/rails3/app",
443
- "spec_env/rails3/app/controllers",
444
- "spec_env/rails3/app/controllers/application_controller.rb",
445
- "spec_env/rails3/app/helpers",
446
- "spec_env/rails3/app/helpers/application_helper.rb",
447
- "spec_env/rails3/app/mailers",
448
- "spec_env/rails3/app/models",
449
- "spec_env/rails3/app/models/user.rb",
450
- "spec_env/rails3/app/views",
451
- "spec_env/rails3/app/views/application",
452
- "spec_env/rails3/app/views/application/not_found.html.erb",
453
- "spec_env/rails3/app/views/layouts",
454
- "spec_env/rails3/app/views/layouts/application.html.erb",
455
- "spec_env/rails3/config",
456
- "spec_env/rails3/config/application.rb",
457
- "spec_env/rails3/config/boot.rb",
458
- "spec_env/rails3/config/cucumber.yml",
459
- "spec_env/rails3/config/database.yml",
460
- "spec_env/rails3/config/environment.rb",
461
- "spec_env/rails3/config/environments",
462
- "spec_env/rails3/config/environments/development.rb",
463
- "spec_env/rails3/config/environments/production.rb",
464
- "spec_env/rails3/config/environments/spec.rb",
465
- "spec_env/rails3/config/environments/test.rb",
466
- "spec_env/rails3/config/initializers",
467
- "spec_env/rails3/config/initializers/backtrace_silencers.rb",
468
- "spec_env/rails3/config/initializers/inflections.rb",
469
- "spec_env/rails3/config/initializers/mime_types.rb",
470
- "spec_env/rails3/config/initializers/secret_token.rb",
471
- "spec_env/rails3/config/initializers/session_store.rb",
472
- "spec_env/rails3/config/initializers/sparkly_authentication.rb",
473
- "spec_env/rails3/config/locales",
474
- "spec_env/rails3/config/locales/en.yml",
475
- "spec_env/rails3/config/routes.rb",
476
- "spec_env/rails3/config.ru",
477
- "spec_env/rails3/db",
478
- "spec_env/rails3/db/development.sqlite3",
479
- "spec_env/rails3/db/migrate",
480
- "spec_env/rails3/db/migrate/001_create_sparkly_passwords.rb",
481
- "spec_env/rails3/db/migrate/002_create_sparkly_remembered_tokens.rb",
482
- "spec_env/rails3/db/migrate/20100810132843_create_users.rb",
483
- "spec_env/rails3/db/schema.rb",
484
- "spec_env/rails3/db/seeds.rb",
485
- "spec_env/rails3/db/test.sqlite3",
486
- "spec_env/rails3/doc",
487
- "spec_env/rails3/doc/README_FOR_APP",
488
- "spec_env/rails3/doc/sparkly_authentication.txt",
489
- "spec_env/rails3/features",
490
- "spec_env/rails3/features/support",
491
- "spec_env/rails3/features/support/env.rb",
492
- "spec_env/rails3/Gemfile",
493
- "spec_env/rails3/Gemfile.lock",
494
- "spec_env/rails3/lib",
495
- "spec_env/rails3/lib/sparkly",
496
- "spec_env/rails3/lib/sparkly/bootstrap.rb",
497
- "spec_env/rails3/lib/tasks",
498
- "spec_env/rails3/lib/tasks/cucumber.rake",
499
- "spec_env/rails3/lib/tasks/sparkly_migration.rb",
500
- "spec_env/rails3/log",
501
- "spec_env/rails3/log/development.log",
502
- "spec_env/rails3/log/spec.log",
503
- "spec_env/rails3/log/test.log",
504
- "spec_env/rails3/public",
505
- "spec_env/rails3/public/404.html",
506
- "spec_env/rails3/public/422.html",
507
- "spec_env/rails3/public/500.html",
508
- "spec_env/rails3/public/favicon.ico",
509
- "spec_env/rails3/public/images",
510
- "spec_env/rails3/public/images/rails.png",
511
- "spec_env/rails3/public/javascripts",
512
- "spec_env/rails3/public/javascripts/application.js",
513
- "spec_env/rails3/public/javascripts/controls.js",
514
- "spec_env/rails3/public/javascripts/dragdrop.js",
515
- "spec_env/rails3/public/javascripts/effects.js",
516
- "spec_env/rails3/public/javascripts/prototype.js",
517
- "spec_env/rails3/public/javascripts/rails.js",
518
- "spec_env/rails3/public/robots.txt",
519
- "spec_env/rails3/public/stylesheets",
520
- "spec_env/rails3/Rakefile",
521
- "spec_env/rails3/README",
522
- "spec_env/rails3/script",
523
- "spec_env/rails3/script/cucumber",
524
- "spec_env/rails3/script/rails",
525
- "spec_env/rails3/spec",
526
- "spec_env/rails3/spec/controllers",
527
- "spec_env/rails3/spec/helpers",
528
- "spec_env/rails3/test",
529
- "spec_env/rails3/test/fixtures",
530
- "spec_env/rails3/test/fixtures/users.yml",
531
- "spec_env/rails3/test/functional",
532
- "spec_env/rails3/test/integration",
533
- "spec_env/rails3/test/performance",
534
- "spec_env/rails3/test/performance/browsing_test.rb",
535
- "spec_env/rails3/test/test_helper.rb",
536
- "spec_env/rails3/test/unit",
537
- "spec_env/rails3/test/unit/user_test.rb",
538
- "spec_env/rails3/tmp",
539
- "spec_env/rails3/tmp/cache",
540
- "spec_env/rails3/tmp/pids",
541
- "spec_env/rails3/tmp/sessions",
542
- "spec_env/rails3/tmp/sockets",
543
- "spec_env/rails3/vendor",
544
- "spec_env/rails3/vendor/plugins",
545
- "spec_env/rails3/webrat.log",
546
- "features/create_sparkly_account.feature",
547
- "features/delete_sparkly_account.feature",
548
- "features/edit_sparkly_account.feature",
549
- "features/lock_abused_sparkly_account.feature",
550
- "features/login_sparkly_session.feature",
551
- "features/logout_sparkly_session.feature",
552
- "features/setup",
553
- "features/setup/sparkly.rb",
554
- "features/show_sparkly_account.feature",
555
- "features/sparkly_session_timeout.feature",
556
- "features/step_definitions",
557
- "features/step_definitions/account",
558
- "features/step_definitions/account/account_steps.rb",
559
- "features/step_definitions/account/brief_steps.rb",
560
- "features/step_definitions/debug_steps.rb",
561
- "features/step_definitions/email_steps.rb",
562
- "features/step_definitions/session",
563
- "features/step_definitions/session/brief_steps.rb",
564
- "features/step_definitions/session/logged_in_steps.rb",
565
- "features/step_definitions/session/login_steps.rb",
566
- "features/step_definitions/session/logout_steps.rb",
567
- "features/step_definitions/session_steps.rb",
568
- "features/step_definitions/sparkly_auth_steps.rb",
569
- "features/step_definitions/web_steps.rb",
570
- "features/support",
571
- "features/support/env.rb",
572
- "features/support/paths.rb",
573
- "features/support/sparkly_helpers.rb"
309
+ "spec/views_spec.rb"
574
310
  ]
575
311
 
576
312
  if s.respond_to? :specification_version then
577
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
578
313
  s.specification_version = 3
579
314
 
580
315
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then