openstreetmap-website/test/controllers/api/versions_controller_test.rb
Andy Allan 0bbfe922ea Test the versions and capabilities api in various statuses
These both need to keep working, even when the rest of the api is
unavailable, since that's how we communicate that status with the
api clients.
2024-05-29 14:51:47 +01:00

62 lines
1.9 KiB
Ruby

require "test_helper"
module Api
class VersionsControllerTest < ActionDispatch::IntegrationTest
##
# test all routes which lead to this controller
def test_routes
assert_routing(
{ :path => "/api/versions", :method => :get },
{ :controller => "api/versions", :action => "show" }
)
assert_routing(
{ :path => "/api/versions.json", :method => :get },
{ :controller => "api/versions", :action => "show", :format => "json" }
)
assert_recognizes(
{ :controller => "api/versions", :action => "show" },
{ :path => "/api/versions", :method => :get }
)
assert_recognizes(
{ :controller => "api/versions", :action => "show", :format => "json" },
{ :path => "/api/versions.json", :method => :get }
)
end
def test_versions
get api_versions_path
assert_response :success
assert_select "osm[generator='#{Settings.generator}']", :count => 1 do
assert_select "api", :count => 1 do
assert_select "version", Settings.api_version
end
end
end
def test_versions_json
get api_versions_path, :params => { :format => "json" }
assert_response :success
js = ActiveSupport::JSON.decode(@response.body)
assert_not_nil js
assert_equal [Settings.api_version], js["api"]["versions"]
end
def test_no_version_in_root_element
get api_versions_path
assert_response :success
assert_select "osm[version]", :count => 0
end
def test_versions_available_while_offline
with_settings(:status => "api_offline") do
get api_versions_path
assert_response :success
assert_select "osm[generator='#{Settings.generator}']", :count => 1 do
assert_select "api", :count => 1 do
assert_select "version", Settings.api_version
end
end
end
end
end
end