Skip to content

Commit

Permalink
Merge pull request #155 from shotgunsoftware/master
Browse files Browse the repository at this point in the history
 Allow empty parameters.
  • Loading branch information
pboling authored Jan 20, 2021
2 parents 6385e03 + de65c64 commit b5d8055
Show file tree
Hide file tree
Showing 2 changed files with 155 additions and 2 deletions.
10 changes: 8 additions & 2 deletions lib/oauth/client/helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def timestamp
end

def oauth_parameters
{
out = {
'oauth_body_hash' => options[:body_hash],
'oauth_callback' => options[:oauth_callback],
'oauth_consumer_key' => options[:consumer].key,
Expand All @@ -38,7 +38,13 @@ def oauth_parameters
'oauth_verifier' => options[:oauth_verifier],
'oauth_version' => (options[:oauth_version] || '1.0'),
'oauth_session_handle' => options[:oauth_session_handle]
}.reject { |k,v| v.to_s == "" }
}
allowed_empty_params = options[:allow_empty_params]
if allowed_empty_params != true && !allowed_empty_params.kind_of?(Array)
allowed_empty_params = allowed_empty_params == false ? [] : [allowed_empty_params]
end
out.select! { |k,v| v.to_s != '' || allowed_empty_params == true || allowed_empty_params.include?(k) }
out
end

def signature(extra_options = {})
Expand Down
147 changes: 147 additions & 0 deletions test/units/test_client_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
require File.expand_path('../../test_helper', __FILE__)

require 'oauth/client'

class ClientHelperTest < Minitest::Test

def setup
@consumer=OAuth::Consumer.new(
'consumer_key_86cad9', '5888bf0345e5d237',
{
:site=>"http://blabla.bla",
:proxy=>"http://user:password@proxy.bla:8080",
:request_token_path=>"/oauth/example/request_token.php",
:access_token_path=>"/oauth/example/access_token.php",
:authorize_path=>"/oauth/example/authorize.php",
:scheme=>:header,
:http_method=>:get
})
end

def test_oauth_parameters_allow_empty_params_default
helper = OAuth::Client::Helper.new(nil, {
:consumer => @consumer
})
helper.stub :timestamp, '0' do
helper.stub :nonce, 'nonce' do
expected = {
"oauth_consumer_key"=>"consumer_key_86cad9",
"oauth_signature_method"=>"HMAC-SHA1",
"oauth_timestamp"=>"0",
"oauth_nonce"=>"nonce",
"oauth_version"=>"1.0"
}
assert_equal expected, helper.oauth_parameters
end
end
end

def test_oauth_parameters_allow_empty_params_true
input = true
helper = OAuth::Client::Helper.new(nil, {
:consumer => @consumer,
:allow_empty_params => input
})
helper.stub :timestamp, '0' do
helper.stub :nonce, 'nonce' do
expected = {
"oauth_body_hash"=>nil,
"oauth_callback"=>nil,
"oauth_consumer_key"=>"consumer_key_86cad9",
"oauth_token"=>"",
"oauth_signature_method"=>"HMAC-SHA1",
"oauth_timestamp"=>"0",
"oauth_nonce"=>"nonce",
"oauth_verifier"=>nil,
"oauth_version"=>"1.0",
"oauth_session_handle"=>nil
}
assert_equal expected, helper.oauth_parameters
end
end
end

def test_oauth_parameters_allow_empty_params_false
input = false
helper = OAuth::Client::Helper.new(nil, {
:consumer => @consumer,
:allow_empty_params => input
})
helper.stub :timestamp, '0' do
helper.stub :nonce, 'nonce' do
expected = {
"oauth_consumer_key"=>"consumer_key_86cad9",
"oauth_signature_method"=>"HMAC-SHA1",
"oauth_timestamp"=>"0",
"oauth_nonce"=>"nonce",
"oauth_version"=>"1.0"
}
assert_equal expected, helper.oauth_parameters
end
end
end

def test_oauth_parameters_allow_empty_params_only_oauth_token_as_string
input = 'oauth_token'
helper = OAuth::Client::Helper.new(nil, {
:consumer => @consumer,
:allow_empty_params => input
})
helper.stub :timestamp, '0' do
helper.stub :nonce, 'nonce' do
expected = {
"oauth_consumer_key"=>"consumer_key_86cad9",
"oauth_token"=>"",
"oauth_signature_method"=>"HMAC-SHA1",
"oauth_timestamp"=>"0",
"oauth_nonce"=>"nonce",
"oauth_version"=>"1.0",
}
assert_equal expected, helper.oauth_parameters
end
end
end

def test_oauth_parameters_allow_empty_params_only_oauth_token_as_array
input = ['oauth_token']
helper = OAuth::Client::Helper.new(nil, {
:consumer => @consumer,
:allow_empty_params => input
})
helper.stub :timestamp, '0' do
helper.stub :nonce, 'nonce' do
expected = {
"oauth_consumer_key"=>"consumer_key_86cad9",
"oauth_token"=>"",
"oauth_signature_method"=>"HMAC-SHA1",
"oauth_timestamp"=>"0",
"oauth_nonce"=>"nonce",
"oauth_version"=>"1.0",
}
assert_equal expected, helper.oauth_parameters
end
end
end

def test_oauth_parameters_allow_empty_params_oauth_token_and_oauth_session_handle
input = ['oauth_token', 'oauth_session_handle']
helper = OAuth::Client::Helper.new(nil, {
:consumer => @consumer,
:allow_empty_params => input
})
helper.stub :timestamp, '0' do
helper.stub :nonce, 'nonce' do
expected = {
"oauth_consumer_key"=>"consumer_key_86cad9",
"oauth_token"=>"",
"oauth_signature_method"=>"HMAC-SHA1",
"oauth_timestamp"=>"0",
"oauth_nonce"=>"nonce",
"oauth_version"=>"1.0",
"oauth_session_handle"=>nil
}
assert_equal expected, helper.oauth_parameters
end
end
end
end

0 comments on commit b5d8055

Please sign in to comment.