omniauth-bigcommerce 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +6 -6
- data/.travis.yml +3 -3
- data/Gemfile +0 -10
- data/lib/omniauth-bigcommerce.rb +1 -1
- data/lib/omniauth/bigcommerce/version.rb +2 -2
- data/lib/omniauth/strategies/bigcommerce.rb +32 -10
- data/omniauth-bigcommerce.gemspec +8 -9
- data/spec/omniauth/strategies/bigcommerce_spec.rb +55 -19
- data/spec/spec_helper.rb +4 -7
- metadata +15 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2fd32cd52747a4e99dbeb7fa6ac4b940f4efd540
|
4
|
+
data.tar.gz: a02adf6795281e1b97256aa74ac14641e4995668
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7d4e9e0b458833e6ac4266669b1716f2c19998fee1ebe81eaac9362b10dfe208b15e0c53ac1827273b6d38d5a3f45c21eb25cdcf835375460b2191e8bbde6a0
|
7
|
+
data.tar.gz: cacc7e225d778745ea2d50a4eb1131263ef78d7b58244ec4ea50d8aa11e367d5d24de626d44461357ffe597a2766d257e27f18dfd120e00003b6294be5a6b9b1
|
data/.gitignore
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
/
|
1
|
+
.bundle
|
2
|
+
Gemfile.lock
|
3
|
+
coverage
|
4
|
+
reports
|
5
|
+
pkg
|
6
|
+
vendor/bundle
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/lib/omniauth-bigcommerce.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require
|
1
|
+
require 'omniauth/bigcommerce/version'
|
2
2
|
require 'omniauth/strategies/bigcommerce'
|
@@ -2,15 +2,13 @@ require 'omniauth-oauth2'
|
|
2
2
|
|
3
3
|
module OmniAuth
|
4
4
|
module Strategies
|
5
|
-
class
|
6
|
-
option :name,
|
7
|
-
|
5
|
+
class BigCommerce < OmniAuth::Strategies::OAuth2
|
6
|
+
option :name, 'bigcommerce'
|
8
7
|
option :provider_ignores_state, true
|
9
|
-
|
10
|
-
option :scope,
|
11
|
-
|
12
|
-
option :client_options,
|
13
|
-
{
|
8
|
+
option :scope, 'users_basic_information'
|
9
|
+
option :authorize_options, [:scope, :context]
|
10
|
+
option :token_options, [:scope, :context]
|
11
|
+
option :client_options, {
|
14
12
|
site: ENV['BC_AUTH_SERVICE'] || 'https://login.bigcommerce.com',
|
15
13
|
authorize_url: '/oauth2/authorize',
|
16
14
|
token_url: '/oauth2/token'
|
@@ -27,7 +25,7 @@ module OmniAuth
|
|
27
25
|
|
28
26
|
credentials do
|
29
27
|
{
|
30
|
-
:
|
28
|
+
token: access_token
|
31
29
|
}
|
32
30
|
end
|
33
31
|
|
@@ -43,8 +41,32 @@ module OmniAuth
|
|
43
41
|
@raw_info ||= access_token.params
|
44
42
|
end
|
45
43
|
|
44
|
+
# Exclude query string in callback url. This used to be part of omniauth-oauth2, but was
|
45
|
+
# removed in 1.4.0: https://github.com/intridea/omniauth-oauth2/pull/70
|
46
|
+
def callback_url
|
47
|
+
full_host + script_name + callback_path
|
48
|
+
end
|
49
|
+
|
50
|
+
# Make sure to pass scope and context through to the authorize call
|
51
|
+
# https://github.com/zquestz/omniauth-google-oauth2/blob/master/lib/omniauth/strategies/google_oauth2.rb#L26
|
52
|
+
def authorize_params
|
53
|
+
super.tap do |params|
|
54
|
+
options[:authorize_options].each do |k|
|
55
|
+
params[k] = request.params[k.to_s] unless [nil, ''].include?(request.params[k.to_s])
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Make sure to pass scope and context through to the token exchange call
|
61
|
+
def token_params
|
62
|
+
super.tap do |params|
|
63
|
+
options[:token_options].each do |k|
|
64
|
+
params[k] = request.params[k.to_s] unless [nil, ''].include?(request.params[k.to_s])
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
46
68
|
end
|
47
69
|
end
|
48
70
|
end
|
49
71
|
|
50
|
-
OmniAuth.config.add_camelization 'bigcommerce', '
|
72
|
+
OmniAuth.config.add_camelization 'bigcommerce', 'BigCommerce'
|
@@ -4,8 +4,8 @@ require File.expand_path('../lib/omniauth/bigcommerce/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Tom Allen, Phil Muir, Sasha Gerrand"]
|
6
6
|
gem.email = ["developer@bigcommerce.com"]
|
7
|
-
gem.description = %q{Official OmniAuth strategy for
|
8
|
-
gem.summary = %q{Official OmniAuth strategy for
|
7
|
+
gem.description = %q{Official OmniAuth strategy for BigCommerce.}
|
8
|
+
gem.summary = %q{Official OmniAuth strategy for BigCommerce.}
|
9
9
|
gem.homepage = "https://github.com/bigcommerce/omniauth-bigcommerce"
|
10
10
|
|
11
11
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
@@ -13,13 +13,12 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
14
|
gem.name = "omniauth-bigcommerce"
|
15
15
|
gem.require_paths = ["lib"]
|
16
|
-
gem.
|
16
|
+
gem.required_ruby_version = '>= 2.1'
|
17
|
+
gem.version = OmniAuth::BigCommerce::VERSION
|
17
18
|
|
18
|
-
gem.add_dependency 'omniauth'
|
19
|
-
gem.add_dependency 'omniauth-oauth2', '
|
20
|
-
gem.add_development_dependency 'rake'
|
21
|
-
gem.add_development_dependency 'rspec'
|
22
|
-
gem.add_development_dependency 'rack-test'
|
19
|
+
gem.add_dependency 'omniauth'
|
20
|
+
gem.add_dependency 'omniauth-oauth2', '>= 1.1.1'
|
21
|
+
gem.add_development_dependency 'rake'
|
22
|
+
gem.add_development_dependency 'rspec'
|
23
23
|
gem.add_development_dependency 'simplecov'
|
24
|
-
gem.add_development_dependency 'webmock'
|
25
24
|
end
|
@@ -1,40 +1,76 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe OmniAuth::Strategies::
|
3
|
+
RSpec.describe OmniAuth::Strategies::BigCommerce do
|
4
|
+
let(:store_hash) { 'abcdefg' }
|
5
|
+
let(:context) { "stores/#{store_hash}" }
|
6
|
+
let(:scope) { 'store_v2_products' }
|
7
|
+
let(:request) { double('Request', :params => { 'context' => context, 'scope' => scope }, :cookies => {}, :env => {}) }
|
4
8
|
|
5
|
-
|
6
|
-
OmniAuth
|
9
|
+
before do
|
10
|
+
OmniAuth.config.test_mode = true
|
11
|
+
allow(subject).to receive(:request).and_return(request)
|
7
12
|
end
|
13
|
+
after { OmniAuth.config.test_mode = false }
|
14
|
+
subject { OmniAuth::Strategies::BigCommerce.new({}) }
|
8
15
|
|
9
|
-
|
16
|
+
describe 'options' do
|
10
17
|
it 'should have correct name' do
|
11
18
|
expect(subject.options.name).to eq('bigcommerce')
|
12
19
|
end
|
13
20
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
21
|
+
describe 'client options' do
|
22
|
+
it 'should have correct site' do
|
23
|
+
# env variable set in spec_helper.rb
|
24
|
+
# TODO: change this once we have bigcommerceapp.com url
|
25
|
+
expect(subject.options.client_options.site).to eq('https://example.com')
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should have correct authorize url' do
|
29
|
+
expect(subject.options.client_options.authorize_url).to eq('/oauth2/authorize')
|
30
|
+
end
|
19
31
|
|
20
|
-
|
21
|
-
|
32
|
+
it 'should have correct token url' do
|
33
|
+
expect(subject.options.client_options.token_url).to eq('/oauth2/token')
|
34
|
+
end
|
22
35
|
end
|
23
36
|
|
24
|
-
|
25
|
-
|
37
|
+
describe 'OAuth2 settings' do
|
38
|
+
it 'should ignore state' do
|
39
|
+
expect(subject.options.provider_ignores_state).to eq true
|
40
|
+
end
|
26
41
|
end
|
27
42
|
end
|
28
43
|
|
29
|
-
|
30
|
-
it 'should
|
31
|
-
expect(subject.
|
44
|
+
describe 'callback url' do
|
45
|
+
it 'should have the correct path' do
|
46
|
+
expect(subject.callback_path).to eq('/auth/bigcommerce/callback')
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'when callback url has a query string' do
|
50
|
+
let(:host) { 'https://example.com' }
|
51
|
+
let(:query_string) { 'foo=bar' }
|
52
|
+
before do
|
53
|
+
allow(subject).to receive(:full_host).and_return(host)
|
54
|
+
allow(subject).to receive(:script_name).and_return('')
|
55
|
+
allow(subject).to receive(:query_string).and_return(query_string)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'query string should not be included in the callback url' do
|
59
|
+
expect(subject.callback_url).to eq("#{host}#{subject.callback_path}")
|
60
|
+
expect(subject.callback_url).to_not include(query_string)
|
61
|
+
end
|
32
62
|
end
|
33
63
|
end
|
34
64
|
|
35
|
-
|
36
|
-
it 'should
|
37
|
-
subject.
|
65
|
+
describe 'extra params for authorize and token exchange' do
|
66
|
+
it 'should set the context and scope parameters in the authorize request' do
|
67
|
+
expect(subject.authorize_params['context']).to eq(context)
|
68
|
+
expect(subject.authorize_params['scope']).to eq(scope)
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should set the context and scope parameters in the token request' do
|
72
|
+
expect(subject.token_params['context']).to eq(context)
|
73
|
+
expect(subject.token_params['scope']).to eq(scope)
|
38
74
|
end
|
39
75
|
end
|
40
76
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,15 +2,12 @@ ENV['BC_AUTH_SERVICE'] = 'https://example.com'
|
|
2
2
|
|
3
3
|
require 'simplecov'
|
4
4
|
SimpleCov.start
|
5
|
-
|
6
|
-
require 'rack/test'
|
7
|
-
require 'webmock/rspec'
|
8
|
-
require 'omniauth'
|
5
|
+
|
9
6
|
require 'omniauth-bigcommerce'
|
10
7
|
|
11
8
|
RSpec.configure do |config|
|
12
|
-
config.
|
13
|
-
config.
|
14
|
-
config.
|
9
|
+
config.color = true
|
10
|
+
config.order = :random
|
11
|
+
Kernel.srand config.seed
|
15
12
|
end
|
16
13
|
|
metadata
CHANGED
@@ -1,73 +1,45 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-bigcommerce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Allen, Phil Muir, Sasha Gerrand
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: omniauth-oauth2
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.1.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.1.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ~>
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '2.7'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '2.7'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '2.7'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ~>
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '2.7'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rack-test
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
45
|
- - '>='
|
@@ -81,7 +53,7 @@ dependencies:
|
|
81
53
|
- !ruby/object:Gem::Version
|
82
54
|
version: '0'
|
83
55
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
56
|
+
name: rspec
|
85
57
|
requirement: !ruby/object:Gem::Requirement
|
86
58
|
requirements:
|
87
59
|
- - '>='
|
@@ -95,7 +67,7 @@ dependencies:
|
|
95
67
|
- !ruby/object:Gem::Version
|
96
68
|
version: '0'
|
97
69
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
70
|
+
name: simplecov
|
99
71
|
requirement: !ruby/object:Gem::Requirement
|
100
72
|
requirements:
|
101
73
|
- - '>='
|
@@ -108,7 +80,7 @@ dependencies:
|
|
108
80
|
- - '>='
|
109
81
|
- !ruby/object:Gem::Version
|
110
82
|
version: '0'
|
111
|
-
description: Official OmniAuth strategy for
|
83
|
+
description: Official OmniAuth strategy for BigCommerce.
|
112
84
|
email:
|
113
85
|
- developer@bigcommerce.com
|
114
86
|
executables: []
|
@@ -138,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
138
110
|
requirements:
|
139
111
|
- - '>='
|
140
112
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
113
|
+
version: '2.1'
|
142
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
115
|
requirements:
|
144
116
|
- - '>='
|
@@ -149,7 +121,7 @@ rubyforge_project:
|
|
149
121
|
rubygems_version: 2.0.14
|
150
122
|
signing_key:
|
151
123
|
specification_version: 4
|
152
|
-
summary: Official OmniAuth strategy for
|
124
|
+
summary: Official OmniAuth strategy for BigCommerce.
|
153
125
|
test_files:
|
154
126
|
- spec/omniauth/strategies/bigcommerce_spec.rb
|
155
127
|
- spec/spec_helper.rb
|