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.

Files changed (197) hide show
  1. data/.autotest +9 -0
  2. data/.document +5 -0
  3. data/.gitignore +36 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +7 -0
  6. data/.yardopts +4 -0
  7. data/Gemfile +6 -1
  8. data/README.markdown +121 -0
  9. data/Rakefile +50 -2
  10. data/lib/omniauth/version.rb +18 -4
  11. data/oa-basic/.gemtest +0 -0
  12. data/oa-basic/.rspec +3 -0
  13. data/oa-basic/.yardopts +4 -0
  14. data/oa-basic/LICENSE +19 -0
  15. data/oa-basic/README.rdoc +34 -0
  16. data/oa-basic/Rakefile +6 -0
  17. data/oa-basic/lib/oa-basic.rb +1 -0
  18. data/oa-basic/lib/omniauth/basic.rb +8 -0
  19. data/oa-basic/lib/omniauth/strategies/http_basic.rb +56 -0
  20. data/oa-basic/lib/omniauth/version.rb +19 -0
  21. data/oa-basic/oa-basic.gemspec +28 -0
  22. data/oa-basic/spec/omniauth/strategies/basic_spec.rb +7 -0
  23. data/oa-basic/spec/spec_helper.rb +11 -0
  24. data/oa-core/.gemtest +0 -0
  25. data/oa-core/.rspec +3 -0
  26. data/oa-core/.yardopts +4 -0
  27. data/oa-core/LICENSE +19 -0
  28. data/oa-core/Rakefile +6 -0
  29. data/oa-core/autotest/discover.rb +1 -0
  30. data/oa-core/lib/oa-core.rb +1 -0
  31. data/oa-core/lib/omniauth/builder.rb +33 -0
  32. data/oa-core/lib/omniauth/core.rb +135 -0
  33. data/oa-core/lib/omniauth/form.rb +184 -0
  34. data/oa-core/lib/omniauth/strategy.rb +227 -0
  35. data/oa-core/lib/omniauth/test.rb +12 -0
  36. data/oa-core/lib/omniauth/test/phony_session.rb +8 -0
  37. data/oa-core/lib/omniauth/test/strategy_macros.rb +34 -0
  38. data/oa-core/lib/omniauth/test/strategy_test_case.rb +49 -0
  39. data/oa-core/lib/omniauth/version.rb +19 -0
  40. data/oa-core/oa-core.gemspec +24 -0
  41. data/oa-core/spec/omniauth/builder_spec.rb +20 -0
  42. data/oa-core/spec/omniauth/core_spec.rb +79 -0
  43. data/oa-core/spec/omniauth/strategy_spec.rb +358 -0
  44. data/oa-core/spec/spec_helper.rb +12 -0
  45. data/oa-enterprise/.gemtest +0 -0
  46. data/oa-enterprise/.rspec +3 -0
  47. data/oa-enterprise/.yardopts +4 -0
  48. data/oa-enterprise/LICENSE +19 -0
  49. data/oa-enterprise/README.rdoc +82 -0
  50. data/oa-enterprise/Rakefile +6 -0
  51. data/oa-enterprise/lib/oa-enterprise.rb +1 -0
  52. data/oa-enterprise/lib/omniauth/enterprise.rb +8 -0
  53. data/oa-enterprise/lib/omniauth/strategies/cas.rb +47 -0
  54. data/oa-enterprise/lib/omniauth/strategies/cas/configuration.rb +98 -0
  55. data/oa-enterprise/lib/omniauth/strategies/cas/service_ticket_validator.rb +84 -0
  56. data/oa-enterprise/lib/omniauth/strategies/ldap.rb +111 -0
  57. data/oa-enterprise/lib/omniauth/strategies/ldap/adaptor.rb +279 -0
  58. data/oa-enterprise/lib/omniauth/version.rb +19 -0
  59. data/oa-enterprise/oa-enterprise.gemspec +32 -0
  60. data/oa-enterprise/spec/fixtures/cas_failure.xml +4 -0
  61. data/oa-enterprise/spec/fixtures/cas_success.xml +8 -0
  62. data/oa-enterprise/spec/omniauth/strategies/cas_spec.rb +94 -0
  63. data/oa-enterprise/spec/spec_helper.rb +14 -0
  64. data/oa-more/.gemtest +0 -0
  65. data/oa-more/.rspec +3 -0
  66. data/oa-more/.yardopts +4 -0
  67. data/oa-more/LICENSE +19 -0
  68. data/oa-more/README.rdoc +22 -0
  69. data/oa-more/Rakefile +6 -0
  70. data/oa-more/lib/oa-more.rb +1 -0
  71. data/oa-more/lib/omniauth/more.rb +9 -0
  72. data/oa-more/lib/omniauth/strategies/flickr.rb +86 -0
  73. data/oa-more/lib/omniauth/strategies/windows_live.rb +39 -0
  74. data/oa-more/lib/omniauth/strategies/windows_live/windowslivelogin.rb +1143 -0
  75. data/oa-more/lib/omniauth/strategies/yupoo.rb +67 -0
  76. data/oa-more/lib/omniauth/version.rb +19 -0
  77. data/oa-more/oa-more.gemspec +30 -0
  78. data/oa-more/spec/omniauth/strategies/flickr_spec.rb +7 -0
  79. data/oa-more/spec/spec_helper.rb +11 -0
  80. data/oa-oauth/.gemtest +0 -0
  81. data/oa-oauth/.rspec +3 -0
  82. data/oa-oauth/.yardopts +4 -0
  83. data/oa-oauth/LICENSE +19 -0
  84. data/oa-oauth/README.rdoc +35 -0
  85. data/oa-oauth/Rakefile +6 -0
  86. data/oa-oauth/autotest/discover.rb +1 -0
  87. data/oa-oauth/lib/oa-oauth.rb +1 -0
  88. data/oa-oauth/lib/omniauth/oauth.rb +53 -0
  89. data/oa-oauth/lib/omniauth/strategies/bitly.rb +46 -0
  90. data/oa-oauth/lib/omniauth/strategies/dailymile.rb +64 -0
  91. data/oa-oauth/lib/omniauth/strategies/doit.rb +60 -0
  92. data/oa-oauth/lib/omniauth/strategies/dopplr.rb +53 -0
  93. data/oa-oauth/lib/omniauth/strategies/douban.rb +60 -0
  94. data/oa-oauth/lib/omniauth/strategies/evernote.rb +54 -0
  95. data/oa-oauth/lib/omniauth/strategies/facebook.rb +70 -0
  96. data/oa-oauth/lib/omniauth/strategies/foursquare.rb +62 -0
  97. data/oa-oauth/lib/omniauth/strategies/github.rb +50 -0
  98. data/oa-oauth/lib/omniauth/strategies/goodreads.rb +44 -0
  99. data/oa-oauth/lib/omniauth/strategies/google.rb +80 -0
  100. data/oa-oauth/lib/omniauth/strategies/gowalla.rb +64 -0
  101. data/oa-oauth/lib/omniauth/strategies/hyves.rb +67 -0
  102. data/oa-oauth/lib/omniauth/strategies/identica.rb +49 -0
  103. data/oa-oauth/lib/omniauth/strategies/instagram.rb +56 -0
  104. data/oa-oauth/lib/omniauth/strategies/instapaper.rb +40 -0
  105. data/oa-oauth/lib/omniauth/strategies/linked_in.rb +55 -0
  106. data/oa-oauth/lib/omniauth/strategies/meetup.rb +56 -0
  107. data/oa-oauth/lib/omniauth/strategies/miso.rb +41 -0
  108. data/oa-oauth/lib/omniauth/strategies/mixi.rb +59 -0
  109. data/oa-oauth/lib/omniauth/strategies/netflix.rb +65 -0
  110. data/oa-oauth/lib/omniauth/strategies/oauth.rb +85 -0
  111. data/oa-oauth/lib/omniauth/strategies/oauth2.rb +98 -0
  112. data/oa-oauth/lib/omniauth/strategies/qzone.rb +69 -0
  113. data/oa-oauth/lib/omniauth/strategies/rdio.rb +45 -0
  114. data/oa-oauth/lib/omniauth/strategies/renren.rb +87 -0
  115. data/oa-oauth/lib/omniauth/strategies/salesforce.rb +44 -0
  116. data/oa-oauth/lib/omniauth/strategies/smug_mug.rb +42 -0
  117. data/oa-oauth/lib/omniauth/strategies/sound_cloud.rb +46 -0
  118. data/oa-oauth/lib/omniauth/strategies/t163.rb +57 -0
  119. data/oa-oauth/lib/omniauth/strategies/teambox.rb +49 -0
  120. data/oa-oauth/lib/omniauth/strategies/thirty_seven_signals.rb +41 -0
  121. data/oa-oauth/lib/omniauth/strategies/tqq.rb +64 -0
  122. data/oa-oauth/lib/omniauth/strategies/trade_me.rb +45 -0
  123. data/oa-oauth/lib/omniauth/strategies/trip_it.rb +22 -0
  124. data/oa-oauth/lib/omniauth/strategies/tsina.rb +79 -0
  125. data/oa-oauth/lib/omniauth/strategies/tsohu.rb +57 -0
  126. data/oa-oauth/lib/omniauth/strategies/tumblr.rb +60 -0
  127. data/oa-oauth/lib/omniauth/strategies/twitter.rb +57 -0
  128. data/oa-oauth/lib/omniauth/strategies/type_pad.rb +76 -0
  129. data/oa-oauth/lib/omniauth/strategies/vimeo.rb +54 -0
  130. data/oa-oauth/lib/omniauth/strategies/vkontakte.rb +84 -0
  131. data/oa-oauth/lib/omniauth/strategies/xauth.rb +67 -0
  132. data/oa-oauth/lib/omniauth/strategies/yahoo.rb +55 -0
  133. data/oa-oauth/lib/omniauth/strategies/yammer.rb +43 -0
  134. data/oa-oauth/lib/omniauth/strategies/you_tube.rb +73 -0
  135. data/oa-oauth/lib/omniauth/version.rb +19 -0
  136. data/oa-oauth/oa-oauth.gemspec +33 -0
  137. data/oa-oauth/spec/fixtures/basecamp_200.xml +24 -0
  138. data/oa-oauth/spec/fixtures/campfire_200.json +10 -0
  139. data/oa-oauth/spec/omniauth/strategies/bitly_spec.rb +5 -0
  140. data/oa-oauth/spec/omniauth/strategies/dailymile_spec.rb +5 -0
  141. data/oa-oauth/spec/omniauth/strategies/doit_spec.rb +5 -0
  142. data/oa-oauth/spec/omniauth/strategies/dopplr_spec.rb +5 -0
  143. data/oa-oauth/spec/omniauth/strategies/douban_spec.rb +5 -0
  144. data/oa-oauth/spec/omniauth/strategies/evernote_spec.rb +5 -0
  145. data/oa-oauth/spec/omniauth/strategies/facebook_spec.rb +5 -0
  146. data/oa-oauth/spec/omniauth/strategies/foursquare_spec.rb +18 -0
  147. data/oa-oauth/spec/omniauth/strategies/github_spec.rb +5 -0
  148. data/oa-oauth/spec/omniauth/strategies/goodreads_spec.rb +6 -0
  149. data/oa-oauth/spec/omniauth/strategies/google_spec.rb +5 -0
  150. data/oa-oauth/spec/omniauth/strategies/gowalla_spec.rb +5 -0
  151. data/oa-oauth/spec/omniauth/strategies/hyves_spec.rb +5 -0
  152. data/oa-oauth/spec/omniauth/strategies/identica_spec.rb +5 -0
  153. data/oa-oauth/spec/omniauth/strategies/linked_in_spec.rb +5 -0
  154. data/oa-oauth/spec/omniauth/strategies/meetup_spec.rb +14 -0
  155. data/oa-oauth/spec/omniauth/strategies/miso_spec.rb +5 -0
  156. data/oa-oauth/spec/omniauth/strategies/netflix_spec.rb +5 -0
  157. data/oa-oauth/spec/omniauth/strategies/oauth2_spec.rb +0 -0
  158. data/oa-oauth/spec/omniauth/strategies/oauth_spec.rb +77 -0
  159. data/oa-oauth/spec/omniauth/strategies/rdio_spec.rb +5 -0
  160. data/oa-oauth/spec/omniauth/strategies/salesforce_spec.rb +5 -0
  161. data/oa-oauth/spec/omniauth/strategies/smug_mug_spec.rb +5 -0
  162. data/oa-oauth/spec/omniauth/strategies/sound_cloud_spec.rb +5 -0
  163. data/oa-oauth/spec/omniauth/strategies/t163_spec.rb +5 -0
  164. data/oa-oauth/spec/omniauth/strategies/teambox_spec.rb +5 -0
  165. data/oa-oauth/spec/omniauth/strategies/thirty_seven_signals_spec.rb +5 -0
  166. data/oa-oauth/spec/omniauth/strategies/trade_me_spec.rb +5 -0
  167. data/oa-oauth/spec/omniauth/strategies/trip_it_spec.rb +5 -0
  168. data/oa-oauth/spec/omniauth/strategies/tsina_spec.rb +5 -0
  169. data/oa-oauth/spec/omniauth/strategies/tumblr_spec.rb +5 -0
  170. data/oa-oauth/spec/omniauth/strategies/twitter_spec.rb +20 -0
  171. data/oa-oauth/spec/omniauth/strategies/type_pad_spec.rb +5 -0
  172. data/oa-oauth/spec/omniauth/strategies/vimeo_spec.rb +5 -0
  173. data/oa-oauth/spec/omniauth/strategies/vkontakte_spec.rb +5 -0
  174. data/oa-oauth/spec/omniauth/strategies/yahoo_spec.rb +5 -0
  175. data/oa-oauth/spec/omniauth/strategies/yammer_spec.rb +5 -0
  176. data/oa-oauth/spec/omniauth/strategies/you_tube_spec.rb +5 -0
  177. data/oa-oauth/spec/spec_helper.rb +27 -0
  178. data/oa-oauth/spec/support/shared_examples.rb +29 -0
  179. data/oa-openid/.gemtest +0 -0
  180. data/oa-openid/.rspec +3 -0
  181. data/oa-openid/.yardopts +4 -0
  182. data/oa-openid/LICENSE +19 -0
  183. data/oa-openid/README.rdoc +51 -0
  184. data/oa-openid/Rakefile +6 -0
  185. data/oa-openid/lib/oa-openid.rb +1 -0
  186. data/oa-openid/lib/omniauth/openid.rb +59 -0
  187. data/oa-openid/lib/omniauth/openid/gapps.rb +32 -0
  188. data/oa-openid/lib/omniauth/strategies/google_apps.rb +23 -0
  189. data/oa-openid/lib/omniauth/strategies/open_id.rb +132 -0
  190. data/oa-openid/lib/omniauth/version.rb +19 -0
  191. data/oa-openid/oa-openid.gemspec +29 -0
  192. data/oa-openid/spec/omniauth/strategies/open_id_spec.rb +71 -0
  193. data/oa-openid/spec/spec_helper.rb +14 -0
  194. data/omniauth.gemspec +3 -3
  195. data/tasks/all.rb +134 -0
  196. metadata +199 -9
  197. 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,10 @@
1
+ {
2
+ "user": {
3
+ "id": 92718,
4
+ "name": "Kenneth Szell",
5
+ "email_address": "kens@example.org",
6
+ "admin": true,
7
+ "created_at": "2009-07-20T09:21:34Z",
8
+ "type": "Member"
9
+ }
10
+ }
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Bitly do
4
+ it_should_behave_like "an oauth2 strategy"
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Dailymile do
4
+ it_should_behave_like "an oauth2 strategy"
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Doit do
4
+ it_should_behave_like "an oauth2 strategy"
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Dopplr do
4
+ it_should_behave_like "an oauth strategy"
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe OmniAuth::Strategies::Douban do
4
+ it_should_behave_like 'an oauth strategy'
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Evernote do
4
+ it_should_behave_like "an oauth strategy"
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Facebook do
4
+ it_should_behave_like "an oauth2 strategy"
5
+ end
@@ -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,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::GitHub do
4
+ it_should_behave_like "an oauth2 strategy"
5
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Goodreads do
4
+ it_should_behave_like 'an oauth strategy'
5
+ end
6
+
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Google do
4
+ it_should_behave_like 'an oauth strategy'
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Gowalla do
4
+ it_should_behave_like "an oauth2 strategy"
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Hyves do
4
+ it_should_behave_like "an oauth strategy"
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Identica do
4
+ it_should_behave_like 'an oauth strategy'
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::LinkedIn do
4
+ it_should_behave_like "an oauth strategy"
5
+ 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
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Miso do
4
+ it_should_behave_like 'an oauth strategy'
5
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe OmniAuth::Strategies::Netflix do
4
+ it_should_behave_like "an oauth strategy"
5
+ 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