From 0bbfe922eadabac6ca753e0a6d2e2410c69eae54 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Wed, 29 May 2024 14:45:35 +0100 Subject: [PATCH] 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. --- .../api/capabilities_controller_test.rb | 70 +++++++++++++++++++ .../api/versions_controller_test.rb | 12 ++++ 2 files changed, 82 insertions(+) diff --git a/test/controllers/api/capabilities_controller_test.rb b/test/controllers/api/capabilities_controller_test.rb index 46ebb6a37..7d2feed29 100644 --- a/test/controllers/api/capabilities_controller_test.rb +++ b/test/controllers/api/capabilities_controller_test.rb @@ -71,5 +71,75 @@ module Api assert_equal "online", js["api"]["status"]["gpx"] assert_equal Settings.imagery_blacklist.length, js["policy"]["imagery"]["blacklist"].length end + + def test_capabilities_api_readonly + with_settings(:status => "api_readonly") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='online']", :count => 1 + assert_select "status[api='readonly']", :count => 1 + assert_select "status[gpx='online']", :count => 1 + end + end + end + end + + def test_capabilities_api_offline + with_settings(:status => "api_offline") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='online']", :count => 1 + assert_select "status[api='offline']", :count => 1 + assert_select "status[gpx='online']", :count => 1 + end + end + end + end + + def test_capabilities_database_readonly + with_settings(:status => "database_readonly") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='readonly']", :count => 1 + assert_select "status[api='readonly']", :count => 1 + assert_select "status[gpx='readonly']", :count => 1 + end + end + end + end + + def test_capabilities_database_offline + with_settings(:status => "database_offline") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='offline']", :count => 1 + assert_select "status[api='offline']", :count => 1 + assert_select "status[gpx='offline']", :count => 1 + end + end + end + end + + def test_capabilities_gpx_offline + with_settings(:status => "gpx_offline") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='online']", :count => 1 + assert_select "status[api='online']", :count => 1 + assert_select "status[gpx='offline']", :count => 1 + end + end + end + end end end diff --git a/test/controllers/api/versions_controller_test.rb b/test/controllers/api/versions_controller_test.rb index 1c70831c9..d2b353a8e 100644 --- a/test/controllers/api/versions_controller_test.rb +++ b/test/controllers/api/versions_controller_test.rb @@ -46,5 +46,17 @@ module Api 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 -- 2.39.5