X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/664b5469124c6936733ce6544393f3883b86a32f..d6446b03e2f5d5079a870bdd7b963456dc12b485:/services/api/test/test_helper.rb diff --git a/services/api/test/test_helper.rb b/services/api/test/test_helper.rb index c99a57aaff..0255d8907d 100644 --- a/services/api/test/test_helper.rb +++ b/services/api/test/test_helper.rb @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: AGPL-3.0 -require 'update_permissions' +require_relative '../lib/update_permissions' ENV["RAILS_ENV"] = "test" unless ENV["NO_COVERAGE_TEST"] @@ -25,7 +25,6 @@ unless ENV["NO_COVERAGE_TEST"] SimpleCov.start do add_filter '/test/' add_filter 'initializers/secret_token' - add_filter 'initializers/omniauth' end rescue Exception => e $stderr.puts "SimpleCov unavailable (#{e}). Proceeding without." @@ -62,7 +61,7 @@ class ActiveSupport::TestCase include ArvadosTestSupport include CurrentApiClient - teardown do + setup do Thread.current[:api_client_ip_address] = nil Thread.current[:api_client_authorization] = nil Thread.current[:api_client_uuid] = nil @@ -72,6 +71,14 @@ class ActiveSupport::TestCase restore_configuration end + teardown do + # Confirm that any changed configuration doesn't include non-symbol keys + $arvados_config.keys.each do |conf_name| + conf = Rails.configuration.send(conf_name) + confirm_keys_as_symbols(conf, conf_name) if conf.respond_to?('keys') + end + end + def assert_equal(expect, *args) if expect.nil? assert_nil(*args) @@ -99,6 +106,14 @@ class ActiveSupport::TestCase end end + def confirm_keys_as_symbols(conf, conf_name) + assert(conf.is_a?(ActiveSupport::OrderedOptions), "#{conf_name} should be an OrderedOptions object") + conf.keys.each do |k| + assert(k.is_a?(Symbol), "Key '#{k}' on section '#{conf_name}' should be a Symbol") + confirm_keys_as_symbols(conf[k], "#{conf_name}.#{k}") if conf[k].respond_to?('keys') + end + end + def restore_configuration # Restore configuration settings changed during tests ConfigLoader.copy_into_config $arvados_config, Rails.configuration @@ -107,6 +122,7 @@ class ActiveSupport::TestCase def set_user_from_auth(auth_name) client_auth = api_client_authorizations(auth_name) + client_auth.user.forget_cached_group_perms Thread.current[:api_client_authorization] = client_auth Thread.current[:api_client] = client_auth.api_client Thread.current[:user] = client_auth.user @@ -163,21 +179,21 @@ class ActionController::TestCase end [:get, :post, :put, :patch, :delete].each do |method| - define_method method do |action, *args| + define_method method do |action, **kwargs| check_counter action # After Rails 5.0 upgrade, some params don't get properly serialized. # One case are filters: [['attr', 'op', 'val']] become [['attr'], ['op'], ['val']] # if not passed upstream as a JSON string. - if args[0].is_a?(Hash) && args[0][:params].is_a?(Hash) - args[0][:params].each do |key, _| + if kwargs[:params].is_a?(Hash) + kwargs[:params].each do |key, _| next if key == :exclude_script_versions # Job Reuse tests # Keys could be: :filters, :where, etc - if [Array, Hash].include?(args[0][:params][key].class) - args[0][:params][key] = SafeJSON.dump(args[0][:params][key]) + if [Array, Hash].include?(kwargs[:params][key].class) + kwargs[:params][key] = SafeJSON.dump(kwargs[:params][key]) end end end - super action, *args + super action, **kwargs end end