mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
Validate 'at' argument for Sidekiq::Client.push (#3407)
* Validate 'at' argument for Sidekiq::Client.push * item['at'] shouldn't actually be nil
This commit is contained in:
parent
28618ec44a
commit
d1510f9155
2 changed files with 6 additions and 0 deletions
|
@ -48,6 +48,7 @@ module Sidekiq
|
|||
# queue - the named queue to use, default 'default'
|
||||
# class - the worker class to call, required
|
||||
# args - an array of simple arguments to the perform method, must be JSON-serializable
|
||||
# at - timestamp to schedule the job (optional), must be Numeric (e.g. Time.now.to_f)
|
||||
# retry - whether to retry this job if it fails, default true or an integer number of retries
|
||||
# backtrace - whether to save any error backtrace, default false
|
||||
#
|
||||
|
@ -212,6 +213,7 @@ module Sidekiq
|
|||
raise(ArgumentError, "Job must be a Hash with 'class' and 'args' keys: { 'class' => SomeWorker, 'args' => ['bob', 1, :foo => 'bar'] }") unless item.is_a?(Hash) && item.has_key?('class'.freeze) && item.has_key?('args'.freeze)
|
||||
raise(ArgumentError, "Job args must be an Array") unless item['args'].is_a?(Array)
|
||||
raise(ArgumentError, "Job class must be either a Class or String representation of the class name") unless item['class'.freeze].is_a?(Class) || item['class'.freeze].is_a?(String)
|
||||
raise(ArgumentError, "Job 'at' must be a Numeric timestamp") if item.has_key?('at'.freeze) && !item['at'].is_a?(Numeric)
|
||||
#raise(ArgumentError, "Arguments must be native JSON types, see https://github.com/mperham/sidekiq/wiki/Best-Practices") unless JSON.load(JSON.dump(item['args'])) == item['args']
|
||||
|
||||
normalized_hash(item['class'.freeze])
|
||||
|
|
|
@ -23,6 +23,10 @@ class TestClient < Sidekiq::Test
|
|||
assert_raises ArgumentError do
|
||||
Sidekiq::Client.push('queue' => 'foo', 'class' => MyWorker, 'args' => 1)
|
||||
end
|
||||
|
||||
assert_raises ArgumentError do
|
||||
Sidekiq::Client.push('queue' => 'foo', 'class' => MyWorker, 'args' => [1], 'at' => Time.now)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue