Adding some api tests for both the map and trackpoints requests. Needs some better bboxes. Adding new changeset controller fnctional tests.

This commit is contained in:
Shaun McDonald 2008-10-20 15:05:12 +00:00
parent 3e9ceb0c38
commit 138c20322d
2 changed files with 124 additions and 15 deletions

View file

@ -7,10 +7,20 @@ class ApiController; def rescue_action(e) raise e end; end
class ApiControllerTest < Test::Unit::TestCase
api_fixtures
def setup
@controller = ApiController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@badbigbbox = %w{ -0.1,-0.1,1.1,1.1 10,10,11,11 }
@badmalformedbbox = %w{ -0.1 hello S0.1,W0.1,N0.1,E0.1
10N2W10.1N2.1W }
@badlatmixedbbox = %w{}
@badlonmixedbbox = %w{}
@badlatlonoutboundsbbox = %w{ -190.2,-190.2,-190.1,-190.1 -190.1,89.9,-190,90 }
@goodbbox = %w{ -0.1,-0.1,0.1,0.1 51.1,-0.1,51.2,0
-0.1,%20-0.1,%200.1,%200.1 -0.1edcd,-0.1d,0.1,0.1 -0.1E,-0.1E,0.1S,0.1N }
end
def basic_authorization(user, pass)
@ -47,15 +57,11 @@ class ApiControllerTest < Test::Unit::TestCase
end
def test_map_without_bbox
get :map
["trackpoints", "map"].each do |tq|
get tq
assert_response :bad_request
assert_equal "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat", @response.body
end
def test_traces_without_bbox
get :trackpoints
assert_response :bad_request
assert_equal "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat", @response.body
end
def test_traces_page_less_than_0
@ -70,14 +76,56 @@ class ApiControllerTest < Test::Unit::TestCase
end
end
def test_traces_bbox_too_big
bad = %w{ -0.1,-0.1,1.1,1.1 10,10,11,11 }
bad.each do |bbox|
get :trackpoints, :bbox => bbox
assert_response :bad_request
def test_bbox_too_big
@badbigbbox.each do |bbox|
[ "trackpoints", "map" ].each do |tq|
get tq, :bbox => bbox
assert_response :bad_request, "The bbox:#{bbox} was expected to be too big"
assert_equal "The maximum bbox size is #{APP_CONFIG['max_request_area']}, and your request was too large. Either request a smaller area, or use planet.osm", @response.body
end
end
end
def test_bbox_malformed
@badmalformedbbox.each do |bbox|
[ "trackpoints", "map" ].each do |tq|
get tq, :bbox => bbox
assert_response :bad_request, "The bbox:#{bbox} was expected to be malformed"
assert_equal "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat", @response.body
end
end
end
def test_bbox_lon_mixedup
@badlonmixedbbox.each do |bbox|
[ "trackpoints", "map" ].each do |tq|
get tq, :bbox => bbox
assert_response :bad_request, "The bbox:#{bbox} was expected to have the longitude mixed up"
assert_equal "The minimum longitude must be less than the maximum longitude, but it wasn't", @response.body
end
end
end
def test_bbox_lat_mixedup
@badlatmixedbbox.each do |bbox|
["trackpoints", "map"].each do |tq|
get tq, :bbox => bbox
assert_response :bad_request, "The bbox:#{bbox} was expected to have the latitude mixed up"
assert_equal "The minimum latitude must be less than the maximum latitude, but it wasn't", @response.body
end
end
end
def test_latlon_outofbounds
@badlatlonoutboundsbbox.each do |bbox|
[ "trackpoints", "map" ].each do |tq|
get tq, :bbox => bbox
#print @request.to_yaml
assert_response :bad_request, "The bbox was expected to be out of range"
assert_equal "The latitudes must be between -90 an 90, and longitudes between -180 and 180", @response.body
end
end
end
def test_capabilities
get :capabilities

View file

@ -0,0 +1,61 @@
require File.dirname(__FILE__) + '/../test_helper'
require 'changeset_controller'
# Re-raise errors caught by the controller.
class ChangesetController; def rescue_action(e) raise e end; end
class ChangesetControllerTest < Test::Unit::TestCase
api_fixtures
def setup
@controller = ChangesetController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end
def basic_authorization(user, pass)
@request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}")
end
def content(c)
@request.env["RAW_POST_DATA"] = c.to_s
end
# -----------------------
# Test simple changeset creation
# -----------------------
def test_create
basic_authorization "test@openstreetmap.org", "test"
# Create the first user's changeset
content "<osm><changeset>" +
"<tag k='created_by' v='osm test suite checking changesets'/>" +
"</changeset></osm>"
put :create
assert_response :success, "Creation of changeset did not return sucess status"
newid = @response.body
end
def test_create_invalid
basic_authorization "test@openstreetmap.org", "test"
content "<osm><changeset></osm>"
put :create
end
def test_read
end
def test_close
end
def test_upload
end
end