oa-openid 0.2.6 → 0.3.0.rc3

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.
data/Gemfile CHANGED
@@ -1,5 +1,10 @@
1
+ require File.expand_path('../lib/omniauth/version', __FILE__)
2
+
1
3
  source 'http://rubygems.org'
2
4
 
5
+ gem 'oa-core', OmniAuth::Version::STRING, :path => '../oa-core'
6
+ gem 'oa-oauth', OmniAuth::Version::STRING, :path => '../oa-oauth'
7
+
3
8
  platforms :jruby do
4
9
  gem 'jruby-openssl', '~> 0.7'
5
10
  end
@@ -55,6 +55,7 @@ module OmniAuth
55
55
  module Strategies
56
56
  autoload :OpenID, 'omniauth/strategies/open_id'
57
57
  autoload :GoogleApps, 'omniauth/strategies/google_apps'
58
+ autoload :GoogleHybrid, 'omniauth/strategies/google_hybrid'
58
59
  autoload :Steam, 'omniauth/strategies/steam'
59
60
  end
60
61
  end
@@ -0,0 +1,55 @@
1
+ require 'rack/openid'
2
+ require 'omniauth/openid'
3
+ require 'oauth'
4
+
5
+ module OmniAuth
6
+ module Strategies
7
+ # OmniAuth strategy for connecting to Google via the OpenID+OAuth Hybrid Protocol.
8
+ # For help, check the example implementation on https://github.com/boyvanamstel/Google-Hybrid-Omniauth-implementation
9
+ class GoogleHybrid < OmniAuth::Strategies::OpenID
10
+
11
+ protected
12
+
13
+ def dummy_app
14
+ lambda{|env| [401, {"WWW-Authenticate" => Rack::OpenID.build_header(
15
+ :identifier => identifier,
16
+ :return_to => callback_url,
17
+ :required => @options[:required],
18
+ :optional => @options[:optional],
19
+ :"oauth[consumer]" => @options[:consumer_key],
20
+ :"oauth[scope]" => @options[:scope],
21
+ :method => 'post'
22
+ )}, []]}
23
+ end
24
+
25
+ def auth_hash
26
+ # Based on https://gist.github.com/569650 by nov
27
+ oauth_response = ::OpenID::OAuth::Response.from_success_response(@openid_response)
28
+
29
+ consumer = ::OAuth::Consumer.new(
30
+ @options[:consumer_key],
31
+ @options[:consumer_secret],
32
+ :site => 'https://www.google.com',
33
+ :access_token_path => '/accounts/OAuthGetAccessToken'
34
+ )
35
+ request_token = ::OAuth::RequestToken.new(
36
+ consumer,
37
+ oauth_response.request_token,
38
+ "" # OAuth request token secret is also blank in OpenID/OAuth Hybrid
39
+ )
40
+ @access_token = request_token.get_access_token
41
+
42
+ OmniAuth::Utils.deep_merge(super(), {
43
+ 'uid' => @openid_response.display_identifier,
44
+ 'user_info' => user_info(@openid_response),
45
+ 'credentials' => {
46
+ 'scope' => @options[:scope],
47
+ 'token' => @access_token.token,
48
+ 'secret' => @access_token.secret
49
+ }
50
+ })
51
+ end
52
+ end
53
+ end
54
+ end
55
+
@@ -56,9 +56,11 @@ module OmniAuth
56
56
  end
57
57
 
58
58
  def identifier
59
- options[:identifier] || request[IDENTIFIER_URL_PARAMETER]
59
+ i = options[:identifier] || request[IDENTIFIER_URL_PARAMETER]
60
+ i = nil if i == ''
61
+ i
60
62
  end
61
-
63
+
62
64
  def request_phase
63
65
  identifier ? start : get_identifier
64
66
  end
@@ -4,13 +4,13 @@ module OmniAuth
4
4
  MAJOR = 0
5
5
  end
6
6
  unless defined?(::OmniAuth::Version::MINOR)
7
- MINOR = 2
7
+ MINOR = 3
8
8
  end
9
9
  unless defined?(::OmniAuth::Version::PATCH)
10
- PATCH = 6
10
+ PATCH = 0
11
11
  end
12
12
  unless defined?(::OmniAuth::Version::PRE)
13
- PRE = nil
13
+ PRE = "rc3"
14
14
  end
15
15
  unless defined?(::OmniAuth::Version::STRING)
16
16
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
@@ -1,28 +1,26 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
  require File.expand_path('../lib/omniauth/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.add_runtime_dependency 'oa-core', OmniAuth::Version::STRING
6
- gem.add_runtime_dependency 'rack-openid', '~> 1.3.1'
7
- gem.add_runtime_dependency 'ruby-openid-apps-discovery', '~> 1.2.0'
8
- gem.add_development_dependency 'maruku', '~> 0.6'
5
+ gem.add_dependency 'oa-core', OmniAuth::Version::STRING
6
+ gem.add_dependency 'rack-openid', '~> 1.3.1'
7
+ gem.add_dependency 'ruby-openid-apps-discovery', '~> 1.2.0'
9
8
  gem.add_development_dependency 'rack-test', '~> 0.5'
10
9
  gem.add_development_dependency 'rake', '~> 0.8'
10
+ gem.add_development_dependency 'rdiscount', '~> 1.6'
11
11
  gem.add_development_dependency 'rspec', '~> 2.5'
12
12
  gem.add_development_dependency 'simplecov', '~> 0.4'
13
- gem.add_development_dependency 'webmock', '~> 1.6'
13
+ gem.add_development_dependency 'webmock', '~> 1.7'
14
14
  gem.add_development_dependency 'yard', '~> 0.7'
15
- gem.add_development_dependency 'ZenTest', '~> 4.5'
16
- gem.name = 'oa-openid'
17
- gem.version = OmniAuth::Version::STRING
15
+ gem.authors = ['Michael Bleigh', 'Erik Michaels-Ober']
18
16
  gem.description = %q{OpenID strategies for OmniAuth.}
19
- gem.summary = gem.description
20
17
  gem.email = ['michael@intridea.com', 'sferik@gmail.com']
21
- gem.homepage = 'http://github.com/intridea/omniauth'
22
- gem.authors = ['Michael Bleigh', 'Erik Michaels-Ober']
23
- gem.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
24
18
  gem.files = `git ls-files`.split("\n")
25
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ gem.homepage = 'http://github.com/intridea/omniauth'
20
+ gem.name = 'oa-openid'
26
21
  gem.require_paths = ['lib']
27
22
  gem.required_rubygems_version = Gem::Requirement.new('>= 1.3.6') if gem.respond_to? :required_rubygems_version=
23
+ gem.summary = gem.description
24
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
+ gem.version = OmniAuth::Version::STRING
28
26
  end
@@ -0,0 +1,63 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+ require 'rack/openid'
3
+ require 'omniauth/openid'
4
+ require 'oauth'
5
+
6
+ describe "OmniAuth::Strategies::GoogleHybrid" do
7
+
8
+ def app
9
+ Rack::Builder.new {
10
+ use OmniAuth::Test::PhonySession
11
+ use OmniAuth::Builder do
12
+ provider :google_hybrid, nil,
13
+ :name => 'google_hybrid',
14
+ :identifier => 'https://www.google.com/accounts/o8/id',
15
+ :scope => ["https://www.google.com/m8/feeds/", "https://mail.google.com/mail/feed/atom/"],
16
+ :consumer_key => '[your key here]',
17
+ :consumer_secret => '[your secret here]'
18
+ end
19
+ run lambda { |env| [404, {'Content-Type' => 'text/plain'}, [env.key?('omniauth.auth').to_s]] }
20
+ }.to_app
21
+ end
22
+
23
+ def session
24
+ last_request.env['rack.session']
25
+ end
26
+
27
+ def expired_query_string
28
+ 'openid=consumer&janrain_nonce=2011-07-21T20%3A14%3A56ZJ8LP3T&openid.assoc_handle=%7BHMAC-SHA1%7D%7B4e284c39%7D%7B9nvQeg%3D%3D%7D&openid.claimed_id=http%3A%2F%2Flocalhost%3A1123%2Fjohn.doe%3Fopenid.success%3Dtrue&openid.identity=http%3A%2F%2Flocalhost%3A1123%2Fjohn.doe%3Fopenid.success%3Dtrue&openid.mode=id_res&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.op_endpoint=http%3A%2F%2Flocalhost%3A1123%2Fserver%2F%3Fopenid.success%3Dtrue&openid.response_nonce=2011-07-21T20%3A14%3A56Zf9gC8S&openid.return_to=http%3A%2F%2Flocalhost%3A8888%2FDevelopment%2FWordpress%2Fwp_openid%2F%3Fopenid%3Dconsumer%26janrain_nonce%3D2011-07-21T20%253A14%253A56ZJ8LP3T&openid.sig=GufV13SUJt8VgmSZ92jGZCFBEvQ%3D&openid.signed=assoc_handle%2Cclaimed_id%2Cidentity%2Cmode%2Cns%2Cop_endpoint%2Cresponse_nonce%2Creturn_to%2Csigned'
29
+ end
30
+
31
+ describe 'followed by /auth/google_hybrid/callback' do
32
+ context 'successful' do
33
+ #before do
34
+ # @identifier_url = 'https://www.google.com/accounts/o8/id'
35
+ # # TODO: change this mock to actually return some sort of OpenID response
36
+ # stub_request(:get, @identifier_url)
37
+ # get '/auth/google_hybrid/callback'
38
+ #end
39
+
40
+ it "should set provider to google_hybrid"
41
+ it "should create auth_hash based on sreg"
42
+ it "should create auth_hash based on ax"
43
+
44
+ it "should exchange OAuth request token for access token"
45
+
46
+ #it 'should call through to the master app' do
47
+ # last_response.body.should == 'true'
48
+ #end
49
+ end
50
+
51
+ context 'unsuccessful' do
52
+ describe 'returning with expired credentials' do
53
+ before do
54
+ get '/auth/google_hybrid/callback?' + expired_query_string
55
+ end
56
+ it 'it should redirect to invalid credentials' do
57
+ last_response.should be_redirect
58
+ last_response.headers['Location'].should =~ %r{invalid_credentials}
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -1,71 +1,87 @@
1
1
  require File.expand_path('../../../spec_helper', __FILE__)
2
+ require 'rack/openid'
3
+ require 'omniauth/openid'
2
4
 
3
- describe OmniAuth::Strategies::OpenID do
5
+ describe OmniAuth::Strategies::OpenID, :type => :strategy do
4
6
 
5
- end
7
+ include OmniAuth::Test::StrategyTestCase
8
+
9
+ def strategy
10
+ [OmniAuth::Strategies::OpenID]
11
+ end
12
+
13
+ def expired_query_string
14
+ 'openid=consumer&janrain_nonce=2011-07-21T20%3A14%3A56ZJ8LP3T&openid.assoc_handle=%7BHMAC-SHA1%7D%7B4e284c39%7D%7B9nvQeg%3D%3D%7D&openid.claimed_id=http%3A%2F%2Flocalhost%3A1123%2Fjohn.doe%3Fopenid.success%3Dtrue&openid.identity=http%3A%2F%2Flocalhost%3A1123%2Fjohn.doe%3Fopenid.success%3Dtrue&openid.mode=id_res&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.op_endpoint=http%3A%2F%2Flocalhost%3A1123%2Fserver%2F%3Fopenid.success%3Dtrue&openid.response_nonce=2011-07-21T20%3A14%3A56Zf9gC8S&openid.return_to=http%3A%2F%2Flocalhost%3A8888%2FDevelopment%2FWordpress%2Fwp_openid%2F%3Fopenid%3Dconsumer%26janrain_nonce%3D2011-07-21T20%253A14%253A56ZJ8LP3T&openid.sig=GufV13SUJt8VgmSZ92jGZCFBEvQ%3D&openid.signed=assoc_handle%2Cclaimed_id%2Cidentity%2Cmode%2Cns%2Cop_endpoint%2Cresponse_nonce%2Creturn_to%2Csigned'
15
+ end
16
+
17
+ describe '/auth/open_id without an identifier URL' do
18
+ before do
19
+ get '/auth/open_id'
20
+ end
21
+
22
+ it 'should respond with OK' do
23
+ last_response.should be_ok
24
+ end
25
+
26
+ it 'should respond with HTML' do
27
+ last_response.content_type.should == 'text/html'
28
+ end
29
+
30
+ it 'should render an identifier URL input' do
31
+ last_response.body.should =~ %r{<input[^>]*#{OmniAuth::Strategies::OpenID::IDENTIFIER_URL_PARAMETER}}
32
+ end
33
+ end
6
34
 
7
- # require File.dirname(__FILE__) + '/../../spec_helper'
8
- #
9
- # describe OmniAuth::Strategies::OpenID, :type => :strategy do
10
- #
11
- # include OmniAuth::Test::StrategyTestCase
12
- #
13
- # def strategy
14
- # [OmniAuth::Strategies::OpenID]
15
- # end
16
- #
17
- # describe '/auth/open_id without an identifier URL' do
18
- # before do
19
- # get '/auth/open_id'
20
- # end
21
- #
22
- # it 'should respond with OK' do
23
- # last_response.should be_ok
24
- # end
25
- #
26
- # it 'should respond with HTML' do
27
- # last_response.content_type.should == 'text/html'
28
- # end
29
- #
30
- # it 'should render an identifier URL input' do
31
- # last_response.body.should =~ %r{<input[^>]*#{OmniAuth::Strategies::OpenID::IDENTIFIER_URL_PARAMETER}}
32
- # end
33
- # end
34
- #
35
- # describe '/auth/open_id with an identifier URL' do
36
- # before do
37
- # @identifier_url = 'http://me.example.org'
38
- # # TODO: change this mock to actually return some sort of OpenID response
39
- # stub_request(:get, @identifier_url)
40
- # get '/auth/open_id?openid_url=' + @identifier_url
41
- # end
42
- #
43
- # it 'should redirect to the OpenID identity URL' do
44
- # last_response.should be_redirect
45
- # last_response.headers['Location'].should =~ %r{^#{@identifier_url}.*}
46
- # end
47
- #
48
- # it 'should tell the OpenID server to return to the callback URL' do
49
- # return_to = CGI.escape(last_request.url + '/callback')
50
- # last_response.headers['Location'].should =~ %r{[\?&]openid.return_to=#{return_to}}
51
- # end
52
- #
53
- # end
54
- #
55
- # describe 'followed by /auth/open_id/callback' do
56
- # before do
57
- # @identifier_url = 'http://me.example.org'
58
- # # TODO: change this mock to actually return some sort of OpenID response
59
- # stub_request(:get, @identifier_url)
60
- # get '/auth/open_id/callback'
61
- # end
62
- #
63
- # sets_an_auth_hash
64
- # sets_provider_to 'open_id'
65
- # sets_uid_to 'http://me.example.org'
66
- #
67
- # it 'should call through to the master app' do
68
- # last_response.body.should == 'true'
69
- # end
70
- # end
71
- # end
35
+ #describe '/auth/open_id with an identifier URL' do
36
+ # context 'successful' do
37
+ # before do
38
+ # @identifier_url = 'http://me.example.org'
39
+ # # TODO: change this mock to actually return some sort of OpenID response
40
+ # stub_request(:get, @identifier_url)
41
+ # get '/auth/open_id?openid_url=' + @identifier_url
42
+ # end
43
+ #
44
+ # it 'should redirect to the OpenID identity URL' do
45
+ # last_response.should be_redirect
46
+ # last_response.headers['Location'].should =~ %r{^#{@identifier_url}.*}
47
+ # end
48
+ #
49
+ # it 'should tell the OpenID server to return to the callback URL' do
50
+ # return_to = CGI.escape(last_request.url + '/callback')
51
+ # last_response.headers['Location'].should =~ %r{[\?&]openid.return_to=#{return_to}}
52
+ # end
53
+ # end
54
+ #end
55
+
56
+ describe 'followed by /auth/open_id/callback' do
57
+ context 'successful' do
58
+ #before do
59
+ # @identifier_url = 'http://me.example.org'
60
+ # # TODO: change this mock to actually return some sort of OpenID response
61
+ # stub_request(:get, @identifier_url)
62
+ # get '/auth/open_id/callback'
63
+ #end
64
+
65
+ it "should set provider to open_id"
66
+ it "should create auth_hash based on sreg"
67
+ it "should create auth_hash based on ax"
68
+
69
+ #it 'should call through to the master app' do
70
+ # last_response.body.should == 'true'
71
+ #end
72
+ end
73
+
74
+ context 'unsuccessful' do
75
+ describe 'returning with expired credentials' do
76
+ before do
77
+ get '/auth/open_id/callback?' + expired_query_string
78
+ end
79
+ it 'it should redirect to invalid credentials' do
80
+ last_response.should be_redirect
81
+ last_response.headers['Location'].should =~ %r{invalid_credentials}
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ end
metadata CHANGED
@@ -1,8 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oa-openid
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.2.6
4
+ hash: 15424035
5
+ prerelease: 6
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 0
10
+ - rc
11
+ - 3
12
+ version: 0.3.0.rc3
6
13
  platform: ruby
7
14
  authors:
8
15
  - Michael Bleigh
@@ -11,7 +18,7 @@ autorequire:
11
18
  bindir: bin
12
19
  cert_chain: []
13
20
 
14
- date: 2011-05-20 00:00:00 Z
21
+ date: 2011-09-03 00:00:00 Z
15
22
  dependencies:
16
23
  - !ruby/object:Gem::Dependency
17
24
  name: oa-core
@@ -21,7 +28,14 @@ dependencies:
21
28
  requirements:
22
29
  - - "="
23
30
  - !ruby/object:Gem::Version
24
- version: 0.2.6
31
+ hash: 15424035
32
+ segments:
33
+ - 0
34
+ - 3
35
+ - 0
36
+ - rc
37
+ - 3
38
+ version: 0.3.0.rc3
25
39
  type: :runtime
26
40
  version_requirements: *id001
27
41
  - !ruby/object:Gem::Dependency
@@ -32,6 +46,11 @@ dependencies:
32
46
  requirements:
33
47
  - - ~>
34
48
  - !ruby/object:Gem::Version
49
+ hash: 25
50
+ segments:
51
+ - 1
52
+ - 3
53
+ - 1
35
54
  version: 1.3.1
36
55
  type: :runtime
37
56
  version_requirements: *id002
@@ -43,40 +62,57 @@ dependencies:
43
62
  requirements:
44
63
  - - ~>
45
64
  - !ruby/object:Gem::Version
65
+ hash: 31
66
+ segments:
67
+ - 1
68
+ - 2
69
+ - 0
46
70
  version: 1.2.0
47
71
  type: :runtime
48
72
  version_requirements: *id003
49
73
  - !ruby/object:Gem::Dependency
50
- name: maruku
74
+ name: rack-test
51
75
  prerelease: false
52
76
  requirement: &id004 !ruby/object:Gem::Requirement
53
77
  none: false
54
78
  requirements:
55
79
  - - ~>
56
80
  - !ruby/object:Gem::Version
57
- version: "0.6"
81
+ hash: 1
82
+ segments:
83
+ - 0
84
+ - 5
85
+ version: "0.5"
58
86
  type: :development
59
87
  version_requirements: *id004
60
88
  - !ruby/object:Gem::Dependency
61
- name: rack-test
89
+ name: rake
62
90
  prerelease: false
63
91
  requirement: &id005 !ruby/object:Gem::Requirement
64
92
  none: false
65
93
  requirements:
66
94
  - - ~>
67
95
  - !ruby/object:Gem::Version
68
- version: "0.5"
96
+ hash: 27
97
+ segments:
98
+ - 0
99
+ - 8
100
+ version: "0.8"
69
101
  type: :development
70
102
  version_requirements: *id005
71
103
  - !ruby/object:Gem::Dependency
72
- name: rake
104
+ name: rdiscount
73
105
  prerelease: false
74
106
  requirement: &id006 !ruby/object:Gem::Requirement
75
107
  none: false
76
108
  requirements:
77
109
  - - ~>
78
110
  - !ruby/object:Gem::Version
79
- version: "0.8"
111
+ hash: 3
112
+ segments:
113
+ - 1
114
+ - 6
115
+ version: "1.6"
80
116
  type: :development
81
117
  version_requirements: *id006
82
118
  - !ruby/object:Gem::Dependency
@@ -87,6 +123,10 @@ dependencies:
87
123
  requirements:
88
124
  - - ~>
89
125
  - !ruby/object:Gem::Version
126
+ hash: 9
127
+ segments:
128
+ - 2
129
+ - 5
90
130
  version: "2.5"
91
131
  type: :development
92
132
  version_requirements: *id007
@@ -98,6 +138,10 @@ dependencies:
98
138
  requirements:
99
139
  - - ~>
100
140
  - !ruby/object:Gem::Version
141
+ hash: 3
142
+ segments:
143
+ - 0
144
+ - 4
101
145
  version: "0.4"
102
146
  type: :development
103
147
  version_requirements: *id008
@@ -109,7 +153,11 @@ dependencies:
109
153
  requirements:
110
154
  - - ~>
111
155
  - !ruby/object:Gem::Version
112
- version: "1.6"
156
+ hash: 1
157
+ segments:
158
+ - 1
159
+ - 7
160
+ version: "1.7"
113
161
  type: :development
114
162
  version_requirements: *id009
115
163
  - !ruby/object:Gem::Dependency
@@ -120,20 +168,13 @@ dependencies:
120
168
  requirements:
121
169
  - - ~>
122
170
  - !ruby/object:Gem::Version
171
+ hash: 5
172
+ segments:
173
+ - 0
174
+ - 7
123
175
  version: "0.7"
124
176
  type: :development
125
177
  version_requirements: *id010
126
- - !ruby/object:Gem::Dependency
127
- name: ZenTest
128
- prerelease: false
129
- requirement: &id011 !ruby/object:Gem::Requirement
130
- none: false
131
- requirements:
132
- - - ~>
133
- - !ruby/object:Gem::Version
134
- version: "4.5"
135
- type: :development
136
- version_requirements: *id011
137
178
  description: OpenID strategies for OmniAuth.
138
179
  email:
139
180
  - michael@intridea.com
@@ -156,10 +197,12 @@ files:
156
197
  - lib/omniauth/openid.rb
157
198
  - lib/omniauth/openid/gapps.rb
158
199
  - lib/omniauth/strategies/google_apps.rb
200
+ - lib/omniauth/strategies/google_hybrid.rb
159
201
  - lib/omniauth/strategies/open_id.rb
160
202
  - lib/omniauth/strategies/steam.rb
161
203
  - lib/omniauth/version.rb
162
204
  - oa-openid.gemspec
205
+ - spec/omniauth/strategies/google_hybrid_spec.rb
163
206
  - spec/omniauth/strategies/open_id_spec.rb
164
207
  - spec/spec_helper.rb
165
208
  homepage: http://github.com/intridea/omniauth
@@ -175,20 +218,29 @@ required_ruby_version: !ruby/object:Gem::Requirement
175
218
  requirements:
176
219
  - - ">="
177
220
  - !ruby/object:Gem::Version
221
+ hash: 3
222
+ segments:
223
+ - 0
178
224
  version: "0"
179
225
  required_rubygems_version: !ruby/object:Gem::Requirement
180
226
  none: false
181
227
  requirements:
182
- - - ">="
228
+ - - ">"
183
229
  - !ruby/object:Gem::Version
184
- version: 1.3.6
230
+ hash: 25
231
+ segments:
232
+ - 1
233
+ - 3
234
+ - 1
235
+ version: 1.3.1
185
236
  requirements: []
186
237
 
187
238
  rubyforge_project:
188
- rubygems_version: 1.8.2
239
+ rubygems_version: 1.8.10
189
240
  signing_key:
190
241
  specification_version: 3
191
242
  summary: OpenID strategies for OmniAuth.
192
243
  test_files:
244
+ - spec/omniauth/strategies/google_hybrid_spec.rb
193
245
  - spec/omniauth/strategies/open_id_spec.rb
194
246
  - spec/spec_helper.rb