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 CHANGED
@@ -9,7 +9,7 @@ Installation
9
9
 
10
10
  Easy:
11
11
 
12
- gem install danwrong-merb_openid --source http://gems.github.com
12
+ gem install merb_openid
13
13
 
14
14
  Then in your application's init.rb:
15
15
 
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.blank?) || params[:openid_complete])
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
- yield :setup_needed, identity_url, response.setup_url
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
@@ -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
- it "should do nothing" do
5
- true.should == true
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.2
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-06-13 00:00:00 -07:00
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.1
72
+ rubygems_version: 1.2.0
73
73
  signing_key:
74
74
  specification_version: 2
75
75
  summary: A Merb plugin for consuming OpenID