diff --git a/.gitignore b/.gitignore index 1a27888..d3f49c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ *.gem .bundle +.idea Gemfile.lock pkg/* coverage diff --git a/lib/omniauth-square/version.rb b/lib/omniauth-square/version.rb index f28edae..340a66f 100644 --- a/lib/omniauth-square/version.rb +++ b/lib/omniauth-square/version.rb @@ -1,5 +1,5 @@ module Omniauth module Square - VERSION = "1.0.2" + VERSION = "1.0.3" end end diff --git a/lib/omniauth/strategies/square.rb b/lib/omniauth/strategies/square.rb index 924e05e..4539cf2 100644 --- a/lib/omniauth/strategies/square.rb +++ b/lib/omniauth/strategies/square.rb @@ -30,13 +30,24 @@ def raw_info @raw_info ||= access_token.get('/v1/me').parsed end + alias :old_request_phase :request_phase + + def request_phase + if request.params['plan_id'] + options[:authorize_params][:plan_id] = request.params['plan_id'] + end + + old_request_phase + end + protected def build_access_token parsed_response = fetch_access_token parsed_response['expires_at'] = Time.parse(parsed_response['expires_at']).to_i - parsed_response.merge!(deep_symbolize(options.auth_token_params)) + auth_token_params = options.auth_token_params || {} + parsed_response.merge!(deep_symbolize(auth_token_params)) connect_client = client.dup connect_client.site = options.client_options.connect_site diff --git a/omniauth-square.gemspec b/omniauth-square.gemspec index a8f18fb..03fd374 100644 --- a/omniauth-square.gemspec +++ b/omniauth-square.gemspec @@ -24,4 +24,5 @@ Gem::Specification.new do |s| s.add_development_dependency 'rack-test' s.add_development_dependency 'simplecov' s.add_development_dependency 'webmock' + s.add_development_dependency 'pry' end diff --git a/spec/omniauth/strategies/square_spec.rb b/spec/omniauth/strategies/square_spec.rb index 330a446..91a2c3f 100644 --- a/spec/omniauth/strategies/square_spec.rb +++ b/spec/omniauth/strategies/square_spec.rb @@ -2,7 +2,7 @@ describe OmniAuth::Strategies::Square do before :each do - @request = double('Request', :scheme => '', :url => '') + @request = double('Request', :scheme => '', :url => '', :params => {}, :cookies => {}, :env => {}) @request.stub(:params) { {} } end @@ -150,6 +150,18 @@ end end + describe '#request_phase' do + before do + @request.stub(:params).and_return('plan_id' => 'test_plan_id') + subject.stub(:old_request_phase).and_return(:something) + end + + it 'adds `plan_id` parameter to `authorize_params`' do + expect { subject.request_phase }.to change { subject.options.authorize_params.plan_id }. + from(nil).to('test_plan_id') + end + end + describe '#access_token_request_payload' do before do @request.stub(:params).and_return('code' => '11111') diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index c18d39e..4a70d94 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -5,6 +5,7 @@ require 'webmock/rspec' require 'omniauth' require 'omniauth-square' +require 'pry' RSpec.configure do |config| config.include WebMock::API