mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
Sidekiq::Web add testcase for escaping
This commit is contained in:
parent
104bc8a9c8
commit
6db12e64c7
2 changed files with 61 additions and 0 deletions
|
@ -1,3 +1,7 @@
|
|||
HEAD
|
||||
-----------
|
||||
- Sidekiq::Web add tests for escaping job args and error messages. [#1299, lian]
|
||||
|
||||
2.16.0
|
||||
-----------
|
||||
|
||||
|
|
|
@ -265,6 +265,47 @@ class TestWeb < Sidekiq::Test
|
|||
assert_match /#{msg['args'][2]}/, last_response.body
|
||||
end
|
||||
|
||||
it 'escape job args and error messages' do
|
||||
# on /retries page
|
||||
params = add_xss_retry
|
||||
get '/retries'
|
||||
assert_equal 200, last_response.status
|
||||
assert_match /FailWorker/, last_response.body
|
||||
|
||||
assert last_response.body.include?( "fail message: <a>hello</a>" )
|
||||
assert !last_response.body.include?( "fail message: <a>hello</a>" )
|
||||
|
||||
assert last_response.body.include?( "args\">"<a>hello</a>"<" )
|
||||
assert !last_response.body.include?( "args\"><a>hello</a><" )
|
||||
|
||||
|
||||
# on /workers page
|
||||
Sidekiq.redis do |conn|
|
||||
identity = 'foo:1234-123abc:default'
|
||||
conn.sadd('workers', identity)
|
||||
conn.setex("worker:#{identity}:started", 10, Time.now.to_s)
|
||||
hash = {:queue => 'critical', :payload => { 'class' => "FailWorker", 'args' => ["<a>hello</a>"] }, :run_at => Time.now.to_i }
|
||||
conn.setex("worker:#{identity}", 10, Sidekiq.dump_json(hash))
|
||||
end
|
||||
|
||||
get '/workers'
|
||||
assert_equal 200, last_response.status
|
||||
assert_match /FailWorker/, last_response.body
|
||||
assert last_response.body.include?( "<a>hello</a>" )
|
||||
assert !last_response.body.include?( "<a>hello</a>" )
|
||||
|
||||
|
||||
# on /queues page
|
||||
params = add_xss_retry # sorry, don't know how to easily make this show up on queues page otherwise.
|
||||
post "/retries/#{job_params(*params)}", 'retry' => 'Retry'
|
||||
assert_equal 302, last_response.status
|
||||
|
||||
get '/queues/foo'
|
||||
assert_equal 200, last_response.status
|
||||
assert last_response.body.include?( "<a>hello</a>" )
|
||||
assert !last_response.body.include?( "<a>hello</a>" )
|
||||
end
|
||||
|
||||
it 'can show user defined tab' do
|
||||
begin
|
||||
Sidekiq::Web.tabs['Custom Tab'] = '/custom'
|
||||
|
@ -380,6 +421,22 @@ class TestWeb < Sidekiq::Test
|
|||
[msg, score]
|
||||
end
|
||||
|
||||
def add_xss_retry
|
||||
msg = { 'class' => 'FailWorker',
|
||||
'args' => ['<a>hello</a>'],
|
||||
'queue' => 'foo',
|
||||
'error_message' => 'fail message: <a>hello</a>',
|
||||
'error_class' => 'RuntimeError',
|
||||
'retry_count' => 0,
|
||||
'failed_at' => Time.now.utc,
|
||||
'jid' => 'f39af2a05e8f4b24dbc0f1e4'}
|
||||
score = Time.now.to_f
|
||||
Sidekiq.redis do |conn|
|
||||
conn.zadd('retry', score, Sidekiq.dump_json(msg))
|
||||
end
|
||||
[msg, score]
|
||||
end
|
||||
|
||||
def add_worker
|
||||
process_id = rand(1000)
|
||||
msg = "{\"queue\":\"default\",\"payload\":{\"retry\":true,\"queue\":\"default\",\"timeout\":20,\"backtrace\":5,\"class\":\"HardWorker\",\"args\":[\"bob\",10,5],\"jid\":\"2b5ad2b016f5e063a1c62872\"},\"run_at\":1361208995}"
|
||||
|
|
Loading…
Add table
Reference in a new issue