danwrong-merb_openid 0.0.2 → 0.0.3
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/README +1 -1
- data/Rakefile +54 -0
- data/lib/merb_openid/controller_extensions.rb +8 -13
- data/lib/merb_openid.rb +3 -0
- data/spec/merb_openid_spec.rb +86 -3
- metadata +3 -3
data/README
CHANGED
data/Rakefile
CHANGED
@@ -1,16 +1,70 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake/gempackagetask'
|
3
|
+
require 'rake/contrib/rubyforgepublisher'
|
3
4
|
|
4
5
|
spec = eval(File.read(File.join(File.dirname(__FILE__), 'merb_openid.gemspec')))
|
5
6
|
|
6
7
|
Rake::GemPackageTask.new(spec) do |pkg|
|
7
8
|
pkg.gem_spec = spec
|
9
|
+
pkg.need_zip = true
|
10
|
+
pkg.need_tar = true
|
8
11
|
end
|
9
12
|
|
10
13
|
task :install => [:package] do
|
11
14
|
sh %{sudo gem install pkg/#{spec.name}-#{spec.version} --no-update-sources}
|
12
15
|
end
|
13
16
|
|
17
|
+
task :verify_user do
|
18
|
+
raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "Publish gem+tgz+zip on RubyForge. You must make sure lib/version.rb is aligned with the CHANGELOG file"
|
22
|
+
task :publish_packages => [:verify_user, :package] do
|
23
|
+
package_name = [spec.name, spec.version].join '-'
|
24
|
+
|
25
|
+
release_files = FileList[
|
26
|
+
"pkg/#{package_name}.gem",
|
27
|
+
"pkg/#{package_name}.tgz",
|
28
|
+
"pkg/#{package_name}.zip"
|
29
|
+
]
|
30
|
+
unless spec.version =~ /RC[0-9]$/
|
31
|
+
require 'meta_project'
|
32
|
+
require 'rake/contrib/xforge'
|
33
|
+
|
34
|
+
Rake::XForge::Release.new(MetaProject::Project::XForge::RubyForge.new('merbopenid')) do |xf|
|
35
|
+
# Never hardcode user name and password in the Rakefile!
|
36
|
+
xf.user_name = ENV['RUBYFORGE_USER']
|
37
|
+
xf.files = release_files.to_a
|
38
|
+
xf.release_name = "Merb OpenID #{spec.version}"
|
39
|
+
xf.release_notes = ''
|
40
|
+
xf.release_changes = ''
|
41
|
+
end
|
42
|
+
else
|
43
|
+
puts "SINCE THIS IS A PRERELEASE, FILES ARE UPLOADED WITH SSH, NOT TO THE RUBYFORGE FILE SECTION"
|
44
|
+
puts "YOU MUST TYPE THE PASSWORD #{release_files.length} TIMES..."
|
45
|
+
|
46
|
+
host = "merbopenid-website@rubyforge.org"
|
47
|
+
remote_dir = "/var/www/gforge-projects/merbopenid"
|
48
|
+
|
49
|
+
publisher = Rake::SshFilePublisher.new(
|
50
|
+
host,
|
51
|
+
remote_dir,
|
52
|
+
File.dirname(__FILE__),
|
53
|
+
*release_files
|
54
|
+
)
|
55
|
+
publisher.upload
|
56
|
+
|
57
|
+
puts "UPLOADED THE FOLLOWING FILES:"
|
58
|
+
release_files.each do |file|
|
59
|
+
name = file.match(/pkg\/(.*)/)[1]
|
60
|
+
puts "* http://merbopenid.rubyforge.org/#{name}"
|
61
|
+
end
|
62
|
+
|
63
|
+
puts "They are not linked to anywhere, so don't forget to tell people!"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
|
14
68
|
namespace :jruby do
|
15
69
|
|
16
70
|
desc "Run :package and install the resulting .gem with jruby"
|
@@ -15,7 +15,7 @@ module MerbOpenID
|
|
15
15
|
module ControllerExtensions
|
16
16
|
|
17
17
|
def openid_request?(open_id_param=params[:openid_url])
|
18
|
-
!!((open_id_param && !open_id_param.
|
18
|
+
!!((open_id_param && !open_id_param.strip.empty?) || params[:openid_complete])
|
19
19
|
end
|
20
20
|
|
21
21
|
def openid_authenticate(options={}, &block)
|
@@ -28,12 +28,12 @@ module MerbOpenID
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
private
|
32
|
+
|
31
33
|
def openid_consumer
|
32
34
|
@@openid_consumer ||= OpenID::Consumer.new session, MerbOpenID.store
|
33
35
|
end
|
34
36
|
|
35
|
-
private
|
36
|
-
|
37
37
|
def begin_openid_authentication(openid_url, options={})
|
38
38
|
fields = options[:sreg] || {}
|
39
39
|
immediate = (options[:immediate] === true)
|
@@ -63,7 +63,8 @@ module MerbOpenID
|
|
63
63
|
when OpenID::Consumer::FAILURE
|
64
64
|
yield :failed, identity_url, nil
|
65
65
|
when OpenID::Consumer::SETUP_NEEDED
|
66
|
-
|
66
|
+
# get around ruby openid 2.x bug
|
67
|
+
yield :setup_needed, identity_url, response.instance_variable_get(:@setup_url)
|
67
68
|
end
|
68
69
|
rescue Timeout::Error
|
69
70
|
yield :failed
|
@@ -92,19 +93,13 @@ module MerbOpenID
|
|
92
93
|
end
|
93
94
|
|
94
95
|
def openid_trust_root
|
95
|
-
@openid_trust_root ||= [request.protocol, request.host, "/"].join
|
96
|
+
@openid_trust_root ||= [request.protocol, '://', request.host, "/"].join
|
96
97
|
end
|
97
98
|
|
98
99
|
def openid_return_to
|
99
|
-
@openid_return_to ||= [request.protocol, request.host, request.uri].join
|
100
|
+
@openid_return_to ||= [request.protocol, '://', request.host, request.uri].join
|
100
101
|
end
|
101
102
|
|
102
103
|
end
|
103
104
|
|
104
|
-
end
|
105
|
-
|
106
|
-
Merb::Controller.class_eval do
|
107
|
-
include MerbOpenID::ControllerExtensions
|
108
|
-
end
|
109
|
-
|
110
|
-
MerbOpenID.store = (Merb::Config[:merb_openid] && Merb::Config[:merb_openid][:store]) || OpenID::Store::Memory.new
|
105
|
+
end
|
data/lib/merb_openid.rb
CHANGED
@@ -7,6 +7,9 @@ if defined?(Merb::Plugins)
|
|
7
7
|
|
8
8
|
Merb::BootLoader.after_app_loads do
|
9
9
|
require 'merb_openid/controller_extensions'
|
10
|
+
|
11
|
+
Merb::Controller.class_eval { include MerbOpenID::ControllerExtensions }
|
12
|
+
MerbOpenID.store = (Merb::Config[:merb_openid] && Merb::Config[:merb_openid][:store]) || OpenID::Store::Memory.new
|
10
13
|
end
|
11
14
|
|
12
15
|
end
|
data/spec/merb_openid_spec.rb
CHANGED
@@ -1,7 +1,90 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
require 'merb_openid/controller_extensions'
|
2
3
|
|
3
|
-
describe "merb_openid" do
|
4
|
-
|
5
|
-
|
4
|
+
describe "Controller with merb_openid mixed in" do
|
5
|
+
before(:each) do
|
6
|
+
mock_consumer = mock('openid_consumer')
|
7
|
+
|
8
|
+
mock_openid_request = mock('openid_request')
|
9
|
+
mock_openid_request.stub!(:return_to_args).and_return({})
|
10
|
+
mock_openid_request.stub!(:add_extension)
|
11
|
+
mock_openid_request.stub!(:redirect_url).and_return('http://openidprovider.com')
|
12
|
+
|
13
|
+
|
14
|
+
@controller = Class.new {
|
15
|
+
include MerbOpenID::ControllerExtensions
|
16
|
+
|
17
|
+
attr_accessor :params, :session, :mock_consumer, :mock_request
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@params, @session = {}, {}
|
21
|
+
end
|
22
|
+
|
23
|
+
def openid_consumer
|
24
|
+
@mock_openid_consumer ||= begin
|
25
|
+
c = mock_consumer
|
26
|
+
c.stub!(:begin).and_return(mock_request)
|
27
|
+
c
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def request
|
32
|
+
Struct.new(:protocol, :host, :uri).new('http://', 'danwebb.net', '/foreskin')
|
33
|
+
end
|
34
|
+
|
35
|
+
def redirect(url)
|
36
|
+
end
|
37
|
+
|
38
|
+
}.new
|
39
|
+
|
40
|
+
@controller.mock_consumer = mock_consumer
|
41
|
+
@controller.mock_request = mock_openid_request
|
6
42
|
end
|
43
|
+
|
44
|
+
it 'should be an OpenID request if openid_url param provided' do
|
45
|
+
@controller.params[:openid_url] = 'aurl.com'
|
46
|
+
|
47
|
+
@controller.should be_openid_request
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should be an OpenID request if open_id_complete param is provided' do
|
51
|
+
@controller.params[:openid_complete] = '1'
|
52
|
+
|
53
|
+
@controller.should be_openid_request
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'should not be an openid request if openid_url is provided but its blank' do
|
57
|
+
@controller.params[:openid_url] = ' '
|
58
|
+
|
59
|
+
@controller.should_not be_openid_request
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'openid_authenticate should begin a OpenID request if openid_complete is not in the params hash' do
|
63
|
+
@controller.params[:openid_url] = 'danwebb.net'
|
64
|
+
@controller.should_receive(:begin_openid_authentication)
|
65
|
+
@controller.openid_authenticate
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'openid_authenticate should complete a OpenID request if openid_complete is in the params hash' do
|
69
|
+
@controller.params[:openid_complete] = '1'
|
70
|
+
@controller.should_receive(:complete_openid_authentication)
|
71
|
+
@controller.openid_authenticate
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should add sreg fields if fields option given' do
|
75
|
+
@controller.params[:openid_url] = 'danwebb.net'
|
76
|
+
|
77
|
+
@controller.mock_request.should_receive(:add_extension)
|
78
|
+
|
79
|
+
@controller.openid_authenticate(:sreg => [:email])
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should redirect to OpenID provider' do
|
83
|
+
@controller.params[:openid_url] = 'danwebb.net'
|
84
|
+
|
85
|
+
@controller.should_receive(:redirect).with('http://openidprovider.com')
|
86
|
+
|
87
|
+
@controller.openid_authenticate
|
88
|
+
end
|
89
|
+
|
7
90
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danwrong-merb_openid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Webb
|
@@ -9,7 +9,7 @@ autorequire: merb_openid
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-08-13 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -69,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
69
|
requirements: []
|
70
70
|
|
71
71
|
rubyforge_project:
|
72
|
-
rubygems_version: 1.0
|
72
|
+
rubygems_version: 1.2.0
|
73
73
|
signing_key:
|
74
74
|
specification_version: 2
|
75
75
|
summary: A Merb plugin for consuming OpenID
|