oauth2 1.4.4 → 1.4.8

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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -2
  3. data/CODE_OF_CONDUCT.md +105 -46
  4. data/LICENSE +1 -1
  5. data/README.md +277 -112
  6. data/lib/oauth2/access_token.rb +8 -7
  7. data/lib/oauth2/authenticator.rb +1 -1
  8. data/lib/oauth2/client.rb +64 -21
  9. data/lib/oauth2/error.rb +1 -1
  10. data/lib/oauth2/mac_token.rb +16 -10
  11. data/lib/oauth2/response.rb +5 -3
  12. data/lib/oauth2/strategy/assertion.rb +3 -3
  13. data/lib/oauth2/strategy/password.rb +2 -2
  14. data/lib/oauth2/version.rb +9 -3
  15. data/spec/helper.rb +30 -0
  16. data/spec/oauth2/access_token_spec.rb +216 -0
  17. data/spec/oauth2/authenticator_spec.rb +84 -0
  18. data/spec/oauth2/client_spec.rb +530 -0
  19. data/spec/oauth2/mac_token_spec.rb +120 -0
  20. data/spec/oauth2/response_spec.rb +90 -0
  21. data/spec/oauth2/strategy/assertion_spec.rb +59 -0
  22. data/spec/oauth2/strategy/auth_code_spec.rb +107 -0
  23. data/spec/oauth2/strategy/base_spec.rb +5 -0
  24. data/spec/oauth2/strategy/client_credentials_spec.rb +69 -0
  25. data/spec/oauth2/strategy/implicit_spec.rb +26 -0
  26. data/spec/oauth2/strategy/password_spec.rb +56 -0
  27. data/spec/oauth2/version_spec.rb +23 -0
  28. metadata +41 -57
  29. data/.document +0 -5
  30. data/.gitignore +0 -19
  31. data/.jrubyrc +0 -1
  32. data/.rspec +0 -2
  33. data/.rubocop.yml +0 -80
  34. data/.rubocop_rspec.yml +0 -26
  35. data/.rubocop_todo.yml +0 -15
  36. data/.ruby-version +0 -1
  37. data/.travis.yml +0 -87
  38. data/CONTRIBUTING.md +0 -18
  39. data/Gemfile +0 -40
  40. data/Rakefile +0 -45
  41. data/gemfiles/jruby_1.7.gemfile +0 -11
  42. data/gemfiles/jruby_9.0.gemfile +0 -7
  43. data/gemfiles/jruby_9.1.gemfile +0 -3
  44. data/gemfiles/jruby_9.2.gemfile +0 -3
  45. data/gemfiles/jruby_head.gemfile +0 -3
  46. data/gemfiles/ruby_1.9.gemfile +0 -11
  47. data/gemfiles/ruby_2.0.gemfile +0 -6
  48. data/gemfiles/ruby_2.1.gemfile +0 -6
  49. data/gemfiles/ruby_2.2.gemfile +0 -3
  50. data/gemfiles/ruby_2.3.gemfile +0 -3
  51. data/gemfiles/ruby_2.4.gemfile +0 -3
  52. data/gemfiles/ruby_2.5.gemfile +0 -3
  53. data/gemfiles/ruby_2.6.gemfile +0 -9
  54. data/gemfiles/ruby_2.7.gemfile +0 -9
  55. data/gemfiles/ruby_head.gemfile +0 -9
  56. data/gemfiles/truffleruby.gemfile +0 -3
  57. data/oauth2.gemspec +0 -52
@@ -0,0 +1,90 @@
1
+ describe OAuth2::Response do
2
+ describe '#initialize' do
3
+ let(:status) { 200 }
4
+ let(:headers) { {'foo' => 'bar'} }
5
+ let(:body) { 'foo' }
6
+
7
+ it 'returns the status, headers and body' do
8
+ response = double('response', :headers => headers,
9
+ :status => status,
10
+ :body => body)
11
+ subject = described_class.new(response)
12
+ expect(subject.headers).to eq(headers)
13
+ expect(subject.status).to eq(status)
14
+ expect(subject.body).to eq(body)
15
+ end
16
+ end
17
+
18
+ describe '.register_parser' do
19
+ let(:response) do
20
+ double('response', :headers => {'Content-Type' => 'application/foo-bar'},
21
+ :status => 200,
22
+ :body => 'baz')
23
+ end
24
+
25
+ before do
26
+ described_class.register_parser(:foobar, 'application/foo-bar') do |body|
27
+ "foobar #{body}"
28
+ end
29
+ end
30
+
31
+ it 'adds to the content types and parsers' do
32
+ expect(described_class.send(:class_variable_get, :@@parsers).keys).to include(:foobar)
33
+ expect(described_class.send(:class_variable_get, :@@content_types).keys).to include('application/foo-bar')
34
+ end
35
+
36
+ it 'is able to parse that content type automatically' do
37
+ expect(described_class.new(response).parsed).to eq('foobar baz')
38
+ end
39
+ end
40
+
41
+ describe '#parsed' do
42
+ it 'parses application/x-www-form-urlencoded body' do
43
+ headers = {'Content-Type' => 'application/x-www-form-urlencoded'}
44
+ body = 'foo=bar&answer=42'
45
+ response = double('response', :headers => headers, :body => body)
46
+ subject = described_class.new(response)
47
+ expect(subject.parsed.keys.size).to eq(2)
48
+ expect(subject.parsed['foo']).to eq('bar')
49
+ expect(subject.parsed['answer']).to eq('42')
50
+ end
51
+
52
+ it 'parses application/json body' do
53
+ headers = {'Content-Type' => 'application/json'}
54
+ body = MultiJson.encode(:foo => 'bar', :answer => 42)
55
+ response = double('response', :headers => headers, :body => body)
56
+ subject = described_class.new(response)
57
+ expect(subject.parsed.keys.size).to eq(2)
58
+ expect(subject.parsed['foo']).to eq('bar')
59
+ expect(subject.parsed['answer']).to eq(42)
60
+ end
61
+
62
+ it "doesn't try to parse other content-types" do
63
+ headers = {'Content-Type' => 'text/html'}
64
+ body = '<!DOCTYPE html><html><head></head><body></body></html>'
65
+
66
+ response = double('response', :headers => headers, :body => body)
67
+
68
+ expect(MultiJson).not_to receive(:decode)
69
+ expect(MultiJson).not_to receive(:load)
70
+ expect(Rack::Utils).not_to receive(:parse_query)
71
+
72
+ subject = described_class.new(response)
73
+ expect(subject.parsed).to be_nil
74
+ end
75
+ end
76
+
77
+ context 'with xml parser registration' do
78
+ it 'tries to load multi_xml and use it' do
79
+ expect(described_class.send(:class_variable_get, :@@parsers)[:xml]).not_to be_nil
80
+ end
81
+
82
+ it 'is able to parse xml' do
83
+ headers = {'Content-Type' => 'text/xml'}
84
+ body = '<?xml version="1.0" standalone="yes" ?><foo><bar>baz</bar></foo>'
85
+
86
+ response = double('response', :headers => headers, :body => body)
87
+ expect(described_class.new(response).parsed).to eq('foo' => {'bar' => 'baz'})
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,59 @@
1
+ describe OAuth2::Strategy::Assertion do
2
+ subject { client.assertion }
3
+
4
+ let(:client) do
5
+ cli = OAuth2::Client.new('abc', 'def', :site => 'http://api.example.com')
6
+ cli.connection = Faraday.new(cli.site, cli.options[:connection_opts]) do |b|
7
+ b.request :url_encoded
8
+ b.adapter :test do |stub|
9
+ stub.post('/oauth/token') do |env|
10
+ case @mode
11
+ when 'formencoded'
12
+ [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, 'expires_in=600&access_token=salmon&refresh_token=trout']
13
+ when 'json'
14
+ [200, {'Content-Type' => 'application/json'}, '{"expires_in":600,"access_token":"salmon","refresh_token":"trout"}']
15
+ end
16
+ end
17
+ end
18
+ end
19
+ cli
20
+ end
21
+
22
+ let(:params) do
23
+ {
24
+ :hmac_secret => 'foo',
25
+ :exp => Time.now.utc.to_i + 3600,
26
+ }
27
+ end
28
+
29
+ describe '#authorize_url' do
30
+ it 'raises NotImplementedError' do
31
+ expect { subject.authorize_url }.to raise_error(NotImplementedError)
32
+ end
33
+ end
34
+
35
+ %w[json formencoded].each do |mode|
36
+ describe "#get_token (#{mode})" do
37
+ before do
38
+ @mode = mode
39
+ @access = subject.get_token(params)
40
+ end
41
+
42
+ it 'returns AccessToken with same Client' do
43
+ expect(@access.client).to eq(client)
44
+ end
45
+
46
+ it 'returns AccessToken with #token' do
47
+ expect(@access.token).to eq('salmon')
48
+ end
49
+
50
+ it 'returns AccessToken with #expires_in' do
51
+ expect(@access.expires_in).to eq(600)
52
+ end
53
+
54
+ it 'returns AccessToken with #expires_at' do
55
+ expect(@access.expires_at).not_to be_nil
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,107 @@
1
+ # encoding: utf-8
2
+
3
+ describe OAuth2::Strategy::AuthCode do
4
+ subject { client.auth_code }
5
+
6
+ let(:code) { 'sushi' }
7
+ let(:kvform_token) { 'expires_in=600&access_token=salmon&refresh_token=trout&extra_param=steve' }
8
+ let(:facebook_token) { kvform_token.gsub('_in', '') }
9
+ let(:json_token) { MultiJson.encode(:expires_in => 600, :access_token => 'salmon', :refresh_token => 'trout', :extra_param => 'steve') }
10
+
11
+ let(:client) do
12
+ OAuth2::Client.new('abc', 'def', :site => 'http://api.example.com') do |builder|
13
+ builder.adapter :test do |stub|
14
+ stub.get("/oauth/token?client_id=abc&client_secret=def&code=#{code}&grant_type=authorization_code") do |env|
15
+ case @mode
16
+ when 'formencoded'
17
+ [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, kvform_token]
18
+ when 'json'
19
+ [200, {'Content-Type' => 'application/json'}, json_token]
20
+ when 'from_facebook'
21
+ [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, facebook_token]
22
+ end
23
+ end
24
+ stub.post('/oauth/token', 'client_id' => 'abc', 'client_secret' => 'def', 'code' => 'sushi', 'grant_type' => 'authorization_code') do |env|
25
+ case @mode
26
+ when 'formencoded'
27
+ [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, kvform_token]
28
+ when 'json'
29
+ [200, {'Content-Type' => 'application/json'}, json_token]
30
+ when 'from_facebook'
31
+ [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, facebook_token]
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ describe '#authorize_url' do
39
+ it 'includes the client_id' do
40
+ expect(subject.authorize_url).to include('client_id=abc')
41
+ end
42
+
43
+ it 'includes the type' do
44
+ expect(subject.authorize_url).to include('response_type=code')
45
+ end
46
+
47
+ it 'includes passed in options' do
48
+ cb = 'http://myserver.local/oauth/callback'
49
+ expect(subject.authorize_url(:redirect_uri => cb)).to include("redirect_uri=#{Rack::Utils.escape(cb)}")
50
+ end
51
+ end
52
+
53
+ describe '#get_token (handling utf-8 data)' do
54
+ let(:json_token) { MultiJson.encode(:expires_in => 600, :access_token => 'salmon', :refresh_token => 'trout', :extra_param => 'André') }
55
+
56
+ before do
57
+ @mode = 'json'
58
+ client.options[:token_method] = :post
59
+ end
60
+
61
+ it 'does not raise an error' do
62
+ expect { subject.get_token(code) }.not_to raise_error
63
+ end
64
+
65
+ it 'does not create an error instance' do
66
+ expect(OAuth2::Error).not_to receive(:new)
67
+
68
+ subject.get_token(code)
69
+ end
70
+ end
71
+
72
+ %w[json formencoded from_facebook].each do |mode|
73
+ [:get, :post].each do |verb|
74
+ describe "#get_token (#{mode}, access_token_method=#{verb}" do
75
+ before do
76
+ @mode = mode
77
+ client.options[:token_method] = verb
78
+ @access = subject.get_token(code)
79
+ end
80
+
81
+ it 'returns AccessToken with same Client' do
82
+ expect(@access.client).to eq(client)
83
+ end
84
+
85
+ it 'returns AccessToken with #token' do
86
+ expect(@access.token).to eq('salmon')
87
+ end
88
+
89
+ it 'returns AccessToken with #refresh_token' do
90
+ expect(@access.refresh_token).to eq('trout')
91
+ end
92
+
93
+ it 'returns AccessToken with #expires_in' do
94
+ expect(@access.expires_in).to eq(600)
95
+ end
96
+
97
+ it 'returns AccessToken with #expires_at' do
98
+ expect(@access.expires_at).to be_kind_of(Integer)
99
+ end
100
+
101
+ it 'returns AccessToken with params accessible via []' do
102
+ expect(@access['extra_param']).to eq('steve')
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,5 @@
1
+ describe OAuth2::Strategy::Base do
2
+ it 'initializes with a Client' do
3
+ expect { described_class.new(OAuth2::Client.new('abc', 'def')) }.not_to raise_error
4
+ end
5
+ end
@@ -0,0 +1,69 @@
1
+ describe OAuth2::Strategy::ClientCredentials do
2
+ subject { client.client_credentials }
3
+
4
+ let(:kvform_token) { 'expires_in=600&access_token=salmon&refresh_token=trout' }
5
+ let(:json_token) { '{"expires_in":600,"access_token":"salmon","refresh_token":"trout"}' }
6
+
7
+ let(:client) do
8
+ OAuth2::Client.new('abc', 'def', :site => 'http://api.example.com') do |builder|
9
+ builder.adapter :test do |stub|
10
+ stub.post('/oauth/token', 'grant_type' => 'client_credentials') do |env|
11
+ client_id, client_secret = Base64.decode64(env[:request_headers]['Authorization'].split(' ', 2)[1]).split(':', 2)
12
+ (client_id == 'abc' && client_secret == 'def') || raise(Faraday::Adapter::Test::Stubs::NotFound)
13
+ case @mode
14
+ when 'formencoded'
15
+ [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, kvform_token]
16
+ when 'json'
17
+ [200, {'Content-Type' => 'application/json'}, json_token]
18
+ end
19
+ end
20
+ stub.post('/oauth/token', 'client_id' => 'abc', 'client_secret' => 'def', 'grant_type' => 'client_credentials') do |env|
21
+ case @mode
22
+ when 'formencoded'
23
+ [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, kvform_token]
24
+ when 'json'
25
+ [200, {'Content-Type' => 'application/json'}, json_token]
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ describe '#authorize_url' do
33
+ it 'raises NotImplementedError' do
34
+ expect { subject.authorize_url }.to raise_error(NotImplementedError)
35
+ end
36
+ end
37
+
38
+ %w[json formencoded].each do |mode|
39
+ [:basic_auth, :request_body].each do |auth_scheme|
40
+ describe "#get_token (#{mode}) (#{auth_scheme})" do
41
+ before do
42
+ @mode = mode
43
+ client.options[:auth_scheme] = auth_scheme
44
+ @access = subject.get_token
45
+ end
46
+
47
+ it 'returns AccessToken with same Client' do
48
+ expect(@access.client).to eq(client)
49
+ end
50
+
51
+ it 'returns AccessToken with #token' do
52
+ expect(@access.token).to eq('salmon')
53
+ end
54
+
55
+ it 'returns AccessToken without #refresh_token' do
56
+ expect(@access.refresh_token).to be_nil
57
+ end
58
+
59
+ it 'returns AccessToken with #expires_in' do
60
+ expect(@access.expires_in).to eq(600)
61
+ end
62
+
63
+ it 'returns AccessToken with #expires_at' do
64
+ expect(@access.expires_at).not_to be_nil
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,26 @@
1
+ describe OAuth2::Strategy::Implicit do
2
+ subject { client.implicit }
3
+
4
+ let(:client) { OAuth2::Client.new('abc', 'def', :site => 'http://api.example.com') }
5
+
6
+ describe '#authorize_url' do
7
+ it 'includes the client_id' do
8
+ expect(subject.authorize_url).to include('client_id=abc')
9
+ end
10
+
11
+ it 'includes the type' do
12
+ expect(subject.authorize_url).to include('response_type=token')
13
+ end
14
+
15
+ it 'includes passed in options' do
16
+ cb = 'http://myserver.local/oauth/callback'
17
+ expect(subject.authorize_url(:redirect_uri => cb)).to include("redirect_uri=#{Rack::Utils.escape(cb)}")
18
+ end
19
+ end
20
+
21
+ describe '#get_token' do
22
+ it 'raises NotImplementedError' do
23
+ expect { subject.get_token }.to raise_error(NotImplementedError)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,56 @@
1
+ describe OAuth2::Strategy::Password do
2
+ subject { client.password }
3
+
4
+ let(:client) do
5
+ cli = OAuth2::Client.new('abc', 'def', :site => 'http://api.example.com')
6
+ cli.connection = Faraday.new(cli.site, cli.options[:connection_opts]) do |b|
7
+ b.request :url_encoded
8
+ b.adapter :test do |stub|
9
+ stub.post('/oauth/token') do |env|
10
+ case @mode
11
+ when 'formencoded'
12
+ [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, 'expires_in=600&access_token=salmon&refresh_token=trout']
13
+ when 'json'
14
+ [200, {'Content-Type' => 'application/json'}, '{"expires_in":600,"access_token":"salmon","refresh_token":"trout"}']
15
+ end
16
+ end
17
+ end
18
+ end
19
+ cli
20
+ end
21
+
22
+ describe '#authorize_url' do
23
+ it 'raises NotImplementedError' do
24
+ expect { subject.authorize_url }.to raise_error(NotImplementedError)
25
+ end
26
+ end
27
+
28
+ %w[json formencoded].each do |mode|
29
+ describe "#get_token (#{mode})" do
30
+ before do
31
+ @mode = mode
32
+ @access = subject.get_token('username', 'password')
33
+ end
34
+
35
+ it 'returns AccessToken with same Client' do
36
+ expect(@access.client).to eq(client)
37
+ end
38
+
39
+ it 'returns AccessToken with #token' do
40
+ expect(@access.token).to eq('salmon')
41
+ end
42
+
43
+ it 'returns AccessToken with #refresh_token' do
44
+ expect(@access.refresh_token).to eq('trout')
45
+ end
46
+
47
+ it 'returns AccessToken with #expires_in' do
48
+ expect(@access.expires_in).to eq(600)
49
+ end
50
+
51
+ it 'returns AccessToken with #expires_at' do
52
+ expect(@access.expires_at).not_to be_nil
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe OAuth2::Version do
4
+ it 'has a version number' do
5
+ expect(described_class).not_to be nil
6
+ end
7
+
8
+ it 'can be a string' do
9
+ expect(described_class.to_s).to be_a(String)
10
+ end
11
+
12
+ it 'allows Constant access' do
13
+ expect(described_class::VERSION).to be_a(String)
14
+ end
15
+
16
+ it 'is greater than 0.1.0' do
17
+ expect(Gem::Version.new(described_class) > Gem::Version.new('0.1.0')).to be(true)
18
+ end
19
+
20
+ it 'is not a pre-release' do
21
+ expect(Gem::Version.new(described_class).prerelease?).to be(false)
22
+ end
23
+ end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.4
4
+ version: 1.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
8
8
  - Michael Bleigh
9
9
  - Erik Michaels-Ober
10
- autorequire:
10
+ autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2020-02-13 00:00:00.000000000 Z
13
+ date: 2022-02-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0.8'
22
22
  - - "<"
23
23
  - !ruby/object:Gem::Version
24
- version: '2.0'
24
+ version: '3.0'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -31,7 +31,7 @@ dependencies:
31
31
  version: '0.8'
32
32
  - - "<"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.0'
34
+ version: '3.0'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: jwt
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -142,20 +142,6 @@ dependencies:
142
142
  - - ">="
143
143
  - !ruby/object:Gem::Version
144
144
  version: '1.16'
145
- - !ruby/object:Gem::Dependency
146
- name: coveralls
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '0.8'
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '0.8'
159
145
  - !ruby/object:Gem::Dependency
160
146
  name: rake
161
147
  requirement: !ruby/object:Gem::Requirement
@@ -205,7 +191,7 @@ dependencies:
205
191
  - !ruby/object:Gem::Version
206
192
  version: '3.0'
207
193
  - !ruby/object:Gem::Dependency
208
- name: rspec-stubbed_env
194
+ name: rspec-block_is_expected
209
195
  requirement: !ruby/object:Gem::Requirement
210
196
  requirements:
211
197
  - - ">="
@@ -233,7 +219,7 @@ dependencies:
233
219
  - !ruby/object:Gem::Version
234
220
  version: '0'
235
221
  - !ruby/object:Gem::Dependency
236
- name: rspec-block_is_expected
222
+ name: rspec-stubbed_env
237
223
  requirement: !ruby/object:Gem::Requirement
238
224
  requirements:
239
225
  - - ">="
@@ -282,38 +268,10 @@ executables: []
282
268
  extensions: []
283
269
  extra_rdoc_files: []
284
270
  files:
285
- - ".document"
286
- - ".gitignore"
287
- - ".jrubyrc"
288
- - ".rspec"
289
- - ".rubocop.yml"
290
- - ".rubocop_rspec.yml"
291
- - ".rubocop_todo.yml"
292
- - ".ruby-version"
293
- - ".travis.yml"
294
271
  - CHANGELOG.md
295
272
  - CODE_OF_CONDUCT.md
296
- - CONTRIBUTING.md
297
- - Gemfile
298
273
  - LICENSE
299
274
  - README.md
300
- - Rakefile
301
- - gemfiles/jruby_1.7.gemfile
302
- - gemfiles/jruby_9.0.gemfile
303
- - gemfiles/jruby_9.1.gemfile
304
- - gemfiles/jruby_9.2.gemfile
305
- - gemfiles/jruby_head.gemfile
306
- - gemfiles/ruby_1.9.gemfile
307
- - gemfiles/ruby_2.0.gemfile
308
- - gemfiles/ruby_2.1.gemfile
309
- - gemfiles/ruby_2.2.gemfile
310
- - gemfiles/ruby_2.3.gemfile
311
- - gemfiles/ruby_2.4.gemfile
312
- - gemfiles/ruby_2.5.gemfile
313
- - gemfiles/ruby_2.6.gemfile
314
- - gemfiles/ruby_2.7.gemfile
315
- - gemfiles/ruby_head.gemfile
316
- - gemfiles/truffleruby.gemfile
317
275
  - lib/oauth2.rb
318
276
  - lib/oauth2/access_token.rb
319
277
  - lib/oauth2/authenticator.rb
@@ -328,17 +286,30 @@ files:
328
286
  - lib/oauth2/strategy/implicit.rb
329
287
  - lib/oauth2/strategy/password.rb
330
288
  - lib/oauth2/version.rb
331
- - oauth2.gemspec
289
+ - spec/helper.rb
290
+ - spec/oauth2/access_token_spec.rb
291
+ - spec/oauth2/authenticator_spec.rb
292
+ - spec/oauth2/client_spec.rb
293
+ - spec/oauth2/mac_token_spec.rb
294
+ - spec/oauth2/response_spec.rb
295
+ - spec/oauth2/strategy/assertion_spec.rb
296
+ - spec/oauth2/strategy/auth_code_spec.rb
297
+ - spec/oauth2/strategy/base_spec.rb
298
+ - spec/oauth2/strategy/client_credentials_spec.rb
299
+ - spec/oauth2/strategy/implicit_spec.rb
300
+ - spec/oauth2/strategy/password_spec.rb
301
+ - spec/oauth2/version_spec.rb
332
302
  homepage: https://github.com/oauth-xx/oauth2
333
303
  licenses:
334
304
  - MIT
335
305
  metadata:
336
306
  bug_tracker_uri: https://github.com/oauth-xx/oauth2/issues
337
- changelog_uri: https://github.com/oauth-xx/oauth2/blob/v1.4.4/CHANGELOG.md
338
- documentation_uri: https://www.rubydoc.info/gems/oauth2/1.4.4
339
- source_code_uri: https://github.com/oauth-xx/oauth2/tree/v1.4.4
307
+ changelog_uri: https://github.com/oauth-xx/oauth2/blob/v1.4.8/CHANGELOG.md
308
+ documentation_uri: https://www.rubydoc.info/gems/oauth2/1.4.8
309
+ source_code_uri: https://github.com/oauth-xx/oauth2/tree/v1.4.8
340
310
  wiki_uri: https://github.com/oauth-xx/oauth2/wiki
341
- post_install_message:
311
+ rubygems_mfa_required: 'true'
312
+ post_install_message:
342
313
  rdoc_options: []
343
314
  require_paths:
344
315
  - lib
@@ -353,8 +324,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
353
324
  - !ruby/object:Gem::Version
354
325
  version: 1.3.5
355
326
  requirements: []
356
- rubygems_version: 3.1.2
357
- signing_key:
327
+ rubygems_version: 3.3.7
328
+ signing_key:
358
329
  specification_version: 4
359
330
  summary: A Ruby wrapper for the OAuth 2.0 protocol.
360
- test_files: []
331
+ test_files:
332
+ - spec/helper.rb
333
+ - spec/oauth2/access_token_spec.rb
334
+ - spec/oauth2/authenticator_spec.rb
335
+ - spec/oauth2/client_spec.rb
336
+ - spec/oauth2/mac_token_spec.rb
337
+ - spec/oauth2/response_spec.rb
338
+ - spec/oauth2/strategy/assertion_spec.rb
339
+ - spec/oauth2/strategy/auth_code_spec.rb
340
+ - spec/oauth2/strategy/base_spec.rb
341
+ - spec/oauth2/strategy/client_credentials_spec.rb
342
+ - spec/oauth2/strategy/implicit_spec.rb
343
+ - spec/oauth2/strategy/password_spec.rb
344
+ - spec/oauth2/version_spec.rb
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.gitignore DELETED
@@ -1,19 +0,0 @@
1
- *.gem
2
- *~
3
- .bundle
4
- .rvmrc
5
- Gemfile.lock
6
- coverage/*
7
- log/*
8
- measurement/*
9
- pkg/*
10
- rdoc/*
11
-
12
- # rspec failure tracking
13
- .rspec_status
14
-
15
- # gemfiles for CI
16
- /gemfiles/*.gemfile.lock
17
-
18
- # CI bundle
19
- /gemfiles/vendor/
data/.jrubyrc DELETED
@@ -1 +0,0 @@
1
- debug.fullTrace=true
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --order random