oauth2 0.9.2 → 0.9.3

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.
@@ -1,12 +1,12 @@
1
1
  require 'helper'
2
2
 
3
3
  describe OAuth2::Response do
4
- describe "#initialize" do
5
- let(:status) {200}
6
- let(:headers) {{'foo' => 'bar'}}
7
- let(:body) {'foo'}
4
+ describe '#initialize' do
5
+ let(:status) { 200 }
6
+ let(:headers) { {'foo' => 'bar'} }
7
+ let(:body) { 'foo' }
8
8
 
9
- it "returns the status, headers and body" do
9
+ it 'returns the status, headers and body' do
10
10
  response = double('response', :headers => headers,
11
11
  :status => status,
12
12
  :body => body)
@@ -17,30 +17,30 @@ describe OAuth2::Response do
17
17
  end
18
18
  end
19
19
 
20
- describe ".register_parser" do
21
- let(:response) {
20
+ describe '.register_parser' do
21
+ let(:response) do
22
22
  double('response', :headers => {'Content-Type' => 'application/foo-bar'},
23
23
  :status => 200,
24
24
  :body => 'baz')
25
- }
25
+ end
26
26
  before do
27
27
  OAuth2::Response.register_parser(:foobar, 'application/foo-bar') do |body|
28
28
  "foobar #{body}"
29
29
  end
30
30
  end
31
31
 
32
- it "adds to the content types and parsers" do
32
+ it 'adds to the content types and parsers' do
33
33
  expect(OAuth2::Response::PARSERS.keys).to include(:foobar)
34
34
  expect(OAuth2::Response::CONTENT_TYPES.keys).to include('application/foo-bar')
35
35
  end
36
36
 
37
- it "is able to parse that content type automatically" do
37
+ it 'is able to parse that content type automatically' do
38
38
  expect(OAuth2::Response.new(response).parsed).to eq('foobar baz')
39
39
  end
40
40
  end
41
41
 
42
- describe "#parsed" do
43
- it "parses application/x-www-form-urlencoded body" do
42
+ describe '#parsed' do
43
+ it 'parses application/x-www-form-urlencoded body' do
44
44
  headers = {'Content-Type' => 'application/x-www-form-urlencoded'}
45
45
  body = 'foo=bar&answer=42'
46
46
  response = double('response', :headers => headers, :body => body)
@@ -50,7 +50,7 @@ describe OAuth2::Response do
50
50
  expect(subject.parsed['answer']).to eq('42')
51
51
  end
52
52
 
53
- it "parses application/json body" do
53
+ it 'parses application/json body' do
54
54
  headers = {'Content-Type' => 'application/json'}
55
55
  body = MultiJson.encode(:foo => 'bar', :answer => 42)
56
56
  response = double('response', :headers => headers, :body => body)
@@ -66,26 +66,26 @@ describe OAuth2::Response do
66
66
 
67
67
  response = double('response', :headers => headers, :body => body)
68
68
 
69
- MultiJson.should_not_receive(:decode)
70
- MultiJson.should_not_receive(:load)
71
- Rack::Utils.should_not_receive(:parse_query)
69
+ expect(MultiJson).not_to receive(:decode)
70
+ expect(MultiJson).not_to receive(:load)
71
+ expect(Rack::Utils).not_to receive(:parse_query)
72
72
 
73
73
  subject = Response.new(response)
74
74
  expect(subject.parsed).to be_nil
75
75
  end
76
76
  end
77
77
 
78
- context "xml parser registration" do
79
- it "tries to load multi_xml and use it" do
78
+ context 'xml parser registration' do
79
+ it 'tries to load multi_xml and use it' do
80
80
  expect(OAuth2::Response::PARSERS[:xml]).not_to be_nil
81
81
  end
82
82
 
83
- it "is able to parse xml" do
83
+ it 'is able to parse xml' do
84
84
  headers = {'Content-Type' => 'text/xml'}
85
85
  body = '<?xml version="1.0" standalone="yes" ?><foo><bar>baz</bar></foo>'
86
86
 
87
87
  response = double('response', :headers => headers, :body => body)
88
- expect(OAuth2::Response.new(response).parsed).to eq({"foo" => {"bar" => "baz"}})
88
+ expect(OAuth2::Response.new(response).parsed).to eq('foo' => {'bar' => 'baz'})
89
89
  end
90
90
  end
91
91
  end
@@ -7,10 +7,10 @@ describe OAuth2::Strategy::Assertion do
7
7
  b.adapter :test do |stub|
8
8
  stub.post('/oauth/token') do |env|
9
9
  case @mode
10
- when "formencoded"
11
- [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, 'expires_in=600&access_token=salmon&refresh_token=trout']
12
- when "json"
13
- [200, {'Content-Type' => 'application/json'}, '{"expires_in":600,"access_token":"salmon","refresh_token":"trout"}']
10
+ when 'formencoded'
11
+ [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, 'expires_in=600&access_token=salmon&refresh_token=trout']
12
+ when 'json'
13
+ [200, {'Content-Type' => 'application/json'}, '{"expires_in":600,"access_token":"salmon","refresh_token":"trout"}']
14
14
  end
15
15
  end
16
16
  end
@@ -18,13 +18,13 @@ describe OAuth2::Strategy::Assertion do
18
18
  cli
19
19
  end
20
20
 
21
- let(:params) { {:hmac_secret => 'foo'}}
21
+ let(:params) { {:hmac_secret => 'foo'} }
22
22
 
23
- subject {client.assertion}
23
+ subject { client.assertion }
24
24
 
25
- describe "#authorize_url" do
26
- it "raises NotImplementedError" do
27
- expect{subject.authorize_url}.to raise_error(NotImplementedError)
25
+ describe '#authorize_url' do
26
+ it 'raises NotImplementedError' do
27
+ expect { subject.authorize_url }.to raise_error(NotImplementedError)
28
28
  end
29
29
  end
30
30
 
@@ -35,23 +35,22 @@ describe OAuth2::Strategy::Assertion do
35
35
  @access = subject.get_token(params)
36
36
  end
37
37
 
38
- it "returns AccessToken with same Client" do
38
+ it 'returns AccessToken with same Client' do
39
39
  expect(@access.client).to eq(client)
40
40
  end
41
41
 
42
- it "returns AccessToken with #token" do
42
+ it 'returns AccessToken with #token' do
43
43
  expect(@access.token).to eq('salmon')
44
44
  end
45
45
 
46
- it "returns AccessToken with #expires_in" do
46
+ it 'returns AccessToken with #expires_in' do
47
47
  expect(@access.expires_in).to eq(600)
48
48
  end
49
49
 
50
- it "returns AccessToken with #expires_at" do
50
+ it 'returns AccessToken with #expires_at' do
51
51
  expect(@access.expires_at).not_to be_nil
52
52
  end
53
53
  end
54
54
  end
55
55
 
56
56
  end
57
-
@@ -1,31 +1,31 @@
1
1
  require 'helper'
2
2
 
3
3
  describe OAuth2::Strategy::AuthCode do
4
- let(:code) {'sushi'}
5
- let(:kvform_token) {'expires_in=600&access_token=salmon&refresh_token=trout&extra_param=steve'}
6
- let(:facebook_token) {kvform_token.gsub('_in', '')}
7
- let(:json_token) {MultiJson.encode(:expires_in => 600, :access_token => 'salmon', :refresh_token => 'trout', :extra_param => 'steve')}
4
+ let(:code) { 'sushi' }
5
+ let(:kvform_token) { 'expires_in=600&access_token=salmon&refresh_token=trout&extra_param=steve' }
6
+ let(:facebook_token) { kvform_token.gsub('_in', '') }
7
+ let(:json_token) { MultiJson.encode(:expires_in => 600, :access_token => 'salmon', :refresh_token => 'trout', :extra_param => 'steve') }
8
8
 
9
9
  let(:client) do
10
10
  OAuth2::Client.new('abc', 'def', :site => 'http://api.example.com') do |builder|
11
11
  builder.adapter :test do |stub|
12
12
  stub.get("/oauth/token?client_id=abc&client_secret=def&code=#{code}&grant_type=authorization_code") do |env|
13
13
  case @mode
14
- when "formencoded"
14
+ when 'formencoded'
15
15
  [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, kvform_token]
16
- when "json"
16
+ when 'json'
17
17
  [200, {'Content-Type' => 'application/json'}, json_token]
18
- when "from_facebook"
18
+ when 'from_facebook'
19
19
  [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, facebook_token]
20
20
  end
21
21
  end
22
- stub.post('/oauth/token', {'client_id' => 'abc', 'client_secret' => 'def', 'code' => 'sushi', 'grant_type' => 'authorization_code'}) do |env|
22
+ stub.post('/oauth/token', 'client_id' => 'abc', 'client_secret' => 'def', 'code' => 'sushi', 'grant_type' => 'authorization_code') do |env|
23
23
  case @mode
24
- when "formencoded"
24
+ when 'formencoded'
25
25
  [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, kvform_token]
26
- when "json"
26
+ when 'json'
27
27
  [200, {'Content-Type' => 'application/json'}, json_token]
28
- when "from_facebook"
28
+ when 'from_facebook'
29
29
  [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, facebook_token]
30
30
  end
31
31
  end
@@ -33,18 +33,18 @@ describe OAuth2::Strategy::AuthCode do
33
33
  end
34
34
  end
35
35
 
36
- subject {client.auth_code}
36
+ subject { client.auth_code }
37
37
 
38
- describe "#authorize_url" do
39
- it "includes the client_id" do
38
+ describe '#authorize_url' do
39
+ it 'includes the client_id' do
40
40
  expect(subject.authorize_url).to include('client_id=abc')
41
41
  end
42
42
 
43
- it "includes the type" do
43
+ it 'includes the type' do
44
44
  expect(subject.authorize_url).to include('response_type=code')
45
45
  end
46
46
 
47
- it "includes passed in options" do
47
+ it 'includes passed in options' do
48
48
  cb = 'http://myserver.local/oauth/callback'
49
49
  expect(subject.authorize_url(:redirect_uri => cb)).to include("redirect_uri=#{Rack::Utils.escape(cb)}")
50
50
  end
@@ -59,27 +59,27 @@ describe OAuth2::Strategy::AuthCode do
59
59
  @access = subject.get_token(code)
60
60
  end
61
61
 
62
- it "returns AccessToken with same Client" do
62
+ it 'returns AccessToken with same Client' do
63
63
  expect(@access.client).to eq(client)
64
64
  end
65
65
 
66
- it "returns AccessToken with #token" do
66
+ it 'returns AccessToken with #token' do
67
67
  expect(@access.token).to eq('salmon')
68
68
  end
69
69
 
70
- it "returns AccessToken with #refresh_token" do
70
+ it 'returns AccessToken with #refresh_token' do
71
71
  expect(@access.refresh_token).to eq('trout')
72
72
  end
73
73
 
74
- it "returns AccessToken with #expires_in" do
74
+ it 'returns AccessToken with #expires_in' do
75
75
  expect(@access.expires_in).to eq(600)
76
76
  end
77
77
 
78
- it "returns AccessToken with #expires_at" do
78
+ it 'returns AccessToken with #expires_at' do
79
79
  expect(@access.expires_at).to be_kind_of(Integer)
80
80
  end
81
81
 
82
- it "returns AccessToken with params accessible via []" do
82
+ it 'returns AccessToken with params accessible via []' do
83
83
  expect(@access['extra_param']).to eq('steve')
84
84
  end
85
85
  end
@@ -1,7 +1,7 @@
1
1
  require 'helper'
2
2
 
3
3
  describe OAuth2::Strategy::Base do
4
- it "initializes with a Client" do
5
- expect{OAuth2::Strategy::Base.new(OAuth2::Client.new('abc', 'def'))}.not_to raise_error
4
+ it 'initializes with a Client' do
5
+ expect { OAuth2::Strategy::Base.new(OAuth2::Client.new('abc', 'def')) }.not_to raise_error
6
6
  end
7
7
  end
@@ -7,21 +7,21 @@ describe OAuth2::Strategy::ClientCredentials do
7
7
  let(:client) do
8
8
  OAuth2::Client.new('abc', 'def', :site => 'http://api.example.com') do |builder|
9
9
  builder.adapter :test do |stub|
10
- stub.post('/oauth/token', {'grant_type' => 'client_credentials'}) do |env|
11
- client_id, client_secret = HTTPAuth::Basic.unpack_authorization(env[:request_headers]['Authorization'])
12
- client_id == 'abc' && client_secret == 'def' or raise Faraday::Adapter::Test::Stubs::NotFound.new
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' || fail(Faraday::Adapter::Test::Stubs::NotFound)
13
13
  case @mode
14
- when "formencoded"
14
+ when 'formencoded'
15
15
  [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, kvform_token]
16
- when "json"
16
+ when 'json'
17
17
  [200, {'Content-Type' => 'application/json'}, json_token]
18
18
  end
19
19
  end
20
- stub.post('/oauth/token', {'client_id' => 'abc', 'client_secret' => 'def', 'grant_type' => 'client_credentials'}) do |env|
20
+ stub.post('/oauth/token', 'client_id' => 'abc', 'client_secret' => 'def', 'grant_type' => 'client_credentials') do |env|
21
21
  case @mode
22
- when "formencoded"
22
+ when 'formencoded'
23
23
  [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, kvform_token]
24
- when "json"
24
+ when 'json'
25
25
  [200, {'Content-Type' => 'application/json'}, json_token]
26
26
  end
27
27
  end
@@ -29,11 +29,22 @@ describe OAuth2::Strategy::ClientCredentials do
29
29
  end
30
30
  end
31
31
 
32
- subject {client.client_credentials}
32
+ subject { client.client_credentials }
33
33
 
34
- describe "#authorize_url" do
35
- it "raises NotImplementedError" do
36
- expect{subject.authorize_url}.to raise_error(NotImplementedError)
34
+ describe '#authorize_url' do
35
+ it 'raises NotImplementedError' do
36
+ expect { subject.authorize_url }.to raise_error(NotImplementedError)
37
+ end
38
+ end
39
+
40
+ describe '#authorization' do
41
+ it 'generates an Authorization header value for HTTP Basic Authentication' do
42
+ [
43
+ ['abc', 'def', 'Basic YWJjOmRlZg=='],
44
+ ['xxx', 'secret', 'Basic eHh4OnNlY3JldA==']
45
+ ].each do |client_id, client_secret, expected|
46
+ expect(subject.authorization(client_id, client_secret)).to eq(expected)
47
+ end
37
48
  end
38
49
  end
39
50
 
@@ -45,23 +56,23 @@ describe OAuth2::Strategy::ClientCredentials do
45
56
  @access = subject.get_token({}, auth_scheme == 'default' ? {} : {'auth_scheme' => auth_scheme})
46
57
  end
47
58
 
48
- it "returns AccessToken with same Client" do
59
+ it 'returns AccessToken with same Client' do
49
60
  expect(@access.client).to eq(client)
50
61
  end
51
62
 
52
- it "returns AccessToken with #token" do
63
+ it 'returns AccessToken with #token' do
53
64
  expect(@access.token).to eq('salmon')
54
65
  end
55
66
 
56
- it "returns AccessToken without #refresh_token" do
67
+ it 'returns AccessToken without #refresh_token' do
57
68
  expect(@access.refresh_token).to be_nil
58
69
  end
59
70
 
60
- it "returns AccessToken with #expires_in" do
71
+ it 'returns AccessToken with #expires_in' do
61
72
  expect(@access.expires_in).to eq(600)
62
73
  end
63
74
 
64
- it "returns AccessToken with #expires_at" do
75
+ it 'returns AccessToken with #expires_at' do
65
76
  expect(@access.expires_at).not_to be_nil
66
77
  end
67
78
  end
@@ -3,26 +3,26 @@ require 'helper'
3
3
  describe OAuth2::Strategy::Implicit do
4
4
  let(:client) { OAuth2::Client.new('abc', 'def', :site => 'http://api.example.com') }
5
5
 
6
- subject {client.implicit}
6
+ subject { client.implicit }
7
7
 
8
- describe "#authorize_url" do
9
- it "includes the client_id" do
8
+ describe '#authorize_url' do
9
+ it 'includes the client_id' do
10
10
  expect(subject.authorize_url).to include('client_id=abc')
11
11
  end
12
12
 
13
- it "includes the type" do
13
+ it 'includes the type' do
14
14
  expect(subject.authorize_url).to include('response_type=token')
15
15
  end
16
16
 
17
- it "includes passed in options" do
17
+ it 'includes passed in options' do
18
18
  cb = 'http://myserver.local/oauth/callback'
19
19
  expect(subject.authorize_url(:redirect_uri => cb)).to include("redirect_uri=#{Rack::Utils.escape(cb)}")
20
20
  end
21
21
  end
22
22
 
23
- describe "#get_token" do
24
- it "raises NotImplementedError" do
25
- expect{subject.get_token}.to raise_error(NotImplementedError)
23
+ describe '#get_token' do
24
+ it 'raises NotImplementedError' do
25
+ expect { subject.get_token }.to raise_error(NotImplementedError)
26
26
  end
27
27
  end
28
28
  end
@@ -7,21 +7,21 @@ describe OAuth2::Strategy::Password do
7
7
  b.adapter :test do |stub|
8
8
  stub.post('/oauth/token') do |env|
9
9
  case @mode
10
- when "formencoded"
11
- [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, 'expires_in=600&access_token=salmon&refresh_token=trout']
12
- when "json"
13
- [200, {'Content-Type' => 'application/json'}, '{"expires_in":600,"access_token":"salmon","refresh_token":"trout"}']
10
+ when 'formencoded'
11
+ [200, {'Content-Type' => 'application/x-www-form-urlencoded'}, 'expires_in=600&access_token=salmon&refresh_token=trout']
12
+ when 'json'
13
+ [200, {'Content-Type' => 'application/json'}, '{"expires_in":600,"access_token":"salmon","refresh_token":"trout"}']
14
14
  end
15
15
  end
16
16
  end
17
17
  end
18
18
  cli
19
19
  end
20
- subject {client.password}
20
+ subject { client.password }
21
21
 
22
- describe "#authorize_url" do
23
- it "raises NotImplementedError" do
24
- expect{subject.authorize_url}.to raise_error(NotImplementedError)
22
+ describe '#authorize_url' do
23
+ it 'raises NotImplementedError' do
24
+ expect { subject.authorize_url }.to raise_error(NotImplementedError)
25
25
  end
26
26
  end
27
27
 
@@ -32,23 +32,23 @@ describe OAuth2::Strategy::Password do
32
32
  @access = subject.get_token('username', 'password')
33
33
  end
34
34
 
35
- it "returns AccessToken with same Client" do
35
+ it 'returns AccessToken with same Client' do
36
36
  expect(@access.client).to eq(client)
37
37
  end
38
38
 
39
- it "returns AccessToken with #token" do
39
+ it 'returns AccessToken with #token' do
40
40
  expect(@access.token).to eq('salmon')
41
41
  end
42
42
 
43
- it "returns AccessToken with #refresh_token" do
43
+ it 'returns AccessToken with #refresh_token' do
44
44
  expect(@access.refresh_token).to eq('trout')
45
45
  end
46
46
 
47
- it "returns AccessToken with #expires_in" do
47
+ it 'returns AccessToken with #expires_in' do
48
48
  expect(@access.expires_in).to eq(600)
49
49
  end
50
50
 
51
- it "returns AccessToken with #expires_at" do
51
+ it 'returns AccessToken with #expires_at' do
52
52
  expect(@access.expires_at).not_to be_nil
53
53
  end
54
54
  end