oa-openid 0.2.6 → 0.3.0.rc3

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