From 18cccae82f0b9c40ca6bd346be3bf930d531803d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 2 Jul 2010 08:12:00 +0200 Subject: [PATCH] Update bundler, Rails and improve tests for previous commit. --- CHANGELOG.rdoc | 1 + Gemfile.lock | 317 +++++++++++++++++++++ lib/devise/controllers/internal_helpers.rb | 2 +- lib/devise/mapping.rb | 12 +- test/mapping_test.rb | 16 +- test/rails_app/Rakefile | 2 +- test/rails_app/config/routes.rb | 2 +- 7 files changed, 342 insertions(+), 10 deletions(-) create mode 100644 Gemfile.lock diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc index cef62356..ba7b398b 100644 --- a/CHANGELOG.rdoc +++ b/CHANGELOG.rdoc @@ -8,6 +8,7 @@ * bug fix * Fix a bug in Devise::TestHelpers where current_user was returning a Response object for non active accounts * Devise should respect script_name and path_info contracts + * Fix a bug when accessing a path with (.:format) (by github.com/klacointe) == 1.1.rc2 diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..601b29cd --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,317 @@ +GIT + remote: git://github.com/datamapper/dm-core + revision: 40ff12e + specs: + dm-core (1.0.0) + addressable (~> 2.1) + extlib (~> 0.9.15) + dm-core (1.0.0) + addressable (~> 2.1) + extlib (~> 0.9.15) + +GIT + remote: git://github.com/datamapper/dm-migrations + revision: c72ba40 + specs: + dm-migrations (1.0.0) + dm-core (~> 1.0.0) + dm-migrations (1.0.0) + dm-core (~> 1.0.0) + +GIT + remote: git://github.com/datamapper/dm-rails + revision: 8bf64e7 + specs: + dm-rails (1.0.0) + actionpack (~> 3.0.0.beta3) + activesupport (~> 3.0.0.beta3) + dm-active_model (~> 1.0.0) + dm-core (~> 1.0.0) + railties (~> 3.0.0.beta3) + dm-rails (1.0.0) + actionpack (~> 3.0.0.beta3) + activesupport (~> 3.0.0.beta3) + dm-active_model (~> 1.0.0) + dm-core (~> 1.0.0) + railties (~> 3.0.0.beta3) + +GIT + remote: git://github.com/datamapper/dm-serializer + revision: 1f0f617 + specs: + dm-serializer (1.0.0) + dm-core (~> 1.0.0) + fastercsv (~> 1.5.3) + json_pure (~> 1.4.3) + dm-serializer (1.0.0) + dm-core (~> 1.0.0) + fastercsv (~> 1.5.3) + json_pure (~> 1.4.3) + +GIT + remote: git://github.com/datamapper/dm-sqlite-adapter + revision: 2a8562b + specs: + dm-sqlite-adapter (1.0.0) + dm-do-adapter (~> 1.0.0) + do_sqlite3 (~> 0.10.2) + dm-sqlite-adapter (1.0.0) + dm-do-adapter (~> 1.0.0) + do_sqlite3 (~> 0.10.2) + +GIT + remote: git://github.com/datamapper/dm-timestamps + revision: 791bad7 + specs: + dm-timestamps (1.0.0) + dm-core (~> 1.0.0) + dm-timestamps (1.0.0) + dm-core (~> 1.0.0) + +GIT + remote: git://github.com/datamapper/dm-validations + revision: c793091 + specs: + dm-validations (1.0.0) + dm-core (~> 1.0.0) + dm-validations (1.0.0) + dm-core (~> 1.0.0) + +GIT + remote: git://github.com/durran/mongoid.git + revision: 79b4d37 + specs: + mongoid (2.0.0.beta7) + activemodel (~> 3.0.0.beta) + bson (~> 1.0.1) + mongo (~> 1.0.1) + tzinfo (~> 0.3.22) + will_paginate (~> 3.0.pre) + mongoid (2.0.0.beta7) + activemodel (~> 3.0.0.beta) + bson (~> 1.0.1) + mongo (~> 1.0.1) + tzinfo (~> 0.3.22) + will_paginate (~> 3.0.pre) + +PATH + remote: /Users/jose/Work/github/rails + specs: + actionmailer (3.0.0.beta4) + actionpack (= 3.0.0.beta4) + mail (~> 2.2.3) + actionmailer (3.0.0.beta4) + actionpack (= 3.0.0.beta4) + mail (~> 2.2.3) + actionpack (3.0.0.beta4) + activemodel (= 3.0.0.beta4) + activesupport (= 3.0.0.beta4) + builder (~> 2.1.2) + erubis (~> 2.6.6) + i18n (~> 0.4.1) + rack (~> 1.2.1) + rack-test (~> 0.5.4) + tzinfo (~> 0.3.16) + actionpack (3.0.0.beta4) + activemodel (= 3.0.0.beta4) + activesupport (= 3.0.0.beta4) + builder (~> 2.1.2) + erubis (~> 2.6.6) + i18n (~> 0.4.1) + rack (~> 1.2.1) + rack-test (~> 0.5.4) + tzinfo (~> 0.3.16) + activemodel (3.0.0.beta4) + activesupport (= 3.0.0.beta4) + builder (~> 2.1.2) + i18n (~> 0.4.1) + activemodel (3.0.0.beta4) + activesupport (= 3.0.0.beta4) + builder (~> 2.1.2) + i18n (~> 0.4.1) + activerecord (3.0.0.beta4) + activemodel (= 3.0.0.beta4) + activesupport (= 3.0.0.beta4) + arel (~> 0.4.0) + tzinfo (~> 0.3.16) + activerecord (3.0.0.beta4) + activemodel (= 3.0.0.beta4) + activesupport (= 3.0.0.beta4) + arel (~> 0.4.0) + tzinfo (~> 0.3.16) + activeresource (3.0.0.beta4) + activemodel (= 3.0.0.beta4) + activesupport (= 3.0.0.beta4) + activeresource (3.0.0.beta4) + activemodel (= 3.0.0.beta4) + activesupport (= 3.0.0.beta4) + activesupport (3.0.0.beta4) + activesupport (3.0.0.beta4) + rails (3.0.0.beta4) + actionmailer (= 3.0.0.beta4) + actionpack (= 3.0.0.beta4) + activerecord (= 3.0.0.beta4) + activeresource (= 3.0.0.beta4) + activesupport (= 3.0.0.beta4) + bundler (>= 1.0.0.beta.2) + railties (= 3.0.0.beta4) + rails (3.0.0.beta4) + actionmailer (= 3.0.0.beta4) + actionpack (= 3.0.0.beta4) + activerecord (= 3.0.0.beta4) + activeresource (= 3.0.0.beta4) + activesupport (= 3.0.0.beta4) + bundler (>= 1.0.0.beta.2) + railties (= 3.0.0.beta4) + railties (3.0.0.beta4) + actionpack (= 3.0.0.beta4) + activesupport (= 3.0.0.beta4) + rake (>= 0.8.3) + thor (~> 0.13.7) + railties (3.0.0.beta4) + actionpack (= 3.0.0.beta4) + activesupport (= 3.0.0.beta4) + rake (>= 0.8.3) + thor (~> 0.13.7) + +GEM + remote: http://rubygems.org/ + specs: + abstract (1.0.0) + abstract (1.0.0) + addressable (2.1.2) + addressable (2.1.2) + arel (0.4.0) + activesupport (>= 3.0.0.beta) + arel (0.4.0) + activesupport (>= 3.0.0.beta) + bcrypt-ruby (2.1.2) + bcrypt-ruby (2.1.2) + bson (1.0.3) + bson (1.0.3) + bson_ext (1.0.1) + bson_ext (1.0.1) + builder (2.1.2) + builder (2.1.2) + columnize (0.3.1) + columnize (0.3.1) + data_objects (0.10.2) + addressable (~> 2.1) + data_objects (0.10.2) + addressable (~> 2.1) + dm-active_model (1.0.0) + activemodel (~> 3.0.0.beta3) + dm-core (~> 1.0.0) + dm-active_model (1.0.0) + activemodel (~> 3.0.0.beta3) + dm-core (~> 1.0.0) + dm-do-adapter (1.0.0) + data_objects (~> 0.10.1) + dm-core (~> 1.0.0) + dm-do-adapter (1.0.0) + data_objects (~> 0.10.1) + dm-core (~> 1.0.0) + do_sqlite3 (0.10.2) + data_objects (= 0.10.2) + do_sqlite3 (0.10.2) + data_objects (= 0.10.2) + erubis (2.6.6) + abstract (>= 1.0.0) + erubis (2.6.6) + abstract (>= 1.0.0) + extlib (0.9.15) + extlib (0.9.15) + fastercsv (1.5.3) + fastercsv (1.5.3) + i18n (0.4.1) + i18n (0.4.1) + json_pure (1.4.3) + json_pure (1.4.3) + linecache (0.43) + linecache (0.43) + mail (2.2.5) + activesupport (>= 2.3.6) + mime-types + treetop (>= 1.4.5) + mail (2.2.5) + activesupport (>= 2.3.6) + mime-types + treetop (>= 1.4.5) + mime-types (1.16) + mime-types (1.16) + mocha (0.9.8) + rake + mocha (0.9.8) + rake + mongo (1.0.3) + bson (= 1.0.3) + mongo (1.0.3) + bson (= 1.0.3) + nokogiri (1.4.2) + nokogiri (1.4.2) + polyglot (0.3.1) + polyglot (0.3.1) + rack (1.2.1) + rack (1.2.1) + rack-test (0.5.4) + rack (>= 1.0) + rack-test (0.5.4) + rack (>= 1.0) + rake (0.8.7) + rake (0.8.7) + ruby-debug (0.10.3) + columnize (>= 0.1) + ruby-debug-base (~> 0.10.3.0) + ruby-debug (0.10.3) + columnize (>= 0.1) + ruby-debug-base (~> 0.10.3.0) + ruby-debug-base (0.10.3) + linecache (>= 0.3) + ruby-debug-base (0.10.3) + linecache (>= 0.3) + sqlite3-ruby (1.3.0) + sqlite3-ruby (1.3.0) + thor (0.13.7) + thor (0.13.7) + treetop (1.4.8) + polyglot (>= 0.3.1) + treetop (1.4.8) + polyglot (>= 0.3.1) + tzinfo (0.3.22) + tzinfo (0.3.22) + warden (0.10.7) + rack (>= 1.0.0) + warden (0.10.7) + rack (>= 1.0.0) + webrat (0.7.0) + nokogiri (>= 1.2.0) + rack (>= 1.0) + rack-test (>= 0.5.3) + webrat (0.7.0) + nokogiri (>= 1.2.0) + rack (>= 1.0) + rack-test (>= 0.5.3) + will_paginate (3.0.pre) + will_paginate (3.0.pre) + +PLATFORMS + ruby + +DEPENDENCIES + bcrypt-ruby + bson_ext + dm-core (~> 1.0.0)! + dm-migrations (~> 1.0.0)! + dm-rails (~> 1.0.0)! + dm-serializer (~> 1.0.0)! + dm-sqlite-adapter (~> 1.0.0)! + dm-timestamps (~> 1.0.0)! + dm-validations (~> 1.0.0)! + mocha + mongo + mongoid! + rails! + ruby-debug (>= 0.10.3) + sqlite3-ruby + warden (= 0.10.7) + webrat (= 0.7.0) diff --git a/lib/devise/controllers/internal_helpers.rb b/lib/devise/controllers/internal_helpers.rb index d1f3ee54..a0deea75 100644 --- a/lib/devise/controllers/internal_helpers.rb +++ b/lib/devise/controllers/internal_helpers.rb @@ -39,7 +39,7 @@ module Devise # Attempt to find the mapped route for devise based on request path def devise_mapping @devise_mapping ||= begin - mapping = Devise::Mapping.find_by_path(request.path_info) + mapping = Devise::Mapping.find_by_path(request) mapping ||= Devise.mappings[Devise.default_scope] if Devise.use_default_scope mapping end diff --git a/lib/devise/mapping.rb b/lib/devise/mapping.rb index e7cc3a82..2f71f666 100644 --- a/lib/devise/mapping.rb +++ b/lib/devise/mapping.rb @@ -27,11 +27,15 @@ module Devise # Loop through all mappings looking for a map that matches with the requested # path (ie /users/sign_in). If a path prefix is given, it's taken into account. - def self.find_by_path(path) + def self.find_by_path(request) Devise.mappings.each_value do |mapping| - route = path.split("/")[mapping.segment_position] - route = route.sub(/\.\w+$/, '') unless route.nil? - return mapping if route && mapping.path == route.to_sym + route, extra = request.path_info.split("/")[mapping.segment_position, 2] + next unless route + + if !extra && (format = request.params[:format]) + route.sub!(/\.#{format}$/, '') + end + return mapping if mapping.path == route.to_sym end nil end diff --git a/test/mapping_test.rb b/test/mapping_test.rb index b19f1de6..e51d1877 100644 --- a/test/mapping_test.rb +++ b/test/mapping_test.rb @@ -1,6 +1,12 @@ require 'test_helper' +class FakeRequest < Struct.new(:path_info, :params) +end + class MappingTest < ActiveSupport::TestCase + def fake_request(path, params={}) + FakeRequest.new(path, params) + end test 'store options' do mapping = Devise.mappings[:user] @@ -37,12 +43,16 @@ class MappingTest < ActiveSupport::TestCase end test 'find mapping by path' do - assert_nil Devise::Mapping.find_by_path("/foo/bar") - assert_equal Devise.mappings[:user], Devise::Mapping.find_by_path("/users/session") + assert_nil Devise::Mapping.find_by_path(fake_request("/foo/bar")) + assert_equal Devise.mappings[:user], Devise::Mapping.find_by_path(fake_request("/users/session")) end test 'find mapping by customized path' do - assert_equal Devise.mappings[:admin], Devise::Mapping.find_by_path("/admin_area/session") + assert_equal Devise.mappings[:admin], Devise::Mapping.find_by_path(fake_request("/admin_area/session")) + end + + test 'find mapping by path strips format' do + assert_equal Devise.mappings[:user], Devise::Mapping.find_by_path(fake_request("/users.xml", :format => "xml")) end test 'find scope for a given object' do diff --git a/test/rails_app/Rakefile b/test/rails_app/Rakefile index 9cb20464..f47ab4d5 100644 --- a/test/rails_app/Rakefile +++ b/test/rails_app/Rakefile @@ -7,4 +7,4 @@ require 'rake' require 'rake/testtask' require 'rake/rdoctask' -Rails::Application.load_tasks +Rails.application.load_tasks diff --git a/test/rails_app/config/routes.rb b/test/rails_app/config/routes.rb index 1b7d8916..31478e8d 100644 --- a/test/rails_app/config/routes.rb +++ b/test/rails_app/config/routes.rb @@ -1,4 +1,4 @@ -Rails::Application.routes.draw do +Rails.application.routes.draw do resources :users, :only => [:index] do get :expire, :on => :member get :accept, :on => :member