Add JSON output to /api/0.6/capabilities

This commit is contained in:
Anton Khorev 2023-08-12 06:00:46 +03:00
parent f47eeb0632
commit 24d6b3c55f
2 changed files with 71 additions and 0 deletions

View file

@ -0,0 +1,44 @@
json.partial! "api/root_attributes"
json.api do
json.version do
json.minimum Settings.api_version
json.maximum Settings.api_version
end
json.area do
json.maximum Settings.max_request_area
end
json.note_area do
json.maximum Settings.max_note_request_area
end
json.tracepoints do
json.per_page Settings.tracepoints_per_page
end
json.waynodes do
json.maximum Settings.max_number_of_way_nodes
end
json.relationmembers do
json.maximum Settings.max_number_of_relation_members
end
json.changesets do
json.maximum_elements Changeset::MAX_ELEMENTS
json.default_query_limit Settings.default_changeset_query_limit
json.maximum_query_limit Settings.max_changeset_query_limit
end
json.timeout do
json.seconds Settings.api_timeout
end
json.status do
json.database @database_status
json.api @api_status
json.gpx @gpx_status
end
end
json.policy do
json.imagery do
json.blacklist(Settings.imagery_blacklist) do |url_regex|
json.regex url_regex.to_s
end
end
end

View file

@ -9,6 +9,10 @@ module Api
{ :path => "/api/capabilities", :method => :get },
{ :controller => "api/capabilities", :action => "show" }
)
assert_routing(
{ :path => "/api/capabilities.json", :method => :get },
{ :controller => "api/capabilities", :action => "show", :format => "json" }
)
assert_recognizes(
{ :controller => "api/capabilities", :action => "show" },
{ :path => "/api/0.6/capabilities", :method => :get }
@ -32,5 +36,28 @@ module Api
end
end
end
def test_capabilities_json
get api_capabilities_path, :params => { :format => "json" }
assert_response :success
js = ActiveSupport::JSON.decode(@response.body)
assert_not_nil js
assert_equal Settings.api_version, js["version"]
assert_equal Settings.generator, js["generator"]
assert_equal Settings.api_version, js["api"]["version"]["minimum"]
assert_equal Settings.api_version, js["api"]["version"]["maximum"]
assert_equal Settings.max_request_area, js["api"]["area"]["maximum"]
assert_equal Settings.max_note_request_area, js["api"]["note_area"]["maximum"]
assert_equal Settings.tracepoints_per_page, js["api"]["tracepoints"]["per_page"]
assert_equal Changeset::MAX_ELEMENTS, js["api"]["changesets"]["maximum_elements"]
assert_equal Settings.default_changeset_query_limit, js["api"]["changesets"]["default_query_limit"]
assert_equal Settings.max_changeset_query_limit, js["api"]["changesets"]["maximum_query_limit"]
assert_equal Settings.max_number_of_relation_members, js["api"]["relationmembers"]["maximum"]
assert_equal "online", js["api"]["status"]["database"]
assert_equal "online", js["api"]["status"]["api"]
assert_equal "online", js["api"]["status"]["gpx"]
assert_equal Settings.imagery_blacklist.length, js["policy"]["imagery"]["blacklist"].length
end
end
end