From: Tom Hughes Date: Sun, 26 Jul 2015 21:58:41 +0000 (+0100) Subject: Error if geocoder#search is called with no arguments X-Git-Tag: live~4042 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/93a617fec9febfb74040cab5bda0891075703ab1 Error if geocoder#search is called with no arguments --- diff --git a/app/controllers/geocoder_controller.rb b/app/controllers/geocoder_controller.rb index 2a3012892..20e4d7d1d 100644 --- a/app/controllers/geocoder_controller.rb +++ b/app/controllers/geocoder_controller.rb @@ -13,25 +13,32 @@ class GeocoderController < ApplicationController normalize_params @sources = [] + if params[:lat] && params[:lon] @sources.push "latlon" @sources.push "osm_nominatim_reverse" @sources.push "geonames_reverse" if defined?(GEONAMES_USERNAME) - elsif params[:query].match(/^\d{5}(-\d{4})?$/) - @sources.push "us_postcode" - @sources.push "osm_nominatim" - elsif params[:query].match(/^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i) - @sources.push "uk_postcode" - @sources.push "osm_nominatim" - elsif params[:query].match(/^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i) - @sources.push "ca_postcode" - @sources.push "osm_nominatim" - else - @sources.push "osm_nominatim" - @sources.push "geonames" if defined?(GEONAMES_USERNAME) + elsif params[:query] + if params[:query].match(/^\d{5}(-\d{4})?$/) + @sources.push "us_postcode" + @sources.push "osm_nominatim" + elsif params[:query].match(/^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i) + @sources.push "uk_postcode" + @sources.push "osm_nominatim" + elsif params[:query].match(/^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i) + @sources.push "ca_postcode" + @sources.push "osm_nominatim" + else + @sources.push "osm_nominatim" + @sources.push "geonames" if defined?(GEONAMES_USERNAME) + end end - render :layout => map_layout + if @sources.empty? + render :text => "", :status => :bad_request + else + render :layout => map_layout + end end def search_latlon diff --git a/test/controllers/geocoder_controller_test.rb b/test/controllers/geocoder_controller_test.rb index 483c37dba..bc75a9bfb 100644 --- a/test/controllers/geocoder_controller_test.rb +++ b/test/controllers/geocoder_controller_test.rb @@ -45,6 +45,16 @@ class GeocoderControllerTest < ActionController::TestCase ) end + ## + # Test identification with no arguments + def test_identify_error + get :search + assert_response :bad_request + + xhr :get, :search + assert_response :bad_request + end + ## # Test identification of basic lat/lon pairs def test_identify_latlon_basic