devise_rpx_connectable 0.2.2 → 0.3.0
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.
- checksums.yaml +7 -0
- data/.gitignore +6 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +88 -0
- data/README.textile +3 -3
- data/Rakefile +15 -26
- data/devise_rpx_connectable.gemspec +27 -0
- data/lib/devise_rpx_connectable.rb +10 -9
- data/lib/devise_rpx_connectable/model.rb +16 -5
- data/lib/devise_rpx_connectable/strategy.rb +25 -20
- data/lib/devise_rpx_connectable/version.rb +1 -1
- data/lib/devise_rpx_connectable/view_helpers.rb +3 -6
- data/spec/devise_rpx_connectable_spec.rb +87 -0
- data/spec/spec_helper.rb +11 -0
- metadata +116 -79
- data/lib/devise_rpx_connectable/schema.rb +0 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 780088c7b880a015801030a4678ec6fb349b9319
|
4
|
+
data.tar.gz: 8bf1ad0df57ece9d1a3a02fb209455302deedeef
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0a12c6e522e07d8d5f3b6128e4beac09c422a23e4d81ce44d44504baa7dd4b662919d19e2d6a545e2eba58aadbf273dfd4262e2353a8b800d31430ee1e26da58
|
7
|
+
data.tar.gz: 6f3598cc95c1f74524606e9aa0c6b652f6d096572555638381eefc90ef668ea40bd49049963027ebe20390a5d35fe1df14fbf71b65376ffdb7871ce0b5ac67f0
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
devise_rpx_connectable (0.3.0)
|
5
|
+
devise (>= 2.1.2)
|
6
|
+
rpx_now (~> 0.7.0)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
actionpack (3.2.13)
|
12
|
+
activemodel (= 3.2.13)
|
13
|
+
activesupport (= 3.2.13)
|
14
|
+
builder (~> 3.0.0)
|
15
|
+
erubis (~> 2.7.0)
|
16
|
+
journey (~> 1.0.4)
|
17
|
+
rack (~> 1.4.5)
|
18
|
+
rack-cache (~> 1.2)
|
19
|
+
rack-test (~> 0.6.1)
|
20
|
+
sprockets (~> 2.2.1)
|
21
|
+
activemodel (3.2.13)
|
22
|
+
activesupport (= 3.2.13)
|
23
|
+
builder (~> 3.0.0)
|
24
|
+
activesupport (3.2.13)
|
25
|
+
i18n (= 0.6.1)
|
26
|
+
multi_json (~> 1.0)
|
27
|
+
bcrypt-ruby (3.0.1)
|
28
|
+
builder (3.0.4)
|
29
|
+
devise (2.2.4)
|
30
|
+
bcrypt-ruby (~> 3.0)
|
31
|
+
orm_adapter (~> 0.1)
|
32
|
+
railties (~> 3.1)
|
33
|
+
warden (~> 1.2.1)
|
34
|
+
diff-lcs (1.1.3)
|
35
|
+
erubis (2.7.0)
|
36
|
+
hike (1.2.3)
|
37
|
+
i18n (0.6.1)
|
38
|
+
journey (1.0.4)
|
39
|
+
json (1.8.0)
|
40
|
+
json_pure (1.8.0)
|
41
|
+
multi_json (1.7.7)
|
42
|
+
orm_adapter (0.4.0)
|
43
|
+
rack (1.4.5)
|
44
|
+
rack-cache (1.2)
|
45
|
+
rack (>= 0.4)
|
46
|
+
rack-ssl (1.3.3)
|
47
|
+
rack
|
48
|
+
rack-test (0.6.2)
|
49
|
+
rack (>= 1.0)
|
50
|
+
railties (3.2.13)
|
51
|
+
actionpack (= 3.2.13)
|
52
|
+
activesupport (= 3.2.13)
|
53
|
+
rack-ssl (~> 1.3.2)
|
54
|
+
rake (>= 0.8.7)
|
55
|
+
rdoc (~> 3.4)
|
56
|
+
thor (>= 0.14.6, < 2.0)
|
57
|
+
rake (0.9.2.2)
|
58
|
+
rdoc (3.12.2)
|
59
|
+
json (~> 1.4)
|
60
|
+
rpx_now (0.7.0)
|
61
|
+
json_pure
|
62
|
+
rspec (2.8.0)
|
63
|
+
rspec-core (~> 2.8.0)
|
64
|
+
rspec-expectations (~> 2.8.0)
|
65
|
+
rspec-mocks (~> 2.8.0)
|
66
|
+
rspec-core (2.8.0)
|
67
|
+
rspec-expectations (2.8.0)
|
68
|
+
diff-lcs (~> 1.1.2)
|
69
|
+
rspec-mocks (2.8.0)
|
70
|
+
sprockets (2.2.2)
|
71
|
+
hike (~> 1.2)
|
72
|
+
multi_json (~> 1.0)
|
73
|
+
rack (~> 1.0)
|
74
|
+
tilt (~> 1.1, != 1.3.0)
|
75
|
+
thor (0.18.1)
|
76
|
+
tilt (1.4.1)
|
77
|
+
warden (1.2.1)
|
78
|
+
rack (>= 1.0)
|
79
|
+
|
80
|
+
PLATFORMS
|
81
|
+
ruby
|
82
|
+
|
83
|
+
DEPENDENCIES
|
84
|
+
bundler (> 1.1.0)
|
85
|
+
devise_rpx_connectable!
|
86
|
+
rake (~> 0.9.2.2)
|
87
|
+
rdoc (~> 3.11)
|
88
|
+
rspec (~> 2.8.0)
|
data/README.textile
CHANGED
@@ -26,13 +26,13 @@ Please note that this is an unofficial library. It is neither affiliated with, n
|
|
26
26
|
|
27
27
|
h2. Dependencies
|
28
28
|
|
29
|
-
Devise RPX Connectable should be compatible with the latest Rails and Devise versions (currently Rails 3.0 and Devise
|
29
|
+
Devise RPX Connectable should be compatible with the latest Rails and Devise versions (currently Rails 3.0+ and Devise 2.1.2+).
|
30
30
|
|
31
31
|
IMPORTANT : This gem is now ONLY COMPATIBLE with Rails 3, if you want to use it with Rails 2, please use version 0.1.3.
|
32
32
|
|
33
33
|
h2. Installation
|
34
34
|
|
35
|
-
As usual... Add @gem "devise_rpx_connectable"@ in your Gemfile
|
35
|
+
As usual... Add @gem "devise_rpx_connectable"@ in your Gemfile...
|
36
36
|
|
37
37
|
h2. Setup
|
38
38
|
|
@@ -127,7 +127,7 @@ Read the RPXNow gem documentation for more information about this...
|
|
127
127
|
def before_rpx_success(rpx_user)
|
128
128
|
# Do something with rpx_user...
|
129
129
|
end
|
130
|
-
|
130
|
+
|
131
131
|
def before_rpx_auto_create(rpx_user)
|
132
132
|
# Do something with rpx_user
|
133
133
|
end
|
data/Rakefile
CHANGED
@@ -1,30 +1,19 @@
|
|
1
|
-
|
2
|
-
require '
|
3
|
-
require '
|
4
|
-
require 'rake/rdoctask'
|
5
|
-
require File.join(File.dirname(__FILE__), 'lib', 'devise_rpx_connectable', 'version')
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require 'rspec'
|
3
|
+
require 'rspec/core/rake_task'
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
Jeweler::Tasks.new do |spec|
|
13
|
-
spec.name = NAME
|
14
|
-
spec.version = ::Devise::RpxConnectable::VERSION
|
15
|
-
spec.summary = %{Devise << RPX}
|
16
|
-
spec.description = spec.summary
|
17
|
-
spec.homepage = "http://github.com/slainer68/#{spec.name}"
|
18
|
-
spec.authors = ["Nicolas Blanco"]
|
19
|
-
spec.email = "slainer68@gmail.com"
|
5
|
+
desc "Run all test examples"
|
6
|
+
RSpec::Core::RakeTask.new do |t|
|
7
|
+
t.rspec_opts = ["-c", "-f progress"]
|
8
|
+
t.pattern = 'spec/**/*_spec.rb'
|
9
|
+
end
|
20
10
|
|
21
|
-
|
11
|
+
task :default => :spec
|
22
12
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
"Install it with: sudo gem install jeweler -s http://gemcutter.org"
|
13
|
+
require 'rdoc/task'
|
14
|
+
Rake::RDocTask.new do |rdoc|
|
15
|
+
rdoc.rdoc_dir = 'rdoc'
|
16
|
+
rdoc.title = "devise_rpx_connectable"
|
17
|
+
rdoc.rdoc_files.include('README*')
|
18
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
30
19
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'devise_rpx_connectable/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "devise_rpx_connectable"
|
8
|
+
gem.version = Devise::RpxConnectable::VERSION
|
9
|
+
gem.authors = ["Nicolas Blanco"]
|
10
|
+
gem.email = ["slainer68@gmail.com"]
|
11
|
+
gem.description = %q{Authenticate your users with RPX in your Rails application using Devise}
|
12
|
+
gem.summary = %q{Devise << RPX}
|
13
|
+
gem.homepage = "https://github.com/slainer68/devise_rpx_connectable"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
gem.add_runtime_dependency(%q<devise>, [">= 2.1.2"])
|
21
|
+
gem.add_runtime_dependency(%q<rpx_now>, ["~> 0.7.0"])
|
22
|
+
|
23
|
+
gem.add_development_dependency(%q<bundler>, ["> 1.1.0"])
|
24
|
+
gem.add_development_dependency(%q<rake>, ["~> 0.9.2.2"])
|
25
|
+
gem.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
26
|
+
gem.add_development_dependency(%q<rdoc>, ["~> 3.11"])
|
27
|
+
end
|
@@ -10,29 +10,30 @@ require 'devise_rpx_connectable/model'
|
|
10
10
|
require 'devise_rpx_connectable/strategy'
|
11
11
|
Warden::Strategies.add(:rpx_connectable, Devise::RpxConnectable::Strategies::RpxConnectable)
|
12
12
|
|
13
|
-
require 'devise_rpx_connectable/schema'
|
14
13
|
require 'devise_rpx_connectable/view_helpers'
|
15
14
|
|
16
15
|
module Devise
|
17
16
|
mattr_accessor :rpx_identifier_field
|
18
17
|
@@rpx_identifier_field = :rpx_identifier
|
19
|
-
|
18
|
+
|
20
19
|
mattr_accessor :rpx_auto_create_account
|
21
20
|
@@rpx_auto_create_account = true
|
22
|
-
|
21
|
+
|
23
22
|
mattr_accessor :rpx_extended_user_data
|
24
23
|
@@rpx_extended_user_data = true
|
25
|
-
|
26
|
-
mattr_accessor :rpx_additional_user_data
|
24
|
+
|
25
|
+
mattr_accessor :rpx_additional_user_data
|
27
26
|
@@rpx_additional_user_data = []
|
28
|
-
|
27
|
+
|
29
28
|
mattr_accessor :rpx_application_name
|
30
29
|
@@rpx_application_name = nil
|
31
30
|
end
|
32
31
|
|
33
32
|
I18n.load_path.unshift File.join(File.dirname(__FILE__), *%w[devise_rpx_connectable locales en.yml])
|
34
33
|
|
35
|
-
Devise.add_module(:rpx_connectable,
|
36
|
-
:strategy => true,
|
34
|
+
Devise.add_module(:rpx_connectable, {
|
37
35
|
:controller => :sessions,
|
38
|
-
:model => 'devise_rpx_connectable/model'
|
36
|
+
:model => 'devise_rpx_connectable/model',
|
37
|
+
:route => { :session => [nil, :new, :destroy] },
|
38
|
+
:strategy => true
|
39
|
+
})
|
@@ -41,6 +41,13 @@ module Devise #:nodoc:
|
|
41
41
|
# Only populate +email+ field if it's available (e.g. if +authenticable+ module is used).
|
42
42
|
self.email = attributes[:email] || '' if self.respond_to?(:email)
|
43
43
|
|
44
|
+
# Populate optional request fields
|
45
|
+
if attributes[:request_keys]
|
46
|
+
attributes[:request_keys].each do |k, v|
|
47
|
+
self.send(:"#{k}=", v)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
44
51
|
# Lazy hack: These database fields are required if +authenticable+/+confirmable+
|
45
52
|
# module(s) is used. Could be avoided with :null => true for authenticatable
|
46
53
|
# migration, but keeping this to avoid unnecessary problems.
|
@@ -79,7 +86,7 @@ module Devise #:nodoc:
|
|
79
86
|
def on_before_rpx_success(rpx_user)
|
80
87
|
self.send(:before_rpx_success, rpx_user) if self.respond_to?(:before_rpx_success)
|
81
88
|
end
|
82
|
-
|
89
|
+
|
83
90
|
# Hook that gets called before the auto creation of the user.
|
84
91
|
# Therefore, this hook is only called when rpx_auto_create_account config option is enabled.
|
85
92
|
# Useful for fetching additional user info (etc.) from RPX.
|
@@ -122,7 +129,8 @@ module Devise #:nodoc:
|
|
122
129
|
:rpx_identifier_field,
|
123
130
|
:rpx_auto_create_account,
|
124
131
|
:rpx_extended_user_data,
|
125
|
-
:rpx_additional_user_data
|
132
|
+
:rpx_additional_user_data,
|
133
|
+
:request_keys
|
126
134
|
)
|
127
135
|
|
128
136
|
# Alias don't work for some reason, so...a more Ruby-ish alias
|
@@ -136,7 +144,7 @@ module Devise #:nodoc:
|
|
136
144
|
#
|
137
145
|
def authenticate_with_rpx(attributes = {})
|
138
146
|
if attributes[:identifier].present?
|
139
|
-
self.find_for_rpx(attributes[:identifier])
|
147
|
+
self.find_for_rpx(attributes[:identifier], attributes[:request_keys])
|
140
148
|
end
|
141
149
|
end
|
142
150
|
|
@@ -146,8 +154,11 @@ module Devise #:nodoc:
|
|
146
154
|
# Overwrite to add customized conditions, create a join, or maybe use a
|
147
155
|
# namedscope to filter records while authenticating.
|
148
156
|
#
|
149
|
-
def find_for_rpx(identifier)
|
150
|
-
|
157
|
+
def find_for_rpx(identifier, request_keys)
|
158
|
+
conditions = { rpx_identifier_field => identifier }
|
159
|
+
conditions.merge! request_keys
|
160
|
+
|
161
|
+
self.where(conditions).first
|
151
162
|
end
|
152
163
|
|
153
164
|
# Contains the logic used in authentication. Overwritten by other devise modules.
|
@@ -18,29 +18,34 @@ module Devise #:nodoc:
|
|
18
18
|
def authenticate!
|
19
19
|
klass = mapping.to
|
20
20
|
raise StandardError, "RPXNow API key is not defined, please see the documentation of RPXNow gem to setup it." unless RPXNow.api_key.present?
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
user.on_before_rpx_auto_create(rpx_user)
|
36
|
-
|
37
|
-
user.save(:validate => false)
|
21
|
+
|
22
|
+
request_keys = klass.request_keys.inject({}) do |res, k|
|
23
|
+
res[k] = params[k]
|
24
|
+
res
|
25
|
+
end
|
26
|
+
|
27
|
+
rpx_user = RPXNow.user_data(params[:token], {
|
28
|
+
:additional => klass.rpx_additional_user_data,
|
29
|
+
:extended => klass.rpx_extended_user_data
|
30
|
+
})
|
31
|
+
|
32
|
+
fail!(:rpx_invalid) and return unless rpx_user
|
33
|
+
|
34
|
+
if user = klass.authenticate_with_rpx(:identifier => rpx_user["identifier"], :request_keys => request_keys )
|
38
35
|
user.on_before_rpx_success(rpx_user)
|
39
36
|
success!(user)
|
40
|
-
|
41
|
-
rescue
|
42
|
-
fail!(:rpx_invalid)
|
37
|
+
return
|
43
38
|
end
|
39
|
+
|
40
|
+
fail!(:rpx_invalid) and return unless klass.rpx_auto_create_account?
|
41
|
+
|
42
|
+
user = klass.new
|
43
|
+
user.store_rpx_credentials!(rpx_user.merge(:request_keys => request_keys))
|
44
|
+
user.on_before_rpx_auto_create(rpx_user)
|
45
|
+
|
46
|
+
user.save(:validate => false)
|
47
|
+
user.on_before_rpx_success(rpx_user)
|
48
|
+
success!(user)
|
44
49
|
end
|
45
50
|
|
46
51
|
protected
|
@@ -19,8 +19,7 @@ module Devise #:nodoc:
|
|
19
19
|
def link_to_rpx(link_text, link_url, options={})
|
20
20
|
options = { :unobtrusive => true }.merge(options)
|
21
21
|
token_url = build_token_url(link_url)
|
22
|
-
|
23
|
-
out.respond_to?(:html_safe) ? out.html_safe : out
|
22
|
+
RPXNow.popup_code(link_text, rpx_application_name_from_options(options), token_url, options).html_safe
|
24
23
|
end
|
25
24
|
|
26
25
|
# Embeds the RPX connection iframe in your page.
|
@@ -34,8 +33,7 @@ module Devise #:nodoc:
|
|
34
33
|
#
|
35
34
|
def embed_rpx(link_url, options={})
|
36
35
|
token_url = build_token_url(link_url)
|
37
|
-
|
38
|
-
out.respond_to?(:html_safe) ? out.html_safe : out
|
36
|
+
RPXNow.embed_code(rpx_application_name_from_options(options), token_url, options).html_safe
|
39
37
|
end
|
40
38
|
|
41
39
|
# Returns the necessary JS code for the RPX popup.
|
@@ -49,8 +47,7 @@ module Devise #:nodoc:
|
|
49
47
|
#
|
50
48
|
def javascript_include_rpx(link_url, options={})
|
51
49
|
token_url = build_token_url(link_url)
|
52
|
-
|
53
|
-
out.respond_to?(:html_safe) ? out.html_safe : out
|
50
|
+
RPXNow.popup_source(rpx_application_name_from_options(options), token_url, options).html_safe
|
54
51
|
end
|
55
52
|
|
56
53
|
protected
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "active_support/all"
|
3
|
+
|
4
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'devise_rpx_connectable', 'strategy')
|
5
|
+
|
6
|
+
class User
|
7
|
+
def self.rpx_extended_user_data; true; end
|
8
|
+
def self.rpx_additional_user_data; true; end
|
9
|
+
def self.request_keys
|
10
|
+
@request_keys || {}
|
11
|
+
end
|
12
|
+
def self.request_keys=(value)
|
13
|
+
@request_keys = value
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class RPXNow
|
18
|
+
@@api_key = "abcdefgh"
|
19
|
+
cattr_accessor :api_key
|
20
|
+
end
|
21
|
+
|
22
|
+
RPX_USER_DATA = { "identifier" => "superpipo_user", :request_keys => {}}
|
23
|
+
PARAMS = { :token => "rpx_token" }
|
24
|
+
|
25
|
+
describe 'DeviseRpxConnectable' do
|
26
|
+
before(:each) do
|
27
|
+
@strategy = Devise::RpxConnectable::Strategies::RpxConnectable.new
|
28
|
+
@mapping = mock(:mapping)
|
29
|
+
@mapping.should_receive(:to).and_return(User)
|
30
|
+
@strategy.should_receive(:mapping).and_return(@mapping)
|
31
|
+
@strategy.should_receive(:params).and_return(PARAMS)
|
32
|
+
|
33
|
+
@user = User.new
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should fail if RPX returns no valid user" do
|
37
|
+
RPXNow.should_receive(:user_data).and_return(nil)
|
38
|
+
|
39
|
+
@strategy.should_receive(:"fail!").with(:rpx_invalid).and_return(true)
|
40
|
+
|
41
|
+
lambda { @strategy.authenticate! }.should_not raise_error
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'when the RPX user is valid' do
|
45
|
+
before(:each) do
|
46
|
+
RPXNow.should_receive(:user_data).and_return(RPX_USER_DATA)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should authenticate if a user exists in database" do
|
50
|
+
User.should_receive(:authenticate_with_rpx).with({ :identifier => RPX_USER_DATA["identifier"], :request_keys => {} }).and_return(@user)
|
51
|
+
|
52
|
+
@user.should_receive(:on_before_rpx_success).with(RPX_USER_DATA).and_return(true)
|
53
|
+
|
54
|
+
@strategy.should_receive(:"success!").with(@user).and_return(true)
|
55
|
+
|
56
|
+
lambda { @strategy.authenticate! }.should_not raise_error
|
57
|
+
end
|
58
|
+
|
59
|
+
describe 'when no user exists in database' do
|
60
|
+
before(:each) do
|
61
|
+
User.should_receive(:authenticate_with_rpx).with({ :identifier => RPX_USER_DATA["identifier"], :request_keys => {} }).and_return(nil)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should fail unless rpx_auto_create_account" do
|
65
|
+
User.should_receive(:"rpx_auto_create_account?").and_return(false)
|
66
|
+
@strategy.should_receive(:"fail!").with(:rpx_invalid).and_return(true)
|
67
|
+
|
68
|
+
lambda { @strategy.authenticate! }.should_not raise_error
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should create a new user and success if rpx_auto_create_account" do
|
72
|
+
User.should_receive(:"rpx_auto_create_account?").and_return(true)
|
73
|
+
|
74
|
+
User.should_receive(:new).and_return(@user)
|
75
|
+
@user.should_receive(:"store_rpx_credentials!").with(RPX_USER_DATA).and_return(true)
|
76
|
+
@user.should_receive(:on_before_rpx_auto_create).with(RPX_USER_DATA).and_return(true)
|
77
|
+
@user.should_receive(:save).with({ :validate => false }).and_return(true)
|
78
|
+
@user.should_receive(:on_before_rpx_success).with(RPX_USER_DATA).and_return(true)
|
79
|
+
|
80
|
+
@strategy.should_receive(:"success!").with(@user).and_return(true)
|
81
|
+
|
82
|
+
lambda { @strategy.authenticate! }.should_not raise_error
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,108 +1,145 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_rpx_connectable
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease: false
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 2
|
10
|
-
version: 0.2.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Nicolas Blanco
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2013-06-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
22
14
|
name: devise
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 23
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 1
|
33
|
-
- 2
|
34
|
-
version: 1.1.2
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.1.2
|
35
20
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rpx_now
|
39
21
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.1.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rpx_now
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.7.0
|
51
34
|
type: :runtime
|
52
|
-
|
53
|
-
|
54
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.7.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>'
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.1.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>'
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.1.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.2.2
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.9.2.2
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.8.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.8.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rdoc
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.11'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.11'
|
97
|
+
description: Authenticate your users with RPX in your Rails application using Devise
|
98
|
+
email:
|
99
|
+
- slainer68@gmail.com
|
55
100
|
executables: []
|
56
|
-
|
57
101
|
extensions: []
|
58
|
-
|
59
|
-
|
60
|
-
-
|
61
|
-
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- .gitignore
|
105
|
+
- Gemfile
|
106
|
+
- Gemfile.lock
|
62
107
|
- MIT-LICENSE
|
63
108
|
- README.textile
|
64
109
|
- Rakefile
|
110
|
+
- devise_rpx_connectable.gemspec
|
65
111
|
- lib/devise_rpx_connectable.rb
|
66
112
|
- lib/devise_rpx_connectable/locales/en.yml
|
67
113
|
- lib/devise_rpx_connectable/model.rb
|
68
|
-
- lib/devise_rpx_connectable/schema.rb
|
69
114
|
- lib/devise_rpx_connectable/strategy.rb
|
70
115
|
- lib/devise_rpx_connectable/version.rb
|
71
116
|
- lib/devise_rpx_connectable/view_helpers.rb
|
72
117
|
- rails/init.rb
|
73
|
-
|
74
|
-
|
118
|
+
- spec/devise_rpx_connectable_spec.rb
|
119
|
+
- spec/spec_helper.rb
|
120
|
+
homepage: https://github.com/slainer68/devise_rpx_connectable
|
75
121
|
licenses: []
|
76
|
-
|
122
|
+
metadata: {}
|
77
123
|
post_install_message:
|
78
|
-
rdoc_options:
|
79
|
-
|
80
|
-
require_paths:
|
124
|
+
rdoc_options: []
|
125
|
+
require_paths:
|
81
126
|
- lib
|
82
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
none: false
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
hash: 3
|
97
|
-
segments:
|
98
|
-
- 0
|
99
|
-
version: "0"
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - '>='
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
100
137
|
requirements: []
|
101
|
-
|
102
138
|
rubyforge_project:
|
103
|
-
rubygems_version:
|
139
|
+
rubygems_version: 2.0.2
|
104
140
|
signing_key:
|
105
|
-
specification_version:
|
141
|
+
specification_version: 4
|
106
142
|
summary: Devise << RPX
|
107
|
-
test_files:
|
108
|
-
|
143
|
+
test_files:
|
144
|
+
- spec/devise_rpx_connectable_spec.rb
|
145
|
+
- spec/spec_helper.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'devise/schema'
|
3
|
-
|
4
|
-
module Devise #:nodoc:
|
5
|
-
module RpxConnectable #:nodoc:
|
6
|
-
|
7
|
-
module Schema
|
8
|
-
|
9
|
-
# Database migration schema for RPX.
|
10
|
-
#
|
11
|
-
def rpx_connectable
|
12
|
-
apply_devise_schema ::Devise.rpx_identifier_field, String, :limit => 255
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
Devise::Schema.module_eval do
|
20
|
-
include ::Devise::RpxConnectable::Schema
|
21
|
-
end
|