lsdr-authlogic-connect 0.0.3.9
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/MIT-LICENSE +20 -0
- data/README.markdown +240 -0
- data/Rakefile +71 -0
- data/init.rb +1 -0
- data/lib/authlogic-connect.rb +27 -0
- data/lib/authlogic_connect/authlogic_connect.rb +46 -0
- data/lib/authlogic_connect/callback_filter.rb +19 -0
- data/lib/authlogic_connect/common.rb +10 -0
- data/lib/authlogic_connect/common/session.rb +27 -0
- data/lib/authlogic_connect/common/state.rb +16 -0
- data/lib/authlogic_connect/common/user.rb +115 -0
- data/lib/authlogic_connect/common/variables.rb +77 -0
- data/lib/authlogic_connect/engine.rb +14 -0
- data/lib/authlogic_connect/ext.rb +56 -0
- data/lib/authlogic_connect/oauth.rb +14 -0
- data/lib/authlogic_connect/oauth/helper.rb +20 -0
- data/lib/authlogic_connect/oauth/process.rb +68 -0
- data/lib/authlogic_connect/oauth/session.rb +58 -0
- data/lib/authlogic_connect/oauth/state.rb +54 -0
- data/lib/authlogic_connect/oauth/tokens/facebook_token.rb +11 -0
- data/lib/authlogic_connect/oauth/tokens/get_satisfaction_token.rb +9 -0
- data/lib/authlogic_connect/oauth/tokens/google_token.rb +41 -0
- data/lib/authlogic_connect/oauth/tokens/linked_in_token.rb +19 -0
- data/lib/authlogic_connect/oauth/tokens/myspace_token.rb +26 -0
- data/lib/authlogic_connect/oauth/tokens/oauth_token.rb +131 -0
- data/lib/authlogic_connect/oauth/tokens/opensocial_token.rb +0 -0
- data/lib/authlogic_connect/oauth/tokens/twitter_token.rb +8 -0
- data/lib/authlogic_connect/oauth/tokens/vimeo_token.rb +18 -0
- data/lib/authlogic_connect/oauth/tokens/yahoo_token.rb +19 -0
- data/lib/authlogic_connect/oauth/user.rb +68 -0
- data/lib/authlogic_connect/oauth/variables.rb +55 -0
- data/lib/authlogic_connect/openid.rb +11 -0
- data/lib/authlogic_connect/openid/process.rb +30 -0
- data/lib/authlogic_connect/openid/session.rb +78 -0
- data/lib/authlogic_connect/openid/state.rb +47 -0
- data/lib/authlogic_connect/openid/tokens/aol_token.rb +0 -0
- data/lib/authlogic_connect/openid/tokens/blogger_token.rb +0 -0
- data/lib/authlogic_connect/openid/tokens/flickr_token.rb +0 -0
- data/lib/authlogic_connect/openid/tokens/my_openid_token.rb +3 -0
- data/lib/authlogic_connect/openid/tokens/openid_token.rb +9 -0
- data/lib/authlogic_connect/openid/user.rb +62 -0
- data/lib/authlogic_connect/openid/variables.rb +19 -0
- data/lib/authlogic_connect/token.rb +53 -0
- data/lib/open_id_authentication.rb +128 -0
- data/rails/init.rb +19 -0
- data/test/controllers/test_users_controller.rb +21 -0
- data/test/libs/database.rb +48 -0
- data/test/libs/user.rb +3 -0
- data/test/libs/user_session.rb +2 -0
- data/test/old.rb +53 -0
- data/test/test_authlogic_connect.rb +13 -0
- data/test/test_helper.rb +153 -0
- data/test/test_user.rb +255 -0
- metadata +247 -0
data/rails/init.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require "authlogic-connect"
|
2
|
+
|
3
|
+
# copied from open_id_authentication plugin on github
|
4
|
+
|
5
|
+
# this is the Rails 2.x equivalent.
|
6
|
+
# Rails 3 equivalent is in authlogic_connect/engine.rb
|
7
|
+
if Rails.version < '3'
|
8
|
+
config.gem 'rack-openid', :lib => 'rack/openid', :version => '>=0.2.1'
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'open_id_authentication'
|
12
|
+
|
13
|
+
config.middleware.use OpenIdAuthentication
|
14
|
+
config.middleware.use AuthlogicConnect::CallbackFilter
|
15
|
+
|
16
|
+
config.after_initialize do
|
17
|
+
OpenID::Util.logger = Rails.logger
|
18
|
+
ActionController::Base.send :include, OpenIdAuthentication
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper.rb'
|
2
|
+
|
3
|
+
class UsersControllerTest < ActionController::TestCase
|
4
|
+
|
5
|
+
tests UsersController
|
6
|
+
|
7
|
+
context "when signed out" do
|
8
|
+
# setup { sign_out }
|
9
|
+
|
10
|
+
context "on GET to #new" do
|
11
|
+
|
12
|
+
setup { get :new }
|
13
|
+
|
14
|
+
should "do something???" do
|
15
|
+
puts "REQUEST: #{@user.inspect}"
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
|
2
|
+
begin
|
3
|
+
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
4
|
+
rescue ArgumentError
|
5
|
+
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :dbfile => ":memory:")
|
6
|
+
end
|
7
|
+
|
8
|
+
ActiveRecord::Base.configurations = true
|
9
|
+
|
10
|
+
# this schema was directly copied from
|
11
|
+
# http://github.com/viatropos/authlogic-connect-example/blob/master/db/schema.rb
|
12
|
+
ActiveRecord::Schema.define(:version => 1) do
|
13
|
+
|
14
|
+
create_table :sessions, :force => true do |t|
|
15
|
+
t.string :session_id, :null => false
|
16
|
+
t.text :data
|
17
|
+
t.datetime :created_at
|
18
|
+
t.datetime :updated_at
|
19
|
+
end
|
20
|
+
|
21
|
+
create_table :tokens, :force => true do |t|
|
22
|
+
t.integer :user_id
|
23
|
+
t.string :type, :limit => 30
|
24
|
+
t.string :key, :limit => 1024
|
25
|
+
t.string :secret
|
26
|
+
t.boolean :active
|
27
|
+
t.datetime :created_at
|
28
|
+
t.datetime :updated_at
|
29
|
+
end
|
30
|
+
|
31
|
+
create_table :users, :force => true do |t|
|
32
|
+
t.datetime :created_at
|
33
|
+
t.datetime :updated_at
|
34
|
+
t.string :login
|
35
|
+
t.string :crypted_password
|
36
|
+
t.string :password_salt
|
37
|
+
t.string :persistence_token, :null => false
|
38
|
+
t.integer :login_count, :default => 0, :null => false
|
39
|
+
t.datetime :last_request_at
|
40
|
+
t.datetime :last_login_at
|
41
|
+
t.datetime :current_login_at
|
42
|
+
t.string :last_login_ip
|
43
|
+
t.string :current_login_ip
|
44
|
+
t.string :openid_identifier
|
45
|
+
t.integer :active_token_id
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
data/test/libs/user.rb
ADDED
data/test/old.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'tempfile'
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
require 'shoulda'
|
6
|
+
gem 'activerecord', '~>3.0.0'
|
7
|
+
gem 'activesupport', '~>3.0.0'
|
8
|
+
gem 'actionpack', '~>3.0.0'
|
9
|
+
require 'active_record'
|
10
|
+
require 'active_record/version'
|
11
|
+
require 'active_support'
|
12
|
+
require 'action_pack'
|
13
|
+
gem "ruby-openid"
|
14
|
+
gem 'rack-openid', '>=0.2.1'
|
15
|
+
gem "authlogic", :git => "git://github.com/odorcicd/authlogic.git", :branch => "rails3"
|
16
|
+
require 'authlogic'
|
17
|
+
gem "oauth"
|
18
|
+
gem "oauth2"
|
19
|
+
|
20
|
+
puts "Testing against version #{ActiveRecord::VERSION::STRING}"
|
21
|
+
|
22
|
+
begin
|
23
|
+
require 'ruby-debug'
|
24
|
+
rescue LoadError => e
|
25
|
+
puts "debugger disabled"
|
26
|
+
end
|
27
|
+
|
28
|
+
ROOT = File.join(File.dirname(__FILE__), '..')
|
29
|
+
|
30
|
+
def silence_warnings
|
31
|
+
old_verbose, $VERBOSE = $VERBOSE, nil
|
32
|
+
yield
|
33
|
+
ensure
|
34
|
+
$VERBOSE = old_verbose
|
35
|
+
end
|
36
|
+
|
37
|
+
class Test::Unit::TestCase
|
38
|
+
def setup
|
39
|
+
silence_warnings do
|
40
|
+
Object.const_set(:Rails, stub('Rails', :root => ROOT, :env => 'test'))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
$LOAD_PATH << File.join(ROOT, 'lib')
|
46
|
+
$LOAD_PATH << File.join(ROOT, 'lib', 'authlogic-connect')
|
47
|
+
|
48
|
+
require File.join(ROOT, 'lib', 'authlogic-connect.rb')
|
49
|
+
|
50
|
+
FIXTURES_DIR = File.join(File.dirname(__FILE__), "fixtures")
|
51
|
+
config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
|
52
|
+
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
|
53
|
+
ActiveRecord::Base.establish_connection(config['test'])
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class AuthlogicConnectTest < Test::Unit::TestCase
|
4
|
+
context "AuthlogicConnect.config" do
|
5
|
+
setup do
|
6
|
+
AuthlogicConnect.config = {}
|
7
|
+
end
|
8
|
+
|
9
|
+
should "have an empty configuration hash" do
|
10
|
+
assert_equal true, AuthlogicConnect.config.empty?
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "rubygems"
|
3
|
+
require "ruby-debug"
|
4
|
+
gem "activerecord", "= 2.3.5"
|
5
|
+
require "active_record"
|
6
|
+
require "active_record/fixtures"
|
7
|
+
gem "activesupport", "= 2.3.5"
|
8
|
+
require 'active_support'
|
9
|
+
gem 'actionpack', "= 2.3.5"
|
10
|
+
require 'action_controller'
|
11
|
+
require 'shoulda'
|
12
|
+
|
13
|
+
require File.dirname(__FILE__) + '/libs/database'
|
14
|
+
require File.dirname(__FILE__) + '/../lib/authlogic-connect' unless defined?(AuthlogicConnect)
|
15
|
+
require File.dirname(__FILE__) + '/libs/user'
|
16
|
+
require File.dirname(__FILE__) + '/libs/user_session'
|
17
|
+
require 'authlogic/test_case'
|
18
|
+
|
19
|
+
# A temporary fix to bring active record errors up to speed with rails edge.
|
20
|
+
# I need to remove this once the new gem is released. This is only here so my tests pass.
|
21
|
+
unless defined?(::ActiveModel)
|
22
|
+
class ActiveRecord::Errors
|
23
|
+
def [](key)
|
24
|
+
value = on(key)
|
25
|
+
value.is_a?(Array) ? value : [value].compact
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
AuthlogicConnect.config = {
|
32
|
+
:default => "twitter",
|
33
|
+
:connect => {
|
34
|
+
:twitter => {
|
35
|
+
:key => "my_key",
|
36
|
+
:secret => "my_secret",
|
37
|
+
:label => "Twitter"
|
38
|
+
},
|
39
|
+
:facebook => {
|
40
|
+
:key => "my_key",
|
41
|
+
:secret => "my_secret",
|
42
|
+
:label => "Facebook"
|
43
|
+
},
|
44
|
+
:google => {
|
45
|
+
:key => "my_key",
|
46
|
+
:secret => "my_secret",
|
47
|
+
:label => "Google"
|
48
|
+
},
|
49
|
+
:yahoo => {
|
50
|
+
:key => "my_key",
|
51
|
+
:secret => "my_secret",
|
52
|
+
:label => "Yahoo"
|
53
|
+
},
|
54
|
+
:vimeo => {
|
55
|
+
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
# want to add a "method" property!
|
61
|
+
Authlogic::TestCase::MockRequest.class_eval do
|
62
|
+
def method
|
63
|
+
"POST"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
module ControllerHelpers
|
68
|
+
def controller_name
|
69
|
+
"users"
|
70
|
+
end
|
71
|
+
|
72
|
+
def action_name
|
73
|
+
"create"
|
74
|
+
end
|
75
|
+
|
76
|
+
def url_for(options = {})
|
77
|
+
p = []
|
78
|
+
option.each do |k,v|
|
79
|
+
p << "#{k}=#{v}"
|
80
|
+
end
|
81
|
+
p = "?#{p.join("&")}"
|
82
|
+
url = "http://localhost:3000/users#{p}"
|
83
|
+
end
|
84
|
+
|
85
|
+
def session=(value)
|
86
|
+
@session = value
|
87
|
+
end
|
88
|
+
end
|
89
|
+
Authlogic::ControllerAdapters::AbstractAdapter.send(:include, ControllerHelpers)
|
90
|
+
|
91
|
+
Authlogic::CryptoProviders::AES256.key = "myafdsfddddddddddddddddddddddddddddddddddddddddddddddd"
|
92
|
+
|
93
|
+
class ActiveSupport::TestCase
|
94
|
+
include ActiveRecord::TestFixtures
|
95
|
+
self.fixture_path = File.dirname(__FILE__) + "/fixtures"
|
96
|
+
self.use_transactional_fixtures = false
|
97
|
+
self.use_instantiated_fixtures = false
|
98
|
+
self.pre_loaded_fixtures = false
|
99
|
+
fixtures :all
|
100
|
+
setup :activate_authlogic
|
101
|
+
|
102
|
+
private
|
103
|
+
def password_for(user)
|
104
|
+
case user
|
105
|
+
when users(:ben)
|
106
|
+
"benrocks"
|
107
|
+
when users(:zack)
|
108
|
+
"zackrocks"
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def http_basic_auth_for(user = nil, &block)
|
113
|
+
unless user.blank?
|
114
|
+
controller.http_user = user.login
|
115
|
+
controller.http_password = password_for(user)
|
116
|
+
end
|
117
|
+
yield
|
118
|
+
controller.http_user = controller.http_password = nil
|
119
|
+
end
|
120
|
+
|
121
|
+
def set_cookie_for(user, id = nil)
|
122
|
+
controller.cookies["user_credentials"] = {:value => user.persistence_token, :expires => nil}
|
123
|
+
end
|
124
|
+
|
125
|
+
def unset_cookie
|
126
|
+
controller.cookies["user_credentials"] = nil
|
127
|
+
end
|
128
|
+
|
129
|
+
def set_params_for(user, id = nil)
|
130
|
+
controller.params["user_credentials"] = user.single_access_token
|
131
|
+
end
|
132
|
+
|
133
|
+
def unset_params
|
134
|
+
controller.params["user_credentials"] = nil
|
135
|
+
end
|
136
|
+
|
137
|
+
def set_request_content_type(type)
|
138
|
+
controller.request_content_type = type
|
139
|
+
end
|
140
|
+
|
141
|
+
def unset_request_content_type
|
142
|
+
controller.request_content_type = nil
|
143
|
+
end
|
144
|
+
|
145
|
+
def set_session_for(user, id = nil)
|
146
|
+
controller.session["user_credentials"] = user.persistence_token
|
147
|
+
controller.session["user_credentials_id"] = user.id
|
148
|
+
end
|
149
|
+
|
150
|
+
def unset_session
|
151
|
+
controller.session["user_credentials"] = controller.session["user_credentials_id"] = nil
|
152
|
+
end
|
153
|
+
end
|
data/test/test_user.rb
ADDED
@@ -0,0 +1,255 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
module AuthlogicConnect
|
4
|
+
class UserTest < Test::Unit::TestCase
|
5
|
+
context "User creation" do
|
6
|
+
setup do
|
7
|
+
@user = User.new(:login => "viatropos")
|
8
|
+
end
|
9
|
+
|
10
|
+
should "make sure we are loading the models" do
|
11
|
+
assert_equal "viatropos", @user.login
|
12
|
+
end
|
13
|
+
|
14
|
+
context "responds to added oauth methods (our oauth api on the user)" do
|
15
|
+
|
16
|
+
should "have 'tokens' method" do
|
17
|
+
assert @user.respond_to?(:tokens)
|
18
|
+
assert_equal [], @user.tokens
|
19
|
+
end
|
20
|
+
|
21
|
+
should "have 'active_token' method" do
|
22
|
+
assert @user.respond_to?(:active_token)
|
23
|
+
assert_equal nil, @user.active_token
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
context "with controller and session..." do
|
29
|
+
|
30
|
+
setup do
|
31
|
+
controller.params.merge!(:authentication_type => "user")
|
32
|
+
Authlogic::Session::Base.controller = controller
|
33
|
+
end
|
34
|
+
|
35
|
+
should "have a valid controller" do
|
36
|
+
assert @user.auth_controller
|
37
|
+
end
|
38
|
+
|
39
|
+
should "have auth_params" do
|
40
|
+
assert @user.auth_params?
|
41
|
+
end
|
42
|
+
|
43
|
+
should "have an empty 'auth_session'" do
|
44
|
+
assert @user.auth_session.empty?
|
45
|
+
assert_equal false, @user.auth_session?
|
46
|
+
end
|
47
|
+
|
48
|
+
context "save the user without any parameters" do
|
49
|
+
|
50
|
+
setup do
|
51
|
+
@save_success = @user.save
|
52
|
+
end
|
53
|
+
|
54
|
+
should "not be a valid save" do
|
55
|
+
assert_equal false, @save_success
|
56
|
+
end
|
57
|
+
|
58
|
+
should "not be using oauth" do
|
59
|
+
assert_equal false, @user.using_oauth?
|
60
|
+
end
|
61
|
+
|
62
|
+
should "not be using openid" do
|
63
|
+
assert_equal false, @user.using_openid?
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
context "with oauth parameters" do
|
69
|
+
|
70
|
+
setup do
|
71
|
+
@user.auth_controller.params.merge!(:oauth_provider => "twitter")
|
72
|
+
# mock token
|
73
|
+
@token = OAuth::RequestToken.new("twitter", "key", "secret")
|
74
|
+
@token.params = {
|
75
|
+
:oauth_callback_confirmed => "true",
|
76
|
+
:oauth_token_secret=>"secret",
|
77
|
+
:oauth_token=>"key"
|
78
|
+
}
|
79
|
+
@token.consumer = OAuth::Consumer.new("key", "secret",
|
80
|
+
:site=>"http://twitter.com",
|
81
|
+
:proxy=>nil,
|
82
|
+
:oauth_version=>"1.0",
|
83
|
+
:request_token_path=>"/oauth/request_token",
|
84
|
+
:authorize_path=>"/oauth/authorize",
|
85
|
+
:scheme=>:header,
|
86
|
+
:signature_method=>"HMAC-SHA1",
|
87
|
+
:authorize_url=>"http://twitter.com/oauth/authenticate",
|
88
|
+
:access_token_path=>"/oauth/access_token"
|
89
|
+
)
|
90
|
+
@session_vars = [
|
91
|
+
:authentication_type,
|
92
|
+
:auth_request_class,
|
93
|
+
:oauth_provider,
|
94
|
+
:auth_callback_method
|
95
|
+
]
|
96
|
+
end
|
97
|
+
|
98
|
+
should "have an 'oauth_provider'" do
|
99
|
+
assert @user.oauth_provider?
|
100
|
+
end
|
101
|
+
|
102
|
+
should "be an 'oauth_request'" do
|
103
|
+
assert @user.oauth_request?
|
104
|
+
end
|
105
|
+
|
106
|
+
should "not be an 'oauth_response'" do
|
107
|
+
assert_equal false, @user.oauth_response?
|
108
|
+
end
|
109
|
+
|
110
|
+
should "be using oauth" do
|
111
|
+
assert @user.using_oauth?
|
112
|
+
end
|
113
|
+
|
114
|
+
should "not be using openid" do
|
115
|
+
assert_equal false, @user.using_openid?
|
116
|
+
end
|
117
|
+
|
118
|
+
should "have the correct class (authentication_type == user)" do
|
119
|
+
assert @user.correct_request_class?
|
120
|
+
end
|
121
|
+
|
122
|
+
should "realize we are authenticating_with_oauth?" do
|
123
|
+
assert @user.authenticating_with_oauth?
|
124
|
+
end
|
125
|
+
|
126
|
+
context "and 'save_with_oauth', manually checking each step" do
|
127
|
+
|
128
|
+
setup do
|
129
|
+
# mock save
|
130
|
+
# this, and the whole redirect process happens
|
131
|
+
# but we'll just assume we saved the session data and got the redirect back
|
132
|
+
@user.save_oauth_session
|
133
|
+
@user.save(:skip_redirect => true, :keep_session => true) do
|
134
|
+
"I'm the block you want"
|
135
|
+
end
|
136
|
+
# copy to test controller
|
137
|
+
@user.auth_session.each do |key, value|
|
138
|
+
@user.auth_controller.session[key] = value
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
should "should have a full session" do
|
143
|
+
@session_vars.each {|key| assert @user.auth_session.has_key?(key)}
|
144
|
+
end
|
145
|
+
|
146
|
+
should "'cleanup_auth_session'" do
|
147
|
+
@user.cleanup_auth_session
|
148
|
+
@session_vars.each {|key| assert_equal false, @user.auth_session.has_key?(key)}
|
149
|
+
end
|
150
|
+
|
151
|
+
teardown do
|
152
|
+
@user.destroy
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
context "and 'save_with_oauth' completely" do
|
158
|
+
setup do
|
159
|
+
# mock save
|
160
|
+
# this, and the whole redirect process happens
|
161
|
+
# but we'll just assume we saved the session data and got the redirect back
|
162
|
+
@user.save_oauth_session
|
163
|
+
@user.save(:skip_redirect => true, :keep_session => false) do
|
164
|
+
"I'm the block you want"
|
165
|
+
end
|
166
|
+
# copy to test controller
|
167
|
+
@user.auth_controller.session = @user.auth_session
|
168
|
+
end
|
169
|
+
|
170
|
+
should "have a clear session" do
|
171
|
+
@session_vars.each do |key|
|
172
|
+
assert_equal false, @user.auth_session.has_key?(key)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
should "be a valid save" do
|
177
|
+
assert @user.valid?
|
178
|
+
end
|
179
|
+
|
180
|
+
# so login isn't saved
|
181
|
+
teardown do
|
182
|
+
User.all.collect(&:destroy)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
|
187
|
+
end
|
188
|
+
|
189
|
+
context "with openid parameters" do
|
190
|
+
setup do
|
191
|
+
@user.auth_controller.params.merge!(:openid_identifier => "viatropos.myopenid.com")
|
192
|
+
@session_vars = [
|
193
|
+
:authentication_type,
|
194
|
+
:auth_request_class,
|
195
|
+
:openid_identifier,
|
196
|
+
:auth_callback_method
|
197
|
+
]
|
198
|
+
end
|
199
|
+
|
200
|
+
should "have an 'openid_identifier'" do
|
201
|
+
assert_equal true, @user.openid_identifier?
|
202
|
+
end
|
203
|
+
|
204
|
+
should "be an 'openid_request'" do
|
205
|
+
assert @user.openid_request?
|
206
|
+
end
|
207
|
+
|
208
|
+
should "not be an 'openid_response'" do
|
209
|
+
assert_equal false, @user.openid_response?
|
210
|
+
end
|
211
|
+
|
212
|
+
should "be using openid" do
|
213
|
+
assert @user.using_openid?
|
214
|
+
end
|
215
|
+
|
216
|
+
should "not be using oauth" do
|
217
|
+
assert_equal false, @user.using_oauth?
|
218
|
+
end
|
219
|
+
|
220
|
+
should "have the correct class (authentication_type == user)" do
|
221
|
+
assert @user.correct_request_class?
|
222
|
+
end
|
223
|
+
|
224
|
+
should "realize we are authenticating_with_openid?" do
|
225
|
+
assert @user.authenticating_with_openid?
|
226
|
+
end
|
227
|
+
|
228
|
+
context "and 'save_with_openid', manually checking each step" do
|
229
|
+
|
230
|
+
setup do
|
231
|
+
# mock save
|
232
|
+
# this, and the whole redirect process happens
|
233
|
+
# but we'll just assume we saved the session data and got the redirect back
|
234
|
+
@user.save_openid_session
|
235
|
+
@user.save(:skip_redirect => true, :keep_session => true) do
|
236
|
+
"I'm the block you want"
|
237
|
+
end
|
238
|
+
# copy to test controller
|
239
|
+
@user.auth_session.each do |key, value|
|
240
|
+
@user.auth_controller.session[key] = value
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
teardown do
|
245
|
+
@user.destroy
|
246
|
+
end
|
247
|
+
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
end
|
255
|
+
end
|