- #end
-
- # MySQL and Postgres require that the C based functions are installed for
- # this test to work. More information is available from:
- # http://wiki.openstreetmap.org/wiki/Rails#Installing_the_quadtile_functions
- # or by looking at the readme in db/README
- def test_changes_simple
- Timecop.freeze(Time.parse('2010-04-03 10:55:00'))
- get :changes
- assert_response :success
- #print @response.body
- # As we have loaded the fixtures, we can assume that there are no
- # changes at the time we have frozen at
- now = Time.now.getutc
- hourago = now - 1.hour
- assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
- assert_select "changes[starttime='#{hourago.xmlschema}'][endtime='#{now.xmlschema}']", :count => 1
- end
- Timecop.return
- end
-
- def test_changes_zoom_invalid
- zoom_to_test = %w{ p -1 0 17 one two }
- zoom_to_test.each do |zoom|
- get :changes, :zoom => zoom
- assert_response :bad_request
- assert_equal @response.body, "Requested zoom is invalid, or the supplied start is after the end time, or the start duration is more than 24 hours"
- end
- end
-
- def test_changes_zoom_valid
- 1.upto(16) do |zoom|
- get :changes, :zoom => zoom
- assert_response :success
- # NOTE: there was a test here for the timing, but it was too sensitive to be a good test
- # and it was annoying.
- assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
- assert_select "changes", :count => 1
- end
- end
- end
-
- def test_hours_invalid
- invalid = %w{ -21 335 -1 0 25 26 100 one two three ping pong : }
- invalid.each do |hour|
- get :changes, :hours => hour
- assert_response :bad_request, "Problem with the hour: #{hour}"
- assert_equal @response.body, "Requested zoom is invalid, or the supplied start is after the end time, or the start duration is more than 24 hours", "Problem with the hour: #{hour}."
- end
- end
-
- def test_hours_valid
- 1.upto(24) do |hour|
- get :changes, :hours => hour
- assert_response :success
- end
- end
-
- def test_capabilities
- get :capabilities
- assert_response :success
- assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
- assert_select "api", :count => 1 do
- assert_select "version[minimum='#{API_VERSION}'][maximum='#{API_VERSION}']", :count => 1
- assert_select "area[maximum='#{MAX_REQUEST_AREA}']", :count => 1
- assert_select "tracepoints[per_page='#{TRACEPOINTS_PER_PAGE}']", :count => 1
- assert_select "changesets[maximum_elements='#{Changeset::MAX_ELEMENTS}']", :count => 1
- assert_select "status[database='online']", :count => 1
- assert_select "status[api='online']", :count => 1
- assert_select "status[gpx='online']", :count => 1
- end
- end
- end
-
- def test_permissions_anonymous
- get :permissions
- assert_response :success
- assert_select "osm > permissions", :count => 1 do
- assert_select "permission", :count => 0
- end
- end
-
- def test_permissions_basic_auth
- basic_authorization(users(:normal_user).email, "test")
- get :permissions
- assert_response :success
- assert_select "osm > permissions", :count => 1 do
- assert_select "permission", :count => ClientApplication.all_permissions.size
- ClientApplication.all_permissions.each do |p|
- assert_select "permission[name='#{p}']", :count => 1
- end
- end
- end
-
- def test_permissions_oauth
- @request.env["oauth.token"] = AccessToken.new do |token|
- # Just to test a few
- token.allow_read_prefs = true
- token.allow_write_api = true
- token.allow_read_gpx = false
- end
- get :permissions
- assert_response :success
- assert_select "osm > permissions", :count => 1 do
- assert_select "permission", :count => 2
- assert_select "permission[name='allow_read_prefs']", :count => 1
- assert_select "permission[name='allow_write_api']", :count => 1
- assert_select "permission[name='allow_read_gpx']", :count => 0
- end
- end