oauth2 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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