From 3167e5659918f4679d48bcc7f1fda4c3e4ef096f Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Tue, 18 Nov 2014 10:08:35 -0500 Subject: [PATCH] 4533: Add more tests for disabling reset feature in config file. --- .../functional/database_controller_test.rb | 15 +++++++++++++ .../test/integration/database_reset_test.rb | 21 +++++++++++++++++++ services/api/test/test_helper.rb | 4 ++++ 3 files changed, 40 insertions(+) create mode 100644 services/api/test/integration/database_reset_test.rb diff --git a/services/api/test/functional/database_controller_test.rb b/services/api/test/functional/database_controller_test.rb index 7909e60b0c..1953aa1034 100644 --- a/services/api/test/functional/database_controller_test.rb +++ b/services/api/test/functional/database_controller_test.rb @@ -3,6 +3,12 @@ require 'test_helper' class DatabaseControllerTest < ActionController::TestCase include CurrentApiClient + teardown do + restore_configuration + # We made configuration changes here that affect routing. + Rails.application.reload_routes! + end + test "reset fails with non-admin token" do authorize_with :active post :reset @@ -18,6 +24,15 @@ class DatabaseControllerTest < ActionController::TestCase ENV['RAILS_ENV'] = env_was end + test "reset fails when not configured" do + Rails.configuration.enable_remote_database_reset = false + Rails.application.reload_routes! + authorize_with :admin + assert_raise ActionController::RoutingError do + post :reset + end + end + test "reset succeeds with admin token" do new_uuid = nil act_as_system_user do diff --git a/services/api/test/integration/database_reset_test.rb b/services/api/test/integration/database_reset_test.rb new file mode 100644 index 0000000000..84f8a19a77 --- /dev/null +++ b/services/api/test/integration/database_reset_test.rb @@ -0,0 +1,21 @@ +require 'test_helper' + +class DatabaseResetTest < ActionDispatch::IntegrationTest + teardown do + restore_configuration + # We made configuration changes here that affect routing. + Rails.application.reload_routes! + end + + test "reset fails when not configured" do + Rails.configuration.enable_remote_database_reset = false + Rails.application.reload_routes! + post '/database/reset', {}, auth(:admin) + assert_response 404 + end + + test "reset fails with non-admin token" do + post '/database/reset', {}, auth(:active) + assert_response 403 + end +end diff --git a/services/api/test/test_helper.rb b/services/api/test/test_helper.rb index d59b44926f..216dd2d02d 100644 --- a/services/api/test/test_helper.rb +++ b/services/api/test/test_helper.rb @@ -49,6 +49,10 @@ class ActiveSupport::TestCase Thread.current[:api_client_uuid] = nil Thread.current[:api_client] = nil Thread.current[:user] = nil + restore_configuration + end + + def restore_configuration # Restore configuration settings changed during tests $application_config.each do |k,v| if k.match /^[^.]*$/ -- 2.30.2