warden-github 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ coverage
2
+ .bundle
3
+ pkg
4
+ .DS_Store
data/Gemfile ADDED
@@ -0,0 +1,23 @@
1
+ source 'http://rubygems.org'
2
+
3
+ group :runtime do
4
+ gem 'warden', '~>1.0.4'
5
+ gem 'oauth2', '~>0.4.1'
6
+ gem 'json', '>=1.0.0'
7
+ end
8
+
9
+ group :test do
10
+ gem 'rake'
11
+ gem 'rspec', '~>1.3.0', :require => 'spec'
12
+ gem 'rcov'
13
+ gem 'sinatra', '~>1.0', :require => 'sinatra/base'
14
+ gem 'shotgun'
15
+ gem 'webrat', '~>0.7.0'
16
+ gem 'bundler', '~>1.0'
17
+ gem 'randexp', '>=0.1.4'
18
+ gem 'ruby-debug'
19
+ gem 'addressable', '~>2.2.0', :require => 'addressable/uri'
20
+ gem 'rack-test', '~>0.5.3', :require => 'rack/test'
21
+ end
22
+
23
+ # vim:ft=ruby
data/README.md CHANGED
@@ -11,4 +11,4 @@ The Extension in Action
11
11
  =======================
12
12
  % gem install bundler
13
13
  % bundle install
14
- % GH_CLIENT_ID="<from GH>" GH_SECRET="<from GH>" bundle exec rackup
14
+ % GITHUB_CLIENT_ID="<from GH>" GITHUB_CLIENT_SECRET="<from GH>" bundle exec rackup
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ require 'rake/gempackagetask'
2
+ require 'rubygems/specification'
3
+ require 'date'
4
+ require 'bundler'
5
+
6
+ require 'lib/warden-github/version'
7
+
8
+ task :default => [:spec]
9
+
10
+ require 'spec/rake/spectask'
11
+ desc "Run specs"
12
+ Spec::Rake::SpecTask.new do |t|
13
+ t.spec_files = FileList['spec/**/*_spec.rb']
14
+ t.spec_opts = %w(-fs --color)
15
+ t.spec_opts << '--loadby' << 'random'
16
+
17
+ t.rcov_opts << '--exclude' << 'spec,.bundle,.rvm'
18
+ t.rcov = ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true
19
+ t.rcov_opts << '--text-summary'
20
+ t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
21
+ end
data/config.ru ADDED
@@ -0,0 +1,20 @@
1
+ ENV['RACK_ENV'] ||= 'development'
2
+
3
+ begin
4
+ require File.expand_path('../.bundle/environment', __FILE__)
5
+ rescue LoadError
6
+ require "rubygems"
7
+ require "bundler"
8
+ Bundler.setup
9
+ end
10
+
11
+ Bundler.require(:runtime, :test)
12
+ require "ruby-debug"
13
+
14
+ $LOAD_PATH << File.dirname(__FILE__) + '/lib'
15
+ require File.expand_path(File.join(File.dirname(__FILE__), 'lib', 'warden-github'))
16
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec', 'app'))
17
+
18
+ run Example.app
19
+
20
+ # vim:ft=ruby
@@ -1,5 +1,5 @@
1
1
  module Warden
2
2
  module Github
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
4
4
  end
5
5
  end
data/spec/app.rb ADDED
@@ -0,0 +1,58 @@
1
+ module Example
2
+ class App < Sinatra::Base
3
+ enable :sessions
4
+ enable :raise_errors
5
+ disable :show_exceptions
6
+
7
+ use Warden::Manager do |manager|
8
+ manager.default_strategies :github
9
+ manager.failure_app = BadAuthentication
10
+
11
+ manager[:github_client_id] = ENV['GITHUB_CLIENT_ID'] || 'ee9aa24b64d82c21535a'
12
+ manager[:github_secret] = ENV['GITHUB_CLIENT_SECRET'] || 'ed8ff0c54067aefb808dab1ca265865405d08d6f'
13
+
14
+ manager[:github_scopes] = 'email,offline_access'
15
+ manager[:github_callback_url] = '/auth/github/callback'
16
+ end
17
+
18
+ helpers do
19
+ def ensure_authenticated
20
+ unless env['warden'].authenticate!
21
+ throw(:warden)
22
+ end
23
+ end
24
+
25
+ def user
26
+ env['warden'].user
27
+ end
28
+ end
29
+
30
+ get '/' do
31
+ ensure_authenticated
32
+ "Hello There, #{user.name}!"
33
+ end
34
+
35
+ get '/auth/github/callback' do
36
+ ensure_authenticated
37
+ redirect '/'
38
+ end
39
+
40
+ get '/logout' do
41
+ env['warden'].logout
42
+ "Peace!"
43
+ end
44
+ end
45
+
46
+ class BadAuthentication < Sinatra::Base
47
+ get '/unauthenticated' do
48
+ status 403
49
+ "Unable to authenticate, sorry bud."
50
+ end
51
+ end
52
+
53
+ def self.app
54
+ @app ||= Rack::Builder.new do
55
+ run App
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "Warden::Github" do
4
+ it "requesting an url that requires authentication redirects to github" do
5
+ response = get "/"
6
+
7
+ uri = Addressable::URI.parse(response.headers["Location"])
8
+
9
+ uri.scheme.should eql('https')
10
+ uri.host.should eql('github.com')
11
+
12
+ params = uri.query_values
13
+ params['type'].should eql('web_server')
14
+ params['scope'].should eql('email,offline_access,repo,gist')
15
+ params['client_id'].should match(/\w{20}/)
16
+ params['redirect_uri'].should eql('http://example.org/auth/github/callback')
17
+ end
18
+ end
@@ -0,0 +1,32 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "Warden::Github::Oauth::Proxy" do
4
+ before(:all) do
5
+ sha = Digest::SHA1.hexdigest(Time.now.to_s)
6
+ @proxy = Warden::Github::Oauth::Proxy.new(sha[0..19], sha[0..39],
7
+ 'email,offline_access,repo', 'http://example.org/auth/github/callback')
8
+ end
9
+
10
+ it "returns an authorize url" do
11
+ uri = Addressable::URI.parse(@proxy.authorize_url)
12
+
13
+ uri.scheme.should eql('https')
14
+ uri.host.should eql('github.com')
15
+
16
+ params = uri.query_values
17
+ params['type'].should eql('web_server')
18
+ params['scope'].should eql('email,offline_access,repo')
19
+ params['client_id'].should match(/\w{20}/)
20
+ params['redirect_uri'].should eql('http://example.org/auth/github/callback')
21
+ end
22
+
23
+ it "has a client object" do
24
+ @proxy.client.should_not be_nil
25
+ end
26
+
27
+ it "returns access tokens" do
28
+ pending "this hits the network" do
29
+ lambda { @proxy.access_token_for(/\w{20}/.gen) }.should_not raise_error
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,24 @@
1
+ Bundler.require(:default, :runtime, :test)
2
+
3
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'warden-github')
4
+ require File.join(File.dirname(__FILE__), 'app')
5
+
6
+ require 'pp'
7
+
8
+ Webrat.configure do |config|
9
+ config.mode = :rack
10
+ config.application_port = 4567
11
+ end
12
+
13
+ Spec::Runner.configure do |config|
14
+ config.include(Rack::Test::Methods)
15
+ config.include(Webrat::Methods)
16
+ config.include(Webrat::Matchers)
17
+
18
+ config.before(:each) do
19
+ end
20
+
21
+ def app
22
+ Example.app
23
+ end
24
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warden-github
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease: false
4
+ hash: 15
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 7
10
- version: 0.0.7
9
+ - 8
10
+ version: 0.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Corey Donohoe
@@ -15,72 +15,186 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-08 00:00:00 -08:00
18
+ date: 2011-05-16 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
22
+ name: json
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
23
25
  none: false
24
26
  requirements:
25
27
  - - ~>
26
28
  - !ruby/object:Gem::Version
27
- hash: 31
29
+ hash: 5
28
30
  segments:
29
- - 0
30
- - 10
31
- version: "0.10"
32
- requirement: *id001
31
+ - 1
32
+ - 5
33
+ version: "1.5"
33
34
  type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
34
37
  name: warden
35
38
  prerelease: false
36
- - !ruby/object:Gem::Dependency
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
38
40
  none: false
39
41
  requirements:
40
42
  - - ~>
41
43
  - !ruby/object:Gem::Version
42
- hash: 15
44
+ hash: 31
43
45
  segments:
46
+ - 1
44
47
  - 0
45
- - 0
46
- - 8
47
- version: 0.0.8
48
- requirement: *id002
48
+ - 4
49
+ version: 1.0.4
49
50
  type: :runtime
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
50
53
  name: oauth2
51
54
  prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ hash: 13
61
+ segments:
62
+ - 0
63
+ - 4
64
+ - 1
65
+ version: 0.4.1
66
+ type: :runtime
67
+ version_requirements: *id003
52
68
  - !ruby/object:Gem::Dependency
53
- version_requirements: &id003 !ruby/object:Gem::Requirement
69
+ name: rake
70
+ prerelease: false
71
+ requirement: &id004 !ruby/object:Gem::Requirement
54
72
  none: false
55
73
  requirements:
56
74
  - - ">="
57
75
  - !ruby/object:Gem::Version
58
- hash: 23
76
+ hash: 3
77
+ segments:
78
+ - 0
79
+ version: "0"
80
+ type: :development
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ name: rspec
84
+ prerelease: false
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ hash: 27
59
91
  segments:
60
92
  - 1
93
+ - 3
61
94
  - 0
95
+ version: 1.3.0
96
+ type: :development
97
+ version_requirements: *id005
98
+ - !ruby/object:Gem::Dependency
99
+ name: shotgun
100
+ prerelease: false
101
+ requirement: &id006 !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ hash: 3
107
+ segments:
62
108
  - 0
63
- version: 1.0.0
64
- requirement: *id003
65
- type: :runtime
66
- name: json
109
+ version: "0"
110
+ type: :development
111
+ version_requirements: *id006
112
+ - !ruby/object:Gem::Dependency
113
+ name: bundler
114
+ prerelease: false
115
+ requirement: &id007 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ hash: 15
121
+ segments:
122
+ - 1
123
+ - 0
124
+ version: "1.0"
125
+ type: :development
126
+ version_requirements: *id007
127
+ - !ruby/object:Gem::Dependency
128
+ name: addressable
129
+ prerelease: false
130
+ requirement: &id008 !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ~>
134
+ - !ruby/object:Gem::Version
135
+ hash: 7
136
+ segments:
137
+ - 2
138
+ - 2
139
+ - 0
140
+ version: 2.2.0
141
+ type: :development
142
+ version_requirements: *id008
143
+ - !ruby/object:Gem::Dependency
144
+ name: rack-test
67
145
  prerelease: false
68
- description: A warden extension that integrates with github oauth
69
- email: atmos@atmos.org
146
+ requirement: &id009 !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ~>
150
+ - !ruby/object:Gem::Version
151
+ hash: 13
152
+ segments:
153
+ - 0
154
+ - 5
155
+ - 3
156
+ version: 0.5.3
157
+ type: :development
158
+ version_requirements: *id009
159
+ - !ruby/object:Gem::Dependency
160
+ name: ruby-debug
161
+ prerelease: false
162
+ requirement: &id010 !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ hash: 3
168
+ segments:
169
+ - 0
170
+ version: "0"
171
+ type: :development
172
+ version_requirements: *id010
173
+ description: A warden strategy for easy oauth integration with github
174
+ email:
175
+ - atmos@atmos.org
70
176
  executables: []
71
177
 
72
178
  extensions: []
73
179
 
74
- extra_rdoc_files:
75
- - LICENSE
180
+ extra_rdoc_files: []
181
+
76
182
  files:
183
+ - .gitignore
184
+ - Gemfile
77
185
  - LICENSE
78
186
  - README.md
187
+ - Rakefile
188
+ - config.ru
189
+ - lib/warden-github.rb
79
190
  - lib/warden-github/proxy.rb
80
191
  - lib/warden-github/strategy.rb
81
192
  - lib/warden-github/user.rb
82
193
  - lib/warden-github/version.rb
83
- - lib/warden-github.rb
194
+ - spec/app.rb
195
+ - spec/oauth_spec.rb
196
+ - spec/proxy_spec.rb
197
+ - spec/spec_helper.rb
84
198
  has_rdoc: true
85
199
  homepage: http://github.com/atmos/warden-github
86
200
  licenses: []
@@ -110,10 +224,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
224
  version: "0"
111
225
  requirements: []
112
226
 
113
- rubyforge_project:
114
- rubygems_version: 1.3.7
227
+ rubyforge_project: warden-github
228
+ rubygems_version: 1.6.2
115
229
  signing_key:
116
230
  specification_version: 3
117
- summary: A warden extension that integrates with github oauth
118
- test_files: []
119
-
231
+ summary: A warden strategy for easy oauth integration with github
232
+ test_files:
233
+ - spec/app.rb
234
+ - spec/oauth_spec.rb
235
+ - spec/proxy_spec.rb
236
+ - spec/spec_helper.rb