if !@object
return render_404_if_no_object
end
- elsif !params[:user]
+ elsif !params[:user] || params[:user].empty?
raise ArgumentError.new "Required uuid or user"
elsif !params[:user]['email']
raise ArgumentError.new "Require user email"
when String
begin
@select = SafeJSON.load(params[:select])
- raise unless @select.is_a? Array or @select.nil?
+ raise unless @select.is_a? Array or @select.nil? or !@select
rescue
raise ArgumentError.new("Could not parse \"select\" param as an array")
end
class ActionController::TestCase
setup do
@test_counter = 0
- # Trying this:
- # https://stackoverflow.com/questions/44119273/rails-5-1-minitest-flattens-array-of-arrays-in-params
self.request.headers['Accept'] = 'application/json'
self.request.headers['Content-Type'] = 'application/json'
end
[:get, :post, :put, :patch, :delete].each do |method|
define_method method do |action, *args|
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, _|
+ 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])
+ end
+ end
+ end
super action, *args
end
end