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.
- data/README.md +62 -34
- data/lib/omniauth/version.rb +3 -3
- metadata +74 -228
- data/Gemfile +0 -12
- data/Rakefile +0 -51
- data/oa-basic/Gemfile +0 -7
- data/oa-basic/LICENSE +0 -19
- data/oa-basic/README.rdoc +0 -34
- data/oa-basic/Rakefile +0 -6
- data/oa-basic/lib/oa-basic.rb +0 -1
- data/oa-basic/lib/omniauth/basic.rb +0 -8
- data/oa-basic/lib/omniauth/strategies/http_basic.rb +0 -56
- data/oa-basic/lib/omniauth/version.rb +0 -19
- data/oa-basic/oa-basic.gemspec +0 -27
- data/oa-basic/spec/omniauth/strategies/basic_spec.rb +0 -7
- data/oa-basic/spec/spec_helper.rb +0 -11
- data/oa-core/Gemfile +0 -3
- data/oa-core/LICENSE +0 -19
- data/oa-core/Rakefile +0 -6
- data/oa-core/autotest/discover.rb +0 -1
- data/oa-core/lib/oa-core.rb +0 -1
- data/oa-core/lib/omniauth/builder.rb +0 -33
- data/oa-core/lib/omniauth/core.rb +0 -135
- data/oa-core/lib/omniauth/form.rb +0 -186
- data/oa-core/lib/omniauth/strategy.rb +0 -227
- data/oa-core/lib/omniauth/test.rb +0 -12
- data/oa-core/lib/omniauth/test/phony_session.rb +0 -8
- data/oa-core/lib/omniauth/test/strategy_macros.rb +0 -34
- data/oa-core/lib/omniauth/test/strategy_test_case.rb +0 -49
- data/oa-core/lib/omniauth/version.rb +0 -19
- data/oa-core/oa-core.gemspec +0 -24
- data/oa-core/spec/omniauth/builder_spec.rb +0 -20
- data/oa-core/spec/omniauth/core_spec.rb +0 -79
- data/oa-core/spec/omniauth/strategy_spec.rb +0 -363
- data/oa-core/spec/spec_helper.rb +0 -12
- data/oa-enterprise/Gemfile +0 -7
- data/oa-enterprise/LICENSE +0 -19
- data/oa-enterprise/README.rdoc +0 -82
- data/oa-enterprise/Rakefile +0 -6
- data/oa-enterprise/lib/oa-enterprise.rb +0 -1
- data/oa-enterprise/lib/omniauth/enterprise.rb +0 -8
- data/oa-enterprise/lib/omniauth/strategies/cas.rb +0 -47
- data/oa-enterprise/lib/omniauth/strategies/cas/configuration.rb +0 -98
- data/oa-enterprise/lib/omniauth/strategies/cas/service_ticket_validator.rb +0 -91
- data/oa-enterprise/lib/omniauth/strategies/ldap.rb +0 -111
- data/oa-enterprise/lib/omniauth/strategies/ldap/adaptor.rb +0 -279
- data/oa-enterprise/lib/omniauth/version.rb +0 -19
- data/oa-enterprise/oa-enterprise.gemspec +0 -31
- data/oa-enterprise/spec/fixtures/cas_failure.xml +0 -4
- data/oa-enterprise/spec/fixtures/cas_success.xml +0 -8
- data/oa-enterprise/spec/omniauth/strategies/cas_spec.rb +0 -94
- data/oa-enterprise/spec/omniauth/strategies/ldap_spec.rb +0 -41
- data/oa-enterprise/spec/spec_helper.rb +0 -14
- data/oa-more/Gemfile +0 -7
- data/oa-more/LICENSE +0 -19
- data/oa-more/README.rdoc +0 -22
- data/oa-more/Rakefile +0 -6
- data/oa-more/lib/oa-more.rb +0 -1
- data/oa-more/lib/omniauth/more.rb +0 -11
- data/oa-more/lib/omniauth/strategies/draugiem.rb +0 -104
- data/oa-more/lib/omniauth/strategies/flickr.rb +0 -86
- data/oa-more/lib/omniauth/strategies/ign.rb +0 -93
- data/oa-more/lib/omniauth/strategies/windows_live.rb +0 -39
- data/oa-more/lib/omniauth/strategies/windows_live/windowslivelogin.rb +0 -1143
- data/oa-more/lib/omniauth/strategies/yupoo.rb +0 -67
- data/oa-more/lib/omniauth/version.rb +0 -19
- data/oa-more/oa-more.gemspec +0 -29
- data/oa-more/spec/omniauth/strategies/draugiem_spec.rb +0 -51
- data/oa-more/spec/omniauth/strategies/flickr_spec.rb +0 -7
- data/oa-more/spec/spec_helper.rb +0 -11
- data/oa-oauth/Gemfile +0 -7
- data/oa-oauth/LICENSE +0 -19
- data/oa-oauth/README.rdoc +0 -35
- data/oa-oauth/Rakefile +0 -6
- data/oa-oauth/autotest/discover.rb +0 -1
- data/oa-oauth/lib/oa-oauth.rb +0 -1
- data/oa-oauth/lib/omniauth/oauth.rb +0 -56
- data/oa-oauth/lib/omniauth/strategies/bitly.rb +0 -46
- data/oa-oauth/lib/omniauth/strategies/dailymile.rb +0 -64
- data/oa-oauth/lib/omniauth/strategies/doit.rb +0 -60
- data/oa-oauth/lib/omniauth/strategies/dopplr.rb +0 -53
- data/oa-oauth/lib/omniauth/strategies/douban.rb +0 -60
- data/oa-oauth/lib/omniauth/strategies/evernote.rb +0 -54
- data/oa-oauth/lib/omniauth/strategies/facebook.rb +0 -70
- data/oa-oauth/lib/omniauth/strategies/foursquare.rb +0 -62
- data/oa-oauth/lib/omniauth/strategies/github.rb +0 -50
- data/oa-oauth/lib/omniauth/strategies/goodreads.rb +0 -44
- data/oa-oauth/lib/omniauth/strategies/google.rb +0 -80
- data/oa-oauth/lib/omniauth/strategies/gowalla.rb +0 -72
- data/oa-oauth/lib/omniauth/strategies/hyves.rb +0 -67
- data/oa-oauth/lib/omniauth/strategies/identica.rb +0 -49
- data/oa-oauth/lib/omniauth/strategies/instagram.rb +0 -56
- data/oa-oauth/lib/omniauth/strategies/instapaper.rb +0 -40
- data/oa-oauth/lib/omniauth/strategies/linked_in.rb +0 -56
- data/oa-oauth/lib/omniauth/strategies/mailru.rb +0 -107
- data/oa-oauth/lib/omniauth/strategies/meetup.rb +0 -56
- data/oa-oauth/lib/omniauth/strategies/miso.rb +0 -41
- data/oa-oauth/lib/omniauth/strategies/mixi.rb +0 -59
- data/oa-oauth/lib/omniauth/strategies/netflix.rb +0 -65
- data/oa-oauth/lib/omniauth/strategies/oauth.rb +0 -83
- data/oa-oauth/lib/omniauth/strategies/oauth2.rb +0 -91
- data/oa-oauth/lib/omniauth/strategies/plurk.rb +0 -58
- data/oa-oauth/lib/omniauth/strategies/qzone.rb +0 -69
- data/oa-oauth/lib/omniauth/strategies/rdio.rb +0 -45
- data/oa-oauth/lib/omniauth/strategies/renren.rb +0 -87
- data/oa-oauth/lib/omniauth/strategies/salesforce.rb +0 -44
- data/oa-oauth/lib/omniauth/strategies/smug_mug.rb +0 -42
- data/oa-oauth/lib/omniauth/strategies/sound_cloud.rb +0 -46
- data/oa-oauth/lib/omniauth/strategies/t163.rb +0 -57
- data/oa-oauth/lib/omniauth/strategies/taobao.rb +0 -79
- data/oa-oauth/lib/omniauth/strategies/teambox.rb +0 -49
- data/oa-oauth/lib/omniauth/strategies/thirty_seven_signals.rb +0 -41
- data/oa-oauth/lib/omniauth/strategies/tqq.rb +0 -64
- data/oa-oauth/lib/omniauth/strategies/trade_me.rb +0 -45
- data/oa-oauth/lib/omniauth/strategies/trip_it.rb +0 -22
- data/oa-oauth/lib/omniauth/strategies/tsina.rb +0 -79
- data/oa-oauth/lib/omniauth/strategies/tsohu.rb +0 -57
- data/oa-oauth/lib/omniauth/strategies/tumblr.rb +0 -60
- data/oa-oauth/lib/omniauth/strategies/twitter.rb +0 -57
- data/oa-oauth/lib/omniauth/strategies/type_pad.rb +0 -76
- data/oa-oauth/lib/omniauth/strategies/vimeo.rb +0 -54
- data/oa-oauth/lib/omniauth/strategies/vkontakte.rb +0 -87
- data/oa-oauth/lib/omniauth/strategies/xauth.rb +0 -67
- data/oa-oauth/lib/omniauth/strategies/yahoo.rb +0 -55
- data/oa-oauth/lib/omniauth/strategies/yammer.rb +0 -43
- data/oa-oauth/lib/omniauth/strategies/you_tube.rb +0 -73
- data/oa-oauth/lib/omniauth/version.rb +0 -19
- data/oa-oauth/oa-oauth.gemspec +0 -32
- data/oa-oauth/spec/fixtures/basecamp_200.xml +0 -24
- data/oa-oauth/spec/fixtures/campfire_200.json +0 -10
- data/oa-oauth/spec/omniauth/strategies/bitly_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/dailymile_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/doit_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/dopplr_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/douban_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/evernote_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/facebook_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/foursquare_spec.rb +0 -18
- data/oa-oauth/spec/omniauth/strategies/github_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/goodreads_spec.rb +0 -6
- data/oa-oauth/spec/omniauth/strategies/google_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/gowalla_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/hyves_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/identica_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/linked_in_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/mailru_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/meetup_spec.rb +0 -14
- data/oa-oauth/spec/omniauth/strategies/miso_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/netflix_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/oauth2_spec.rb +0 -0
- data/oa-oauth/spec/omniauth/strategies/oauth_spec.rb +0 -77
- data/oa-oauth/spec/omniauth/strategies/plurk_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/rdio_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/salesforce_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/smug_mug_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/sound_cloud_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/t163_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/taobao_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/teambox_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/thirty_seven_signals_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/trade_me_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/trip_it_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/tsina_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/tumblr_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/twitter_spec.rb +0 -20
- data/oa-oauth/spec/omniauth/strategies/type_pad_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/vimeo_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/vkontakte_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/yahoo_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/yammer_spec.rb +0 -5
- data/oa-oauth/spec/omniauth/strategies/you_tube_spec.rb +0 -5
- data/oa-oauth/spec/spec_helper.rb +0 -27
- data/oa-oauth/spec/support/shared_examples.rb +0 -29
- data/oa-openid/Gemfile +0 -7
- data/oa-openid/LICENSE +0 -19
- data/oa-openid/README.rdoc +0 -51
- data/oa-openid/Rakefile +0 -6
- data/oa-openid/lib/oa-openid.rb +0 -1
- data/oa-openid/lib/omniauth/openid.rb +0 -60
- data/oa-openid/lib/omniauth/openid/gapps.rb +0 -32
- data/oa-openid/lib/omniauth/strategies/google_apps.rb +0 -23
- data/oa-openid/lib/omniauth/strategies/open_id.rb +0 -132
- data/oa-openid/lib/omniauth/strategies/steam.rb +0 -55
- data/oa-openid/lib/omniauth/version.rb +0 -19
- data/oa-openid/oa-openid.gemspec +0 -28
- data/oa-openid/spec/omniauth/strategies/open_id_spec.rb +0 -71
- data/oa-openid/spec/spec_helper.rb +0 -14
- data/omniauth.gemspec +0 -20
- 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
|
data/oa-core/oa-core.gemspec
DELETED
@@ -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
|