omniauth 0.2.6 → 0.3.0.rc3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of omniauth might be problematic. Click here for more details.

Files changed (189) hide show
  1. data/README.md +62 -34
  2. data/lib/omniauth/version.rb +3 -3
  3. metadata +74 -228
  4. data/Gemfile +0 -12
  5. data/Rakefile +0 -51
  6. data/oa-basic/Gemfile +0 -7
  7. data/oa-basic/LICENSE +0 -19
  8. data/oa-basic/README.rdoc +0 -34
  9. data/oa-basic/Rakefile +0 -6
  10. data/oa-basic/lib/oa-basic.rb +0 -1
  11. data/oa-basic/lib/omniauth/basic.rb +0 -8
  12. data/oa-basic/lib/omniauth/strategies/http_basic.rb +0 -56
  13. data/oa-basic/lib/omniauth/version.rb +0 -19
  14. data/oa-basic/oa-basic.gemspec +0 -27
  15. data/oa-basic/spec/omniauth/strategies/basic_spec.rb +0 -7
  16. data/oa-basic/spec/spec_helper.rb +0 -11
  17. data/oa-core/Gemfile +0 -3
  18. data/oa-core/LICENSE +0 -19
  19. data/oa-core/Rakefile +0 -6
  20. data/oa-core/autotest/discover.rb +0 -1
  21. data/oa-core/lib/oa-core.rb +0 -1
  22. data/oa-core/lib/omniauth/builder.rb +0 -33
  23. data/oa-core/lib/omniauth/core.rb +0 -135
  24. data/oa-core/lib/omniauth/form.rb +0 -186
  25. data/oa-core/lib/omniauth/strategy.rb +0 -227
  26. data/oa-core/lib/omniauth/test.rb +0 -12
  27. data/oa-core/lib/omniauth/test/phony_session.rb +0 -8
  28. data/oa-core/lib/omniauth/test/strategy_macros.rb +0 -34
  29. data/oa-core/lib/omniauth/test/strategy_test_case.rb +0 -49
  30. data/oa-core/lib/omniauth/version.rb +0 -19
  31. data/oa-core/oa-core.gemspec +0 -24
  32. data/oa-core/spec/omniauth/builder_spec.rb +0 -20
  33. data/oa-core/spec/omniauth/core_spec.rb +0 -79
  34. data/oa-core/spec/omniauth/strategy_spec.rb +0 -363
  35. data/oa-core/spec/spec_helper.rb +0 -12
  36. data/oa-enterprise/Gemfile +0 -7
  37. data/oa-enterprise/LICENSE +0 -19
  38. data/oa-enterprise/README.rdoc +0 -82
  39. data/oa-enterprise/Rakefile +0 -6
  40. data/oa-enterprise/lib/oa-enterprise.rb +0 -1
  41. data/oa-enterprise/lib/omniauth/enterprise.rb +0 -8
  42. data/oa-enterprise/lib/omniauth/strategies/cas.rb +0 -47
  43. data/oa-enterprise/lib/omniauth/strategies/cas/configuration.rb +0 -98
  44. data/oa-enterprise/lib/omniauth/strategies/cas/service_ticket_validator.rb +0 -91
  45. data/oa-enterprise/lib/omniauth/strategies/ldap.rb +0 -111
  46. data/oa-enterprise/lib/omniauth/strategies/ldap/adaptor.rb +0 -279
  47. data/oa-enterprise/lib/omniauth/version.rb +0 -19
  48. data/oa-enterprise/oa-enterprise.gemspec +0 -31
  49. data/oa-enterprise/spec/fixtures/cas_failure.xml +0 -4
  50. data/oa-enterprise/spec/fixtures/cas_success.xml +0 -8
  51. data/oa-enterprise/spec/omniauth/strategies/cas_spec.rb +0 -94
  52. data/oa-enterprise/spec/omniauth/strategies/ldap_spec.rb +0 -41
  53. data/oa-enterprise/spec/spec_helper.rb +0 -14
  54. data/oa-more/Gemfile +0 -7
  55. data/oa-more/LICENSE +0 -19
  56. data/oa-more/README.rdoc +0 -22
  57. data/oa-more/Rakefile +0 -6
  58. data/oa-more/lib/oa-more.rb +0 -1
  59. data/oa-more/lib/omniauth/more.rb +0 -11
  60. data/oa-more/lib/omniauth/strategies/draugiem.rb +0 -104
  61. data/oa-more/lib/omniauth/strategies/flickr.rb +0 -86
  62. data/oa-more/lib/omniauth/strategies/ign.rb +0 -93
  63. data/oa-more/lib/omniauth/strategies/windows_live.rb +0 -39
  64. data/oa-more/lib/omniauth/strategies/windows_live/windowslivelogin.rb +0 -1143
  65. data/oa-more/lib/omniauth/strategies/yupoo.rb +0 -67
  66. data/oa-more/lib/omniauth/version.rb +0 -19
  67. data/oa-more/oa-more.gemspec +0 -29
  68. data/oa-more/spec/omniauth/strategies/draugiem_spec.rb +0 -51
  69. data/oa-more/spec/omniauth/strategies/flickr_spec.rb +0 -7
  70. data/oa-more/spec/spec_helper.rb +0 -11
  71. data/oa-oauth/Gemfile +0 -7
  72. data/oa-oauth/LICENSE +0 -19
  73. data/oa-oauth/README.rdoc +0 -35
  74. data/oa-oauth/Rakefile +0 -6
  75. data/oa-oauth/autotest/discover.rb +0 -1
  76. data/oa-oauth/lib/oa-oauth.rb +0 -1
  77. data/oa-oauth/lib/omniauth/oauth.rb +0 -56
  78. data/oa-oauth/lib/omniauth/strategies/bitly.rb +0 -46
  79. data/oa-oauth/lib/omniauth/strategies/dailymile.rb +0 -64
  80. data/oa-oauth/lib/omniauth/strategies/doit.rb +0 -60
  81. data/oa-oauth/lib/omniauth/strategies/dopplr.rb +0 -53
  82. data/oa-oauth/lib/omniauth/strategies/douban.rb +0 -60
  83. data/oa-oauth/lib/omniauth/strategies/evernote.rb +0 -54
  84. data/oa-oauth/lib/omniauth/strategies/facebook.rb +0 -70
  85. data/oa-oauth/lib/omniauth/strategies/foursquare.rb +0 -62
  86. data/oa-oauth/lib/omniauth/strategies/github.rb +0 -50
  87. data/oa-oauth/lib/omniauth/strategies/goodreads.rb +0 -44
  88. data/oa-oauth/lib/omniauth/strategies/google.rb +0 -80
  89. data/oa-oauth/lib/omniauth/strategies/gowalla.rb +0 -72
  90. data/oa-oauth/lib/omniauth/strategies/hyves.rb +0 -67
  91. data/oa-oauth/lib/omniauth/strategies/identica.rb +0 -49
  92. data/oa-oauth/lib/omniauth/strategies/instagram.rb +0 -56
  93. data/oa-oauth/lib/omniauth/strategies/instapaper.rb +0 -40
  94. data/oa-oauth/lib/omniauth/strategies/linked_in.rb +0 -56
  95. data/oa-oauth/lib/omniauth/strategies/mailru.rb +0 -107
  96. data/oa-oauth/lib/omniauth/strategies/meetup.rb +0 -56
  97. data/oa-oauth/lib/omniauth/strategies/miso.rb +0 -41
  98. data/oa-oauth/lib/omniauth/strategies/mixi.rb +0 -59
  99. data/oa-oauth/lib/omniauth/strategies/netflix.rb +0 -65
  100. data/oa-oauth/lib/omniauth/strategies/oauth.rb +0 -83
  101. data/oa-oauth/lib/omniauth/strategies/oauth2.rb +0 -91
  102. data/oa-oauth/lib/omniauth/strategies/plurk.rb +0 -58
  103. data/oa-oauth/lib/omniauth/strategies/qzone.rb +0 -69
  104. data/oa-oauth/lib/omniauth/strategies/rdio.rb +0 -45
  105. data/oa-oauth/lib/omniauth/strategies/renren.rb +0 -87
  106. data/oa-oauth/lib/omniauth/strategies/salesforce.rb +0 -44
  107. data/oa-oauth/lib/omniauth/strategies/smug_mug.rb +0 -42
  108. data/oa-oauth/lib/omniauth/strategies/sound_cloud.rb +0 -46
  109. data/oa-oauth/lib/omniauth/strategies/t163.rb +0 -57
  110. data/oa-oauth/lib/omniauth/strategies/taobao.rb +0 -79
  111. data/oa-oauth/lib/omniauth/strategies/teambox.rb +0 -49
  112. data/oa-oauth/lib/omniauth/strategies/thirty_seven_signals.rb +0 -41
  113. data/oa-oauth/lib/omniauth/strategies/tqq.rb +0 -64
  114. data/oa-oauth/lib/omniauth/strategies/trade_me.rb +0 -45
  115. data/oa-oauth/lib/omniauth/strategies/trip_it.rb +0 -22
  116. data/oa-oauth/lib/omniauth/strategies/tsina.rb +0 -79
  117. data/oa-oauth/lib/omniauth/strategies/tsohu.rb +0 -57
  118. data/oa-oauth/lib/omniauth/strategies/tumblr.rb +0 -60
  119. data/oa-oauth/lib/omniauth/strategies/twitter.rb +0 -57
  120. data/oa-oauth/lib/omniauth/strategies/type_pad.rb +0 -76
  121. data/oa-oauth/lib/omniauth/strategies/vimeo.rb +0 -54
  122. data/oa-oauth/lib/omniauth/strategies/vkontakte.rb +0 -87
  123. data/oa-oauth/lib/omniauth/strategies/xauth.rb +0 -67
  124. data/oa-oauth/lib/omniauth/strategies/yahoo.rb +0 -55
  125. data/oa-oauth/lib/omniauth/strategies/yammer.rb +0 -43
  126. data/oa-oauth/lib/omniauth/strategies/you_tube.rb +0 -73
  127. data/oa-oauth/lib/omniauth/version.rb +0 -19
  128. data/oa-oauth/oa-oauth.gemspec +0 -32
  129. data/oa-oauth/spec/fixtures/basecamp_200.xml +0 -24
  130. data/oa-oauth/spec/fixtures/campfire_200.json +0 -10
  131. data/oa-oauth/spec/omniauth/strategies/bitly_spec.rb +0 -5
  132. data/oa-oauth/spec/omniauth/strategies/dailymile_spec.rb +0 -5
  133. data/oa-oauth/spec/omniauth/strategies/doit_spec.rb +0 -5
  134. data/oa-oauth/spec/omniauth/strategies/dopplr_spec.rb +0 -5
  135. data/oa-oauth/spec/omniauth/strategies/douban_spec.rb +0 -5
  136. data/oa-oauth/spec/omniauth/strategies/evernote_spec.rb +0 -5
  137. data/oa-oauth/spec/omniauth/strategies/facebook_spec.rb +0 -5
  138. data/oa-oauth/spec/omniauth/strategies/foursquare_spec.rb +0 -18
  139. data/oa-oauth/spec/omniauth/strategies/github_spec.rb +0 -5
  140. data/oa-oauth/spec/omniauth/strategies/goodreads_spec.rb +0 -6
  141. data/oa-oauth/spec/omniauth/strategies/google_spec.rb +0 -5
  142. data/oa-oauth/spec/omniauth/strategies/gowalla_spec.rb +0 -5
  143. data/oa-oauth/spec/omniauth/strategies/hyves_spec.rb +0 -5
  144. data/oa-oauth/spec/omniauth/strategies/identica_spec.rb +0 -5
  145. data/oa-oauth/spec/omniauth/strategies/linked_in_spec.rb +0 -5
  146. data/oa-oauth/spec/omniauth/strategies/mailru_spec.rb +0 -5
  147. data/oa-oauth/spec/omniauth/strategies/meetup_spec.rb +0 -14
  148. data/oa-oauth/spec/omniauth/strategies/miso_spec.rb +0 -5
  149. data/oa-oauth/spec/omniauth/strategies/netflix_spec.rb +0 -5
  150. data/oa-oauth/spec/omniauth/strategies/oauth2_spec.rb +0 -0
  151. data/oa-oauth/spec/omniauth/strategies/oauth_spec.rb +0 -77
  152. data/oa-oauth/spec/omniauth/strategies/plurk_spec.rb +0 -5
  153. data/oa-oauth/spec/omniauth/strategies/rdio_spec.rb +0 -5
  154. data/oa-oauth/spec/omniauth/strategies/salesforce_spec.rb +0 -5
  155. data/oa-oauth/spec/omniauth/strategies/smug_mug_spec.rb +0 -5
  156. data/oa-oauth/spec/omniauth/strategies/sound_cloud_spec.rb +0 -5
  157. data/oa-oauth/spec/omniauth/strategies/t163_spec.rb +0 -5
  158. data/oa-oauth/spec/omniauth/strategies/taobao_spec.rb +0 -5
  159. data/oa-oauth/spec/omniauth/strategies/teambox_spec.rb +0 -5
  160. data/oa-oauth/spec/omniauth/strategies/thirty_seven_signals_spec.rb +0 -5
  161. data/oa-oauth/spec/omniauth/strategies/trade_me_spec.rb +0 -5
  162. data/oa-oauth/spec/omniauth/strategies/trip_it_spec.rb +0 -5
  163. data/oa-oauth/spec/omniauth/strategies/tsina_spec.rb +0 -5
  164. data/oa-oauth/spec/omniauth/strategies/tumblr_spec.rb +0 -5
  165. data/oa-oauth/spec/omniauth/strategies/twitter_spec.rb +0 -20
  166. data/oa-oauth/spec/omniauth/strategies/type_pad_spec.rb +0 -5
  167. data/oa-oauth/spec/omniauth/strategies/vimeo_spec.rb +0 -5
  168. data/oa-oauth/spec/omniauth/strategies/vkontakte_spec.rb +0 -5
  169. data/oa-oauth/spec/omniauth/strategies/yahoo_spec.rb +0 -5
  170. data/oa-oauth/spec/omniauth/strategies/yammer_spec.rb +0 -5
  171. data/oa-oauth/spec/omniauth/strategies/you_tube_spec.rb +0 -5
  172. data/oa-oauth/spec/spec_helper.rb +0 -27
  173. data/oa-oauth/spec/support/shared_examples.rb +0 -29
  174. data/oa-openid/Gemfile +0 -7
  175. data/oa-openid/LICENSE +0 -19
  176. data/oa-openid/README.rdoc +0 -51
  177. data/oa-openid/Rakefile +0 -6
  178. data/oa-openid/lib/oa-openid.rb +0 -1
  179. data/oa-openid/lib/omniauth/openid.rb +0 -60
  180. data/oa-openid/lib/omniauth/openid/gapps.rb +0 -32
  181. data/oa-openid/lib/omniauth/strategies/google_apps.rb +0 -23
  182. data/oa-openid/lib/omniauth/strategies/open_id.rb +0 -132
  183. data/oa-openid/lib/omniauth/strategies/steam.rb +0 -55
  184. data/oa-openid/lib/omniauth/version.rb +0 -19
  185. data/oa-openid/oa-openid.gemspec +0 -28
  186. data/oa-openid/spec/omniauth/strategies/open_id_spec.rb +0 -71
  187. data/oa-openid/spec/spec_helper.rb +0 -14
  188. data/omniauth.gemspec +0 -20
  189. data/tasks/all.rb +0 -134
@@ -1,49 +0,0 @@
1
- require 'rack'
2
- require 'omniauth/test'
3
-
4
- module OmniAuth
5
-
6
- module Test
7
-
8
- # Support for testing OmniAuth strategies.
9
- #
10
- # @example Usage
11
- # class MyStrategyTest < Test::Unit::TestCase
12
- # include OmniAuth::Test::StrategyTestCase
13
- # def strategy
14
- # # return the parameters to a Rack::Builder map call:
15
- # [MyStrategy.new, :some, :configuration, :options => 'here']
16
- # end
17
- # setup do
18
- # post '/auth/my_strategy/callback', :user => { 'name' => 'Dylan', 'id' => '445' }
19
- # end
20
- # end
21
- module StrategyTestCase
22
-
23
- def app
24
- strat = self.strategy
25
- resp = self.app_response
26
- Rack::Builder.new {
27
- use OmniAuth::Test::PhonySession
28
- use *strat
29
- run lambda {|env| [404, {'Content-Type' => 'text/plain'}, [resp || env.key?('omniauth.auth').to_s]] }
30
- }.to_app
31
- end
32
-
33
- def app_response
34
- nil
35
- end
36
-
37
- def session
38
- last_request.env['rack.session']
39
- end
40
-
41
- def strategy
42
- raise NotImplementedError.new('Including specs must define #strategy')
43
- end
44
-
45
- end
46
-
47
- end
48
-
49
- end
@@ -1,19 +0,0 @@
1
- module OmniAuth
2
- module Version
3
- unless defined?(::OmniAuth::Version::MAJOR)
4
- MAJOR = 0
5
- end
6
- unless defined?(::OmniAuth::Version::MINOR)
7
- MINOR = 2
8
- end
9
- unless defined?(::OmniAuth::Version::PATCH)
10
- PATCH = 6
11
- end
12
- unless defined?(::OmniAuth::Version::PRE)
13
- PRE = nil
14
- end
15
- unless defined?(::OmniAuth::Version::STRING)
16
- STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
17
- end
18
- end
19
- end
@@ -1,24 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/omniauth/version', __FILE__)
3
-
4
- Gem::Specification.new do |gem|
5
- gem.add_development_dependency 'maruku', '~> 0.6'
6
- gem.add_development_dependency 'simplecov', '~> 0.4'
7
- gem.add_development_dependency 'rack-test', '~> 0.5'
8
- gem.add_development_dependency 'rake', '~> 0.8'
9
- gem.add_development_dependency 'rspec', '~> 2.5'
10
- gem.add_development_dependency 'yard', '~> 0.7'
11
- gem.add_development_dependency 'ZenTest', '~> 4.5'
12
- gem.name = 'oa-core'
13
- gem.version = OmniAuth::Version::STRING
14
- gem.description = %q{Core strategies for OmniAuth.}
15
- gem.summary = gem.description
16
- gem.email = ['michael@intridea.com', 'sferik@gmail.com']
17
- gem.homepage = 'http://github.com/intridea/omniauth'
18
- gem.authors = ['Michael Bleigh', 'Erik Michaels-Ober']
19
- gem.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
20
- gem.files = `git ls-files`.split("\n")
21
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
- gem.require_paths = ['lib']
23
- gem.required_rubygems_version = Gem::Requirement.new('>= 1.3.6') if gem.respond_to? :required_rubygems_version=
24
- end
@@ -1,20 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe OmniAuth::Builder do
4
- describe '#provider' do
5
- it 'should translate a symbol to a constant' do
6
- OmniAuth::Strategies.should_receive(:const_get).with('MyStrategy').and_return(Class.new)
7
- OmniAuth::Builder.new(nil) do
8
- provider :my_strategy
9
- end
10
- end
11
-
12
- it 'should also just accept a class' do
13
- class ::ExampleClass; end
14
-
15
- lambda{ OmniAuth::Builder.new(nil) do
16
- provider ::ExampleClass
17
- end }.should_not raise_error
18
- end
19
- end
20
- end
@@ -1,79 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe OmniAuth do
4
- describe '.strategies' do
5
- it 'should increase when a new strategy is made' do
6
- lambda{ class ExampleStrategy
7
- include OmniAuth::Strategy
8
- end }.should change(OmniAuth.strategies, :size).by(1)
9
- OmniAuth.strategies.last.should == ExampleStrategy
10
- end
11
- end
12
-
13
- context 'configuration' do
14
- it 'should be callable from .configure' do
15
- OmniAuth.configure do |c|
16
- c.should be_kind_of(OmniAuth::Configuration)
17
- end
18
- end
19
-
20
- before do
21
- @old_path_prefix = OmniAuth.config.path_prefix
22
- @old_on_failure = OmniAuth.config.on_failure
23
- end
24
-
25
- after do
26
- OmniAuth.configure do |config|
27
- config.path_prefix = @old_path_prefix
28
- config.on_failure = @old_on_failure
29
- end
30
- end
31
-
32
- it 'should be able to set the path' do
33
- OmniAuth.configure do |config|
34
- config.path_prefix = '/awesome'
35
- end
36
-
37
- OmniAuth.config.path_prefix.should == '/awesome'
38
- end
39
-
40
- it 'should be able to set the on_failure rack app' do
41
- OmniAuth.configure do |config|
42
- config.on_failure do
43
- 'yoyo'
44
- end
45
- end
46
-
47
- OmniAuth.config.on_failure.call.should == 'yoyo'
48
- end
49
- end
50
-
51
- describe '::Utils' do
52
- describe '.deep_merge' do
53
- it 'should combine hashes' do
54
- OmniAuth::Utils.deep_merge({'abc' => {'def' => 123}}, {'abc' => {'foo' => 'bar'}}).should == {
55
- 'abc' => {'def' => 123, 'foo' => 'bar'}
56
- }
57
- end
58
- end
59
-
60
- describe '.camelize' do
61
- it 'should work on normal cases' do
62
- {
63
- 'some_word' => 'SomeWord',
64
- 'AnotherWord' => 'AnotherWord',
65
- 'one' => 'One',
66
- 'three_words_now' => 'ThreeWordsNow'
67
- }.each_pair{ |k,v| OmniAuth::Utils.camelize(k).should == v }
68
- end
69
-
70
- it 'should work in special cases' do
71
- {
72
- 'oauth' => "OAuth",
73
- 'openid' => 'OpenID',
74
- 'open_id' => 'OpenID'
75
- }.each_pair{ |k,v| OmniAuth::Utils.camelize(k).should == v}
76
- end
77
- end
78
- end
79
- end
@@ -1,363 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- class ExampleStrategy
4
- include OmniAuth::Strategy
5
- def call(env); self.call!(env) end
6
- attr_reader :last_env
7
- def request_phase
8
- @fail = fail!(options[:failure]) if options[:failure]
9
- @last_env = env
10
- return @fail if @fail
11
- raise "Request Phase"
12
- end
13
- def callback_phase
14
- @fail = fail!(options[:failure]) if options[:failure]
15
- @last_env = env
16
- return @fail if @fail
17
- raise "Callback Phase"
18
- end
19
- end
20
-
21
- def make_env(path = '/auth/test', props = {})
22
- {
23
- 'REQUEST_METHOD' => 'GET',
24
- 'PATH_INFO' => path,
25
- 'rack.session' => {},
26
- 'rack.input' => StringIO.new('test=true')
27
- }.merge(props)
28
- end
29
-
30
- describe OmniAuth::Strategy do
31
- let(:app){ lambda{|env| [404, {}, ['Awesome']]}}
32
- describe '#initialize' do
33
- context 'options extraction' do
34
- it 'should be the last argument if the last argument is a Hash' do
35
- ExampleStrategy.new(app, 'test', :abc => 123).options[:abc].should == 123
36
- end
37
-
38
- it 'should be a blank hash if none are provided' do
39
- ExampleStrategy.new(app, 'test').options.should == {}
40
- end
41
- end
42
- end
43
-
44
- describe '#full_host' do
45
- let(:strategy){ ExampleStrategy.new(app, 'test', {}) }
46
- it 'should not freak out if there is a pipe in the URL' do
47
- strategy.call!(make_env('/whatever', 'rack.url_scheme' => 'http', 'SERVER_NAME' => 'facebook.lame', 'QUERY_STRING' => 'code=asofibasf|asoidnasd', 'SCRIPT_NAME' => '', 'SERVER_PORT' => 80))
48
- lambda{ strategy.full_host }.should_not raise_error
49
- end
50
- end
51
-
52
- describe '#call' do
53
- let(:strategy){ ExampleStrategy.new(app, 'test', @options) }
54
-
55
- context 'omniauth.origin' do
56
- it 'should be set on the request phase' do
57
- lambda{ strategy.call(make_env('/auth/test', 'HTTP_REFERER' => 'http://example.com/origin')) }.should raise_error("Request Phase")
58
- strategy.last_env['rack.session']['omniauth.origin'].should == 'http://example.com/origin'
59
- end
60
-
61
- it 'should be turned into an env variable on the callback phase' do
62
- lambda{ strategy.call(make_env('/auth/test/callback', 'rack.session' => {'omniauth.origin' => 'http://example.com/origin'})) }.should raise_error("Callback Phase")
63
- strategy.last_env['omniauth.origin'].should == 'http://example.com/origin'
64
- end
65
-
66
- it 'should set from the params if provided' do
67
- lambda{ strategy.call(make_env('/auth/test', 'QUERY_STRING' => 'origin=/foo')) }.should raise_error('Request Phase')
68
- strategy.last_env['rack.session']['omniauth.origin'].should == '/foo'
69
- end
70
-
71
- it 'should be set on the failure env' do
72
- OmniAuth.config.should_receive(:on_failure).and_return(lambda{|env| env})
73
- @options = {:failure => :forced_fail}
74
- strategy.call(make_env('/auth/test/callback', 'rack.session' => {'omniauth.origin' => '/awesome'}))
75
- end
76
-
77
- context "with script_name" do
78
- it 'should be set on the request phase, containing full path' do
79
- env = {'HTTP_REFERER' => 'http://example.com/sub_uri/origin', 'SCRIPT_NAME' => '/sub_uri' }
80
- lambda{ strategy.call(make_env('/auth/test', env)) }.should raise_error("Request Phase")
81
- strategy.last_env['rack.session']['omniauth.origin'].should == 'http://example.com/sub_uri/origin'
82
- end
83
-
84
- it 'should be turned into an env variable on the callback phase, containing full path' do
85
- env = {
86
- 'rack.session' => {'omniauth.origin' => 'http://example.com/sub_uri/origin'},
87
- 'SCRIPT_NAME' => '/sub_uri'
88
- }
89
-
90
- lambda{ strategy.call(make_env('/auth/test/callback', env)) }.should raise_error("Callback Phase")
91
- strategy.last_env['omniauth.origin'].should == 'http://example.com/sub_uri/origin'
92
- end
93
-
94
- end
95
- end
96
-
97
- context 'default paths' do
98
- it 'should use the default request path' do
99
- lambda{ strategy.call(make_env) }.should raise_error("Request Phase")
100
- end
101
-
102
- it 'should be case insensitive on request path' do
103
- lambda{ strategy.call(make_env('/AUTH/Test'))}.should raise_error("Request Phase")
104
- end
105
-
106
- it 'should be case insensitive on callback path' do
107
- lambda{ strategy.call(make_env('/AUTH/TeSt/CaLlBAck'))}.should raise_error("Callback Phase")
108
- end
109
-
110
- it 'should use the default callback path' do
111
- lambda{ strategy.call(make_env('/auth/test/callback')) }.should raise_error("Callback Phase")
112
- end
113
-
114
- it 'should strip trailing spaces on request' do
115
- lambda{ strategy.call(make_env('/auth/test/')) }.should raise_error("Request Phase")
116
- end
117
-
118
- it 'should strip trailing spaces on callback' do
119
- lambda{ strategy.call(make_env('/auth/test/callback/')) }.should raise_error("Callback Phase")
120
- end
121
-
122
- context 'callback_url' do
123
- it 'uses the default callback_path' do
124
- strategy.should_receive(:full_host).and_return('http://example.com')
125
-
126
- lambda{ strategy.call(make_env) }.should raise_error("Request Phase")
127
-
128
- strategy.callback_url.should == 'http://example.com/auth/test/callback'
129
- end
130
-
131
- it 'preserves the query parameters' do
132
- strategy.stub(:full_host).and_return('http://example.com')
133
- begin
134
- strategy.call(make_env('/auth/test', 'QUERY_STRING' => 'id=5'))
135
- rescue RuntimeError; end
136
- strategy.callback_url.should == 'http://example.com/auth/test/callback?id=5'
137
- end
138
-
139
- it 'consider script name' do
140
- strategy.stub(:full_host).and_return('http://example.com')
141
- begin
142
- strategy.call(make_env('/auth/test', 'SCRIPT_NAME' => '/sub_uri'))
143
- rescue RuntimeError; end
144
- strategy.callback_url.should == 'http://example.com/sub_uri/auth/test/callback'
145
- end
146
- end
147
- end
148
-
149
- context 'pre-request call through' do
150
- subject { ExampleStrategy.new(app, 'test') }
151
- let(:app){ lambda{|env| env['omniauth.boom'] = true; [env['test.status'] || 404, {}, ['Whatev']] } }
152
- it 'should be able to modify the env on the fly before the request_phase' do
153
- lambda{ subject.call(make_env) }.should raise_error("Request Phase")
154
- subject.response.status.should == 404
155
- subject.last_env.should be_key('omniauth.boom')
156
- end
157
-
158
- it 'should call through to the app instead if a non-404 response is received' do
159
- lambda{ subject.call(make_env('/auth/test', 'test.status' => 200)) }.should_not raise_error
160
- subject.response.body.should == ['Whatev']
161
- end
162
- end
163
-
164
- context 'custom paths' do
165
- it 'should use a custom request_path if one is provided' do
166
- @options = {:request_path => '/awesome'}
167
- lambda{ strategy.call(make_env('/awesome')) }.should raise_error("Request Phase")
168
- end
169
-
170
- it 'should use a custom callback_path if one is provided' do
171
- @options = {:callback_path => '/radical'}
172
- lambda{ strategy.call(make_env('/radical')) }.should raise_error("Callback Phase")
173
- end
174
-
175
- context 'callback_url' do
176
- it 'uses a custom callback_path if one is provided' do
177
- @options = {:callback_path => '/radical'}
178
- strategy.should_receive(:full_host).and_return('http://example.com')
179
-
180
- lambda{ strategy.call(make_env('/radical')) }.should raise_error("Callback Phase")
181
-
182
- strategy.callback_url.should == 'http://example.com/radical'
183
- end
184
-
185
- it 'preserves the query parameters' do
186
- @options = {:callback_path => '/radical'}
187
- strategy.stub(:full_host).and_return('http://example.com')
188
- begin
189
- strategy.call(make_env('/auth/test', 'QUERY_STRING' => 'id=5'))
190
- rescue RuntimeError; end
191
- strategy.callback_url.should == 'http://example.com/radical?id=5'
192
- end
193
- end
194
- end
195
-
196
- context 'custom prefix' do
197
- before do
198
- @options = {:path_prefix => '/wowzers'}
199
- end
200
-
201
- it 'should use a custom prefix for request' do
202
- lambda{ strategy.call(make_env('/wowzers/test')) }.should raise_error("Request Phase")
203
- end
204
-
205
- it 'should use a custom prefix for callback' do
206
- lambda{ strategy.call(make_env('/wowzers/test/callback')) }.should raise_error("Callback Phase")
207
- end
208
-
209
- context 'callback_url' do
210
- it 'uses a custom prefix' do
211
- strategy.should_receive(:full_host).and_return('http://example.com')
212
-
213
- lambda{ strategy.call(make_env('/wowzers/test')) }.should raise_error("Request Phase")
214
-
215
- strategy.callback_url.should == 'http://example.com/wowzers/test/callback'
216
- end
217
-
218
- it 'preserves the query parameters' do
219
- strategy.stub(:full_host).and_return('http://example.com')
220
- begin
221
- strategy.call(make_env('/auth/test', 'QUERY_STRING' => 'id=5'))
222
- rescue RuntimeError; end
223
- strategy.callback_url.should == 'http://example.com/wowzers/test/callback?id=5'
224
- end
225
- end
226
- end
227
-
228
- context 'request method restriction' do
229
- before do
230
- OmniAuth.config.allowed_request_methods = [:post]
231
- end
232
-
233
- it 'should not allow a request method of the wrong type' do
234
- lambda{ strategy.call(make_env)}.should_not raise_error
235
- end
236
-
237
- it 'should allow a request method of the correct type' do
238
- lambda{ strategy.call(make_env('/auth/test', 'REQUEST_METHOD' => 'POST'))}.should raise_error("Request Phase")
239
- end
240
-
241
- after do
242
- OmniAuth.config.allowed_request_methods = [:get, :post]
243
- end
244
- end
245
-
246
- context 'test mode' do
247
- before do
248
- OmniAuth.config.test_mode = true
249
- end
250
-
251
- it 'should short circuit the request phase entirely' do
252
- response = strategy.call(make_env)
253
- response[0].should == 302
254
- response[1]['Location'].should == '/auth/test/callback'
255
- end
256
-
257
- it 'should be case insensitive on request path' do
258
- strategy.call(make_env('/AUTH/Test'))[0].should == 302
259
- end
260
-
261
- it 'should respect SCRIPT_NAME (a.k.a. BaseURI)' do
262
- response = strategy.call(make_env('/auth/test', 'SCRIPT_NAME' => '/sub_uri'))
263
- response[1]['Location'].should == '/sub_uri/auth/test/callback'
264
- end
265
-
266
- it 'should be case insensitive on callback path' do
267
- strategy.call(make_env('/AUTH/TeSt/CaLlBAck')).should == strategy.call(make_env('/auth/test/callback'))
268
- end
269
-
270
- it 'should not short circuit requests outside of authentication' do
271
- strategy.call(make_env('/')).should == app.call(make_env('/'))
272
- end
273
-
274
- it 'should respond with the default hash if none is set' do
275
- strategy.call make_env('/auth/test/callback')
276
- strategy.env['omniauth.auth']['uid'].should == '1234'
277
- end
278
-
279
- it 'should respond with a provider-specific hash if one is set' do
280
- OmniAuth.config.mock_auth[:test] = {
281
- 'uid' => 'abc'
282
- }
283
-
284
- strategy.call make_env('/auth/test/callback')
285
- strategy.env['omniauth.auth']['uid'].should == 'abc'
286
- end
287
-
288
- it 'should simulate login failure if mocked data is set as a symbol' do
289
- OmniAuth.config.mock_auth[:test] = :invalid_credentials
290
-
291
- strategy.call make_env('/auth/test/callback')
292
- strategy.env['omniauth.error.type'].should == :invalid_credentials
293
- end
294
-
295
- it 'should set omniauth.origin on the request phase' do
296
- strategy.call(make_env('/auth/test', 'HTTP_REFERER' => 'http://example.com/origin'))
297
- strategy.env['rack.session']['omniauth.origin'].should == 'http://example.com/origin'
298
- end
299
-
300
- it 'should set omniauth.origin from the params if provided' do
301
- strategy.call(make_env('/auth/test', 'QUERY_STRING' => 'origin=/foo'))
302
- strategy.env['rack.session']['omniauth.origin'].should == '/foo'
303
- end
304
-
305
- it 'should turn omniauth.origin into an env variable on the callback phase' do
306
- OmniAuth.config.mock_auth[:test] = {}
307
-
308
- strategy.call(make_env('/auth/test/callback', 'rack.session' => {'omniauth.origin' => 'http://example.com/origin'}))
309
- strategy.env['omniauth.origin'].should == 'http://example.com/origin'
310
- end
311
- end
312
-
313
- context 'custom full_host' do
314
- it 'should be the string when a string is there' do
315
- OmniAuth.config.full_host = 'my.host.com'
316
- strategy.full_host.should == 'my.host.com'
317
- end
318
-
319
- it 'should run the proc with the env when it is a proc' do
320
- OmniAuth.config.full_host = Proc.new{|env| env['HOST']}
321
- strategy.call(make_env('/auth/test', 'HOST' => 'my.host.net'))
322
- strategy.full_host.should == 'my.host.net'
323
- end
324
- end
325
- end
326
-
327
- context 'setup phase' do
328
- context 'when options[:setup] = true' do
329
- let(:strategy){ ExampleStrategy.new(app, 'test', :setup => true) }
330
- let(:app){lambda{|env| env['omniauth.strategy'].options[:awesome] = 'sauce' if env['PATH_INFO'] == '/auth/test/setup'; [404, {}, 'Awesome'] }}
331
-
332
- it 'should call through to /auth/:provider/setup' do
333
- strategy.call(make_env('/auth/test'))
334
- strategy.options[:awesome].should == 'sauce'
335
- end
336
-
337
- it 'should not call through on a non-omniauth endpoint' do
338
- strategy.call(make_env('/somewhere/else'))
339
- strategy.options[:awesome].should_not == 'sauce'
340
- end
341
- end
342
-
343
- context 'when options[:setup] is an app' do
344
- let(:setup_proc) do
345
- Proc.new do |env|
346
- env['omniauth.strategy'].options[:awesome] = 'sauce'
347
- end
348
- end
349
-
350
- let(:strategy){ ExampleStrategy.new(app, 'test', :setup => setup_proc) }
351
-
352
- it 'should not call the app on a non-omniauth endpoint' do
353
- strategy.call(make_env('/somehwere/else'))
354
- strategy.options[:awesome].should_not == 'sauce'
355
- end
356
-
357
- it 'should call the rack app' do
358
- strategy.call(make_env('/auth/test'))
359
- strategy.options[:awesome].should == 'sauce'
360
- end
361
- end
362
- end
363
- end