omniauth 0.2.4 → 0.2.5
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/.autotest +9 -0
- data/.document +5 -0
- data/.gitignore +36 -0
- data/.rspec +2 -0
- data/.travis.yml +7 -0
- data/.yardopts +4 -0
- data/Gemfile +6 -1
- data/README.markdown +121 -0
- data/Rakefile +50 -2
- data/lib/omniauth/version.rb +18 -4
- data/oa-basic/.gemtest +0 -0
- data/oa-basic/.rspec +3 -0
- data/oa-basic/.yardopts +4 -0
- data/oa-basic/LICENSE +19 -0
- data/oa-basic/README.rdoc +34 -0
- data/oa-basic/Rakefile +6 -0
- data/oa-basic/lib/oa-basic.rb +1 -0
- data/oa-basic/lib/omniauth/basic.rb +8 -0
- data/oa-basic/lib/omniauth/strategies/http_basic.rb +56 -0
- data/oa-basic/lib/omniauth/version.rb +19 -0
- data/oa-basic/oa-basic.gemspec +28 -0
- data/oa-basic/spec/omniauth/strategies/basic_spec.rb +7 -0
- data/oa-basic/spec/spec_helper.rb +11 -0
- data/oa-core/.gemtest +0 -0
- data/oa-core/.rspec +3 -0
- data/oa-core/.yardopts +4 -0
- data/oa-core/LICENSE +19 -0
- data/oa-core/Rakefile +6 -0
- data/oa-core/autotest/discover.rb +1 -0
- data/oa-core/lib/oa-core.rb +1 -0
- data/oa-core/lib/omniauth/builder.rb +33 -0
- data/oa-core/lib/omniauth/core.rb +135 -0
- data/oa-core/lib/omniauth/form.rb +184 -0
- data/oa-core/lib/omniauth/strategy.rb +227 -0
- data/oa-core/lib/omniauth/test.rb +12 -0
- data/oa-core/lib/omniauth/test/phony_session.rb +8 -0
- data/oa-core/lib/omniauth/test/strategy_macros.rb +34 -0
- data/oa-core/lib/omniauth/test/strategy_test_case.rb +49 -0
- data/oa-core/lib/omniauth/version.rb +19 -0
- data/oa-core/oa-core.gemspec +24 -0
- data/oa-core/spec/omniauth/builder_spec.rb +20 -0
- data/oa-core/spec/omniauth/core_spec.rb +79 -0
- data/oa-core/spec/omniauth/strategy_spec.rb +358 -0
- data/oa-core/spec/spec_helper.rb +12 -0
- data/oa-enterprise/.gemtest +0 -0
- data/oa-enterprise/.rspec +3 -0
- data/oa-enterprise/.yardopts +4 -0
- data/oa-enterprise/LICENSE +19 -0
- data/oa-enterprise/README.rdoc +82 -0
- data/oa-enterprise/Rakefile +6 -0
- data/oa-enterprise/lib/oa-enterprise.rb +1 -0
- data/oa-enterprise/lib/omniauth/enterprise.rb +8 -0
- data/oa-enterprise/lib/omniauth/strategies/cas.rb +47 -0
- data/oa-enterprise/lib/omniauth/strategies/cas/configuration.rb +98 -0
- data/oa-enterprise/lib/omniauth/strategies/cas/service_ticket_validator.rb +84 -0
- data/oa-enterprise/lib/omniauth/strategies/ldap.rb +111 -0
- data/oa-enterprise/lib/omniauth/strategies/ldap/adaptor.rb +279 -0
- data/oa-enterprise/lib/omniauth/version.rb +19 -0
- data/oa-enterprise/oa-enterprise.gemspec +32 -0
- data/oa-enterprise/spec/fixtures/cas_failure.xml +4 -0
- data/oa-enterprise/spec/fixtures/cas_success.xml +8 -0
- data/oa-enterprise/spec/omniauth/strategies/cas_spec.rb +94 -0
- data/oa-enterprise/spec/spec_helper.rb +14 -0
- data/oa-more/.gemtest +0 -0
- data/oa-more/.rspec +3 -0
- data/oa-more/.yardopts +4 -0
- data/oa-more/LICENSE +19 -0
- data/oa-more/README.rdoc +22 -0
- data/oa-more/Rakefile +6 -0
- data/oa-more/lib/oa-more.rb +1 -0
- data/oa-more/lib/omniauth/more.rb +9 -0
- data/oa-more/lib/omniauth/strategies/flickr.rb +86 -0
- data/oa-more/lib/omniauth/strategies/windows_live.rb +39 -0
- data/oa-more/lib/omniauth/strategies/windows_live/windowslivelogin.rb +1143 -0
- data/oa-more/lib/omniauth/strategies/yupoo.rb +67 -0
- data/oa-more/lib/omniauth/version.rb +19 -0
- data/oa-more/oa-more.gemspec +30 -0
- data/oa-more/spec/omniauth/strategies/flickr_spec.rb +7 -0
- data/oa-more/spec/spec_helper.rb +11 -0
- data/oa-oauth/.gemtest +0 -0
- data/oa-oauth/.rspec +3 -0
- data/oa-oauth/.yardopts +4 -0
- data/oa-oauth/LICENSE +19 -0
- data/oa-oauth/README.rdoc +35 -0
- data/oa-oauth/Rakefile +6 -0
- data/oa-oauth/autotest/discover.rb +1 -0
- data/oa-oauth/lib/oa-oauth.rb +1 -0
- data/oa-oauth/lib/omniauth/oauth.rb +53 -0
- data/oa-oauth/lib/omniauth/strategies/bitly.rb +46 -0
- data/oa-oauth/lib/omniauth/strategies/dailymile.rb +64 -0
- data/oa-oauth/lib/omniauth/strategies/doit.rb +60 -0
- data/oa-oauth/lib/omniauth/strategies/dopplr.rb +53 -0
- data/oa-oauth/lib/omniauth/strategies/douban.rb +60 -0
- data/oa-oauth/lib/omniauth/strategies/evernote.rb +54 -0
- data/oa-oauth/lib/omniauth/strategies/facebook.rb +70 -0
- data/oa-oauth/lib/omniauth/strategies/foursquare.rb +62 -0
- data/oa-oauth/lib/omniauth/strategies/github.rb +50 -0
- data/oa-oauth/lib/omniauth/strategies/goodreads.rb +44 -0
- data/oa-oauth/lib/omniauth/strategies/google.rb +80 -0
- data/oa-oauth/lib/omniauth/strategies/gowalla.rb +64 -0
- data/oa-oauth/lib/omniauth/strategies/hyves.rb +67 -0
- data/oa-oauth/lib/omniauth/strategies/identica.rb +49 -0
- data/oa-oauth/lib/omniauth/strategies/instagram.rb +56 -0
- data/oa-oauth/lib/omniauth/strategies/instapaper.rb +40 -0
- data/oa-oauth/lib/omniauth/strategies/linked_in.rb +55 -0
- data/oa-oauth/lib/omniauth/strategies/meetup.rb +56 -0
- data/oa-oauth/lib/omniauth/strategies/miso.rb +41 -0
- data/oa-oauth/lib/omniauth/strategies/mixi.rb +59 -0
- data/oa-oauth/lib/omniauth/strategies/netflix.rb +65 -0
- data/oa-oauth/lib/omniauth/strategies/oauth.rb +85 -0
- data/oa-oauth/lib/omniauth/strategies/oauth2.rb +98 -0
- data/oa-oauth/lib/omniauth/strategies/qzone.rb +69 -0
- data/oa-oauth/lib/omniauth/strategies/rdio.rb +45 -0
- data/oa-oauth/lib/omniauth/strategies/renren.rb +87 -0
- data/oa-oauth/lib/omniauth/strategies/salesforce.rb +44 -0
- data/oa-oauth/lib/omniauth/strategies/smug_mug.rb +42 -0
- data/oa-oauth/lib/omniauth/strategies/sound_cloud.rb +46 -0
- data/oa-oauth/lib/omniauth/strategies/t163.rb +57 -0
- data/oa-oauth/lib/omniauth/strategies/teambox.rb +49 -0
- data/oa-oauth/lib/omniauth/strategies/thirty_seven_signals.rb +41 -0
- data/oa-oauth/lib/omniauth/strategies/tqq.rb +64 -0
- data/oa-oauth/lib/omniauth/strategies/trade_me.rb +45 -0
- data/oa-oauth/lib/omniauth/strategies/trip_it.rb +22 -0
- data/oa-oauth/lib/omniauth/strategies/tsina.rb +79 -0
- data/oa-oauth/lib/omniauth/strategies/tsohu.rb +57 -0
- data/oa-oauth/lib/omniauth/strategies/tumblr.rb +60 -0
- data/oa-oauth/lib/omniauth/strategies/twitter.rb +57 -0
- data/oa-oauth/lib/omniauth/strategies/type_pad.rb +76 -0
- data/oa-oauth/lib/omniauth/strategies/vimeo.rb +54 -0
- data/oa-oauth/lib/omniauth/strategies/vkontakte.rb +84 -0
- data/oa-oauth/lib/omniauth/strategies/xauth.rb +67 -0
- data/oa-oauth/lib/omniauth/strategies/yahoo.rb +55 -0
- data/oa-oauth/lib/omniauth/strategies/yammer.rb +43 -0
- data/oa-oauth/lib/omniauth/strategies/you_tube.rb +73 -0
- data/oa-oauth/lib/omniauth/version.rb +19 -0
- data/oa-oauth/oa-oauth.gemspec +33 -0
- data/oa-oauth/spec/fixtures/basecamp_200.xml +24 -0
- data/oa-oauth/spec/fixtures/campfire_200.json +10 -0
- data/oa-oauth/spec/omniauth/strategies/bitly_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/dailymile_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/doit_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/dopplr_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/douban_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/evernote_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/facebook_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/foursquare_spec.rb +18 -0
- data/oa-oauth/spec/omniauth/strategies/github_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/goodreads_spec.rb +6 -0
- data/oa-oauth/spec/omniauth/strategies/google_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/gowalla_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/hyves_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/identica_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/linked_in_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/meetup_spec.rb +14 -0
- data/oa-oauth/spec/omniauth/strategies/miso_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/netflix_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/oauth2_spec.rb +0 -0
- data/oa-oauth/spec/omniauth/strategies/oauth_spec.rb +77 -0
- data/oa-oauth/spec/omniauth/strategies/rdio_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/salesforce_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/smug_mug_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/sound_cloud_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/t163_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/teambox_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/thirty_seven_signals_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/trade_me_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/trip_it_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/tsina_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/tumblr_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/twitter_spec.rb +20 -0
- data/oa-oauth/spec/omniauth/strategies/type_pad_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/vimeo_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/vkontakte_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/yahoo_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/yammer_spec.rb +5 -0
- data/oa-oauth/spec/omniauth/strategies/you_tube_spec.rb +5 -0
- data/oa-oauth/spec/spec_helper.rb +27 -0
- data/oa-oauth/spec/support/shared_examples.rb +29 -0
- data/oa-openid/.gemtest +0 -0
- data/oa-openid/.rspec +3 -0
- data/oa-openid/.yardopts +4 -0
- data/oa-openid/LICENSE +19 -0
- data/oa-openid/README.rdoc +51 -0
- data/oa-openid/Rakefile +6 -0
- data/oa-openid/lib/oa-openid.rb +1 -0
- data/oa-openid/lib/omniauth/openid.rb +59 -0
- data/oa-openid/lib/omniauth/openid/gapps.rb +32 -0
- data/oa-openid/lib/omniauth/strategies/google_apps.rb +23 -0
- data/oa-openid/lib/omniauth/strategies/open_id.rb +132 -0
- data/oa-openid/lib/omniauth/version.rb +19 -0
- data/oa-openid/oa-openid.gemspec +29 -0
- data/oa-openid/spec/omniauth/strategies/open_id_spec.rb +71 -0
- data/oa-openid/spec/spec_helper.rb +14 -0
- data/omniauth.gemspec +3 -3
- data/tasks/all.rb +134 -0
- metadata +199 -9
- data/README.rdoc +0 -17
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'omniauth/oauth'
|
2
|
+
require 'multi_json'
|
3
|
+
|
4
|
+
module OmniAuth
|
5
|
+
module Strategies
|
6
|
+
#
|
7
|
+
# Authenticate to Yahoo via OAuth and retrieve basic
|
8
|
+
# user information.
|
9
|
+
#
|
10
|
+
# Usage:
|
11
|
+
#
|
12
|
+
# use OmniAuth::Strategies::Yahoo, 'consumerkey', 'consumersecret'
|
13
|
+
#
|
14
|
+
class Yahoo < OmniAuth::Strategies::OAuth
|
15
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
16
|
+
client_options = {
|
17
|
+
:site => 'https://api.login.yahoo.com',
|
18
|
+
:request_token_path => '/oauth/v2/get_request_token',
|
19
|
+
:access_token_path => '/oauth/v2/get_token',
|
20
|
+
:authorize_path => "/oauth/v2/request_auth"
|
21
|
+
}
|
22
|
+
|
23
|
+
super(app, :yahoo, consumer_key, consumer_secret, client_options, options)
|
24
|
+
end
|
25
|
+
|
26
|
+
def auth_hash
|
27
|
+
ui = user_info
|
28
|
+
OmniAuth::Utils.deep_merge(super, {
|
29
|
+
'uid' => ui['uid'],
|
30
|
+
'user_info' => ui,
|
31
|
+
'extra' => {'user_hash' => user_hash}
|
32
|
+
})
|
33
|
+
end
|
34
|
+
|
35
|
+
def user_info
|
36
|
+
user_hash = self.user_hash
|
37
|
+
profile = user_hash['profile']
|
38
|
+
nickname = user_hash['profile']['nickname']
|
39
|
+
{
|
40
|
+
'uid' => profile['guid'],
|
41
|
+
'nickname' => profile['nickname'],
|
42
|
+
'name' => profile['givenName'] || nickname,
|
43
|
+
'image' => profile['image']['imageUrl'],
|
44
|
+
'description' => profile['message'],
|
45
|
+
'urls' => {'Profile' => profile['profileUrl'] }
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
def user_hash
|
50
|
+
uid = @access_token.params['xoauth_yahoo_guid']
|
51
|
+
@user_hash ||= MultiJson.decode(@access_token.get("http://social.yahooapis.com/v1/user/#{uid}/profile?format=json").body)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'omniauth/oauth'
|
2
|
+
require 'multi_json'
|
3
|
+
|
4
|
+
module OmniAuth
|
5
|
+
module Strategies
|
6
|
+
class Yammer < OmniAuth::Strategies::OAuth
|
7
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
8
|
+
client_options = {
|
9
|
+
:site => 'https://www.yammer.com',
|
10
|
+
:request_token_path => '/oauth/request_token',
|
11
|
+
:access_token_path => '/oauth/access_token',
|
12
|
+
:authorize_path => "/oauth/authorize"
|
13
|
+
}
|
14
|
+
|
15
|
+
super(app, :yammer, consumer_key, consumer_secret, client_options, options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def auth_hash
|
19
|
+
OmniAuth::Utils.deep_merge(super, {
|
20
|
+
'uid' => user_hash['id'],
|
21
|
+
'user_info' => user_info,
|
22
|
+
'extra' => {'user_hash' => user_hash}
|
23
|
+
})
|
24
|
+
end
|
25
|
+
|
26
|
+
def user_info
|
27
|
+
user_hash = self.user_hash
|
28
|
+
{
|
29
|
+
'nickname' => user_hash['name'],
|
30
|
+
'name' => user_hash['full-name'],
|
31
|
+
'location' => user_hash['location'],
|
32
|
+
'image' => user_hash['mugshot-url'],
|
33
|
+
'description' => user_hash['job-title'],
|
34
|
+
'urls' => {'Yammer' => user_hash['web-url']}
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
def user_hash
|
39
|
+
@user_hash ||= MultiJson.decode(@access_token.get('/api/v1/users/current.json').body)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Based heavily on the Google strategy, monkeypatch and all
|
2
|
+
|
3
|
+
require 'omniauth/oauth'
|
4
|
+
require 'multi_json'
|
5
|
+
|
6
|
+
module OmniAuth
|
7
|
+
module Strategies
|
8
|
+
#
|
9
|
+
# Authenticate to YouTube via OAuth and retrieve basic user info.
|
10
|
+
#
|
11
|
+
# Usage:
|
12
|
+
#
|
13
|
+
# use OmniAuth::Strategies::YouTube, 'consumerkey', 'consumersecret'
|
14
|
+
#
|
15
|
+
class YouTube < OmniAuth::Strategies::OAuth
|
16
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
17
|
+
client_options = {
|
18
|
+
:site => 'https://www.google.com',
|
19
|
+
:request_token_path => '/accounts/OAuthGetRequestToken',
|
20
|
+
:access_token_path => '/accounts/OAuthGetAccessToken',
|
21
|
+
:authorize_path => '/accounts/OAuthAuthorizeToken'
|
22
|
+
}
|
23
|
+
|
24
|
+
super(app, :you_tube, consumer_key, consumer_secret, client_options, options)
|
25
|
+
end
|
26
|
+
|
27
|
+
def auth_hash
|
28
|
+
ui = user_info
|
29
|
+
OmniAuth::Utils.deep_merge(super, {
|
30
|
+
'uid' => ui['uid'],
|
31
|
+
'user_info' => ui,
|
32
|
+
'extra' => {'user_hash' => user_hash}
|
33
|
+
})
|
34
|
+
end
|
35
|
+
|
36
|
+
def user_info
|
37
|
+
entry = user_hash['entry']
|
38
|
+
{
|
39
|
+
'uid' => entry['id']['$t'],
|
40
|
+
'nickname' => entry['author'].first['name']['$t'],
|
41
|
+
'first_name' => entry['yt$firstName'] && entry['yt$firstName']['$t'],
|
42
|
+
'last_name' => entry['yt$lastName'] && entry['yt$lastName']['$t'],
|
43
|
+
'image' => entry['media$thumbnail'] && entry['media$thumbnail']['url'],
|
44
|
+
'description' => entry['yt$description'] && entry['yt$description']['$t'],
|
45
|
+
'location' => entry['yt$location'] && entry['yt$location']['$t']
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
def user_hash
|
50
|
+
# YouTube treats 'default' as the currently logged-in user
|
51
|
+
# via http://apiblog.youtube.com/2010/11/update-to-clientlogin-url.html
|
52
|
+
@user_hash ||= MultiJson.decode(@access_token.get("http://gdata.youtube.com/feeds/api/users/default?alt=json").body)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Monkeypatch consumer.get_request_token but specify YouTube scope rather than Google Contacts
|
56
|
+
# TODO this is an easy patch to the underlying OAuth strategy a la OAuth2
|
57
|
+
def request_phase
|
58
|
+
request_token = consumer.get_request_token({:oauth_callback => callback_url}, {:scope => 'http://gdata.youtube.com'})
|
59
|
+
session['oauth'] ||= {}
|
60
|
+
session['oauth'][name.to_s] = {'callback_confirmed' => request_token.callback_confirmed?, 'request_token' => request_token.token, 'request_secret' => request_token.secret}
|
61
|
+
r = Rack::Response.new
|
62
|
+
|
63
|
+
if request_token.callback_confirmed?
|
64
|
+
r.redirect(request_token.authorize_url)
|
65
|
+
else
|
66
|
+
r.redirect(request_token.authorize_url(:oauth_callback => callback_url))
|
67
|
+
end
|
68
|
+
|
69
|
+
r.finish
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,19 @@
|
|
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 = 5
|
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
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/omniauth/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.add_runtime_dependency 'faraday', '~> 0.6.1'
|
6
|
+
gem.add_runtime_dependency 'jruby-openssl', '~> 0.7.3' if RUBY_PLATFORM == 'java'
|
7
|
+
gem.add_runtime_dependency 'multi_json', '~> 1.0.0'
|
8
|
+
gem.add_runtime_dependency 'multi_xml', '~> 0.2.2'
|
9
|
+
gem.add_runtime_dependency 'oa-core', OmniAuth::Version::STRING
|
10
|
+
gem.add_runtime_dependency 'oauth', '~> 0.4.0'
|
11
|
+
gem.add_runtime_dependency 'oauth2', '~> 0.4.1'
|
12
|
+
gem.add_development_dependency 'evernote', '~> 0.9'
|
13
|
+
gem.add_development_dependency 'maruku', '~> 0.6'
|
14
|
+
gem.add_development_dependency 'rack-test', '~> 0.5'
|
15
|
+
gem.add_development_dependency 'rake', '~> 0.8'
|
16
|
+
gem.add_development_dependency 'rspec', '~> 2.5'
|
17
|
+
gem.add_development_dependency 'simplecov', '~> 0.4'
|
18
|
+
gem.add_development_dependency 'webmock', '~> 1.6'
|
19
|
+
gem.add_development_dependency 'yard', '~> 0.6'
|
20
|
+
gem.add_development_dependency 'ZenTest', '~> 4.5'
|
21
|
+
gem.name = 'oa-oauth'
|
22
|
+
gem.version = OmniAuth::Version::STRING
|
23
|
+
gem.description = %q{OAuth strategies for OmniAuth.}
|
24
|
+
gem.summary = gem.description
|
25
|
+
gem.email = ['michael@intridea.com', 'sferik@gmail.com']
|
26
|
+
gem.homepage = 'http://github.com/intridea/omniauth'
|
27
|
+
gem.authors = ['Michael Bleigh', 'Erik Michaels-Ober']
|
28
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
|
29
|
+
gem.files = `git ls-files`.split("\n")
|
30
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
31
|
+
gem.require_paths = ['lib']
|
32
|
+
gem.required_rubygems_version = Gem::Requirement.new('>= 1.3.6') if gem.respond_to? :required_rubygems_version=
|
33
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<person>
|
2
|
+
<client-id type="integer">0</client-id>
|
3
|
+
<created-at type="datetime">2008-08-14T00:00:00Z</created-at>
|
4
|
+
<id type="integer">1827370</id>
|
5
|
+
<im-handle/>
|
6
|
+
<im-service>AOL</im-service>
|
7
|
+
<phone-number-fax/>
|
8
|
+
<phone-number-home/>
|
9
|
+
<phone-number-mobile/>
|
10
|
+
<phone-number-office/>
|
11
|
+
<phone-number-office-ext/>
|
12
|
+
<title/>
|
13
|
+
<token>5fc2ab4f6c2f9cdf12ed01b88e7554f8ad21bbfb</token>
|
14
|
+
<updated-at type="datetime">2010-05-24T11:59:34Z</updated-at>
|
15
|
+
<uuid>b11312ca-227d-36fd-e3b5-af2f419-a650</uuid>
|
16
|
+
<first-name>Sally</first-name>
|
17
|
+
<last-name>Fried</last-name>
|
18
|
+
<company-id type="integer">1042368</company-id>
|
19
|
+
<user-name/>
|
20
|
+
<email-address>sfried@example.org</email-address>
|
21
|
+
<avatar-url>
|
22
|
+
http://asset3.37img.com/75521bbf128b89b7ec2ab5fe98ad21b4f6ad21e/avatar.png?r=3
|
23
|
+
</avatar-url>
|
24
|
+
</person>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe OmniAuth::Strategies::Foursquare do
|
4
|
+
it_should_behave_like "an oauth2 strategy"
|
5
|
+
subject{ OmniAuth::Strategies::Foursquare.new(lambda{|env|[200,{},[""]]} , 'abc', 'def')}
|
6
|
+
|
7
|
+
it 'should use the mobile authorize url when :mobile is true' do
|
8
|
+
subject.authorize_url(:mobile => true).should be_include("/mobile/")
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should use the authorize endpoint if :sign_in is false' do
|
12
|
+
subject.authorize_url(:sign_in => false).should be_include("/authorize")
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should default to the authenticate endpoint' do
|
16
|
+
subject.client.authorize_url.should be_include('/authenticate')
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe OmniAuth::Strategies::Meetup do
|
4
|
+
it_should_behave_like 'an oauth strategy'
|
5
|
+
it 'should use the authenticate (sign in) path by default' do
|
6
|
+
s = strategy_class.new(app, 'abc', 'def')
|
7
|
+
s.consumer.options[:authorize_path].should == 'http://www.meetup.com/authenticate'
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should use the authorize path if :sign_in is false' do
|
11
|
+
s = strategy_class.new(app, 'abc', 'def', :sign_in => false)
|
12
|
+
s.consumer.options[:authorize_path].should == 'http://www.meetup.com/authorize'
|
13
|
+
end
|
14
|
+
end
|
File without changes
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe "OmniAuth::Strategies::OAuth" do
|
4
|
+
|
5
|
+
def app
|
6
|
+
Rack::Builder.new {
|
7
|
+
use OmniAuth::Test::PhonySession
|
8
|
+
use OmniAuth::Builder do
|
9
|
+
provider :oauth, 'example.org', 'abc', 'def', :site => 'https://api.example.org'
|
10
|
+
provider :oauth, 'example.org_with_authorize_params', 'abc', 'def', { :site => 'https://api.example.org' }, :authorize_params => {:abc => 'def'}
|
11
|
+
end
|
12
|
+
run lambda { |env| [404, {'Content-Type' => 'text/plain'}, [env.key?('omniauth.auth').to_s]] }
|
13
|
+
}.to_app
|
14
|
+
end
|
15
|
+
|
16
|
+
def session
|
17
|
+
last_request.env['rack.session']
|
18
|
+
end
|
19
|
+
|
20
|
+
before do
|
21
|
+
stub_request(:post, 'https://api.example.org/oauth/request_token').
|
22
|
+
to_return(:body => "oauth_token=yourtoken&oauth_token_secret=yoursecret&oauth_callback_confirmed=true")
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '/auth/{name}' do
|
26
|
+
before do
|
27
|
+
get '/auth/example.org'
|
28
|
+
end
|
29
|
+
it 'should redirect to authorize_url' do
|
30
|
+
last_response.should be_redirect
|
31
|
+
last_response.headers['Location'].should == 'https://api.example.org/oauth/authorize?oauth_token=yourtoken'
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should redirect to authorize_url with authorize_params when set' do
|
35
|
+
get '/auth/example.org_with_authorize_params'
|
36
|
+
last_response.should be_redirect
|
37
|
+
[
|
38
|
+
'https://api.example.org/oauth/authorize?abc=def&oauth_token=yourtoken',
|
39
|
+
'https://api.example.org/oauth/authorize?oauth_token=yourtoken&abc=def'
|
40
|
+
].should be_include(last_response.headers['Location'])
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should set appropriate session variables' do
|
44
|
+
session['oauth'].should == {"example.org" => {'callback_confirmed' => true, 'request_token' => 'yourtoken', 'request_secret' => 'yoursecret'}}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '/auth/{name}/callback' do
|
49
|
+
before do
|
50
|
+
stub_request(:post, 'https://api.example.org/oauth/access_token').
|
51
|
+
to_return(:body => "oauth_token=yourtoken&oauth_token_secret=yoursecret")
|
52
|
+
get '/auth/example.org/callback', {:oauth_verifier => 'dudeman'}, {'rack.session' => {'oauth' => {"example.org" => {'callback_confirmed' => true, 'request_token' => 'yourtoken', 'request_secret' => 'yoursecret'}}}}
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should exchange the request token for an access token' do
|
56
|
+
last_request.env['omniauth.auth']['provider'].should == 'example.org'
|
57
|
+
last_request.env['omniauth.auth']['extra']['access_token'].should be_kind_of(OAuth::AccessToken)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should call through to the master app' do
|
61
|
+
last_response.body.should == 'true'
|
62
|
+
end
|
63
|
+
|
64
|
+
context "bad gateway (or any 5xx) for access_token" do
|
65
|
+
before do
|
66
|
+
stub_request(:post, 'https://api.example.org/oauth/access_token').
|
67
|
+
to_raise(::Net::HTTPFatalError.new(%Q{502 "Bad Gateway"}, nil))
|
68
|
+
get '/auth/example.org/callback', {:oauth_verifier => 'dudeman'}, {'rack.session' => {'oauth' => {"example.org" => {'callback_confirmed' => true, 'request_token' => 'yourtoken', 'request_secret' => 'yoursecret'}}}}
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should call fail! with :service_unavailable' do
|
72
|
+
last_request.env['omniauth.error'].should be_kind_of(::Net::HTTPFatalError)
|
73
|
+
last_request.env['omniauth.error.type'] = :service_unavailable
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|