Skip to content

Commit 481eaa8

Browse files
Merge pull request #14 from cadenza-tech/refactor-authorize-params
Refactor OmniAuth::Strategies::QiitaV2#authorize_params
2 parents 98860f3 + 9813d00 commit 481eaa8

File tree

2 files changed

+50
-4
lines changed

2 files changed

+50
-4
lines changed

lib/omniauth/strategies/qiita_v2.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,11 @@ def callback_url
6767

6868
def authorize_params
6969
super.tap do |params|
70-
['scope', 'state'].each do |v|
71-
params[v.to_sym] = request.params[v] if request.params[v]
70+
options[:authorize_options].each do |key|
71+
params[key] = request.params[key.to_s] unless empty?(request.params[key.to_s])
7272
end
7373
params[:scope] ||= DEFAULT_SCOPE
74-
session['omniauth.state'] = params[:state] if params[:state]
74+
session['omniauth.state'] = params[:state] unless empty?(params[:state])
7575
end
7676
end
7777

@@ -86,10 +86,14 @@ def build_access_token
8686
def prune!(hash)
8787
hash.delete_if do |_, value|
8888
prune!(value) if value.is_a?(Hash)
89-
value.nil? || (value.respond_to?(:empty?) && value.empty?)
89+
empty?(value)
9090
end
9191
end
9292

93+
def empty?(value)
94+
value.nil? || (value.respond_to?(:empty?) && value.empty?)
95+
end
96+
9397
def base_params
9498
{
9599
headers: {

spec/omniauth/strategies/qiita_v2_spec.rb

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,4 +417,46 @@
417417
expect(hash).to eq({ a: 1, c: 'test' })
418418
end
419419
end
420+
421+
describe '#empty?' do
422+
it 'returns true for nil values' do
423+
expect(strategy.send(:empty?, nil)).to be(true)
424+
end
425+
426+
it 'returns true for empty strings' do
427+
expect(strategy.send(:empty?, '')).to be(true)
428+
end
429+
430+
it 'returns true for empty arrays' do
431+
expect(strategy.send(:empty?, [])).to be(true)
432+
end
433+
434+
it 'returns true for empty hashes' do
435+
expect(strategy.send(:empty?, {})).to be(true)
436+
end
437+
438+
it 'returns false for non-empty strings' do
439+
expect(strategy.send(:empty?, 'value')).to be(false)
440+
end
441+
442+
it 'returns false for non-empty arrays' do
443+
expect(strategy.send(:empty?, [1, 2, 3])).to be(false)
444+
end
445+
446+
it 'returns false for non-empty hashes' do
447+
expect(strategy.send(:empty?, { key: 'value' })).to be(false)
448+
end
449+
450+
it 'returns false for zero values' do
451+
expect(strategy.send(:empty?, 0)).to be(false)
452+
end
453+
454+
it 'returns false for false values' do
455+
expect(strategy.send(:empty?, false)).to be(false)
456+
end
457+
458+
it 'returns false for objects that do not respond to empty?' do
459+
expect(strategy.send(:empty?, 123)).to be(false)
460+
end
461+
end
420462
end

0 commit comments

Comments
 (0)