rpx_now 0.6.23 → 0.6.24
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/Gemfile +7 -5
- data/Gemfile.lock +28 -0
- data/Rakefile +7 -6
- data/Readme.md +31 -24
- data/VERSION +1 -1
- data/lib/rpx_now.rb +4 -1
- data/lib/rpx_now/api.rb +3 -4
- data/rpx_now.gemspec +32 -34
- data/spec/rpx_now_spec.rb +59 -46
- data/spec/spec_helper.rb +5 -7
- metadata +21 -14
- data/.gitignore +0 -6
data/Gemfile
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
# not used, just for hardcore-bundlers
|
2
|
-
source :
|
2
|
+
source :rubygems
|
3
3
|
|
4
|
-
|
5
|
-
gem "
|
6
|
-
gem "
|
4
|
+
group :dev do
|
5
|
+
gem "rake"
|
6
|
+
gem "json"
|
7
|
+
gem "jeweler"
|
8
|
+
end
|
7
9
|
|
8
10
|
group :test do
|
9
|
-
gem "rspec"
|
11
|
+
gem "rspec", "~>2"
|
10
12
|
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
diff-lcs (1.1.2)
|
5
|
+
git (1.2.5)
|
6
|
+
jeweler (1.5.2)
|
7
|
+
bundler (~> 1.0.0)
|
8
|
+
git (>= 1.2.5)
|
9
|
+
rake
|
10
|
+
json (1.4.6)
|
11
|
+
rake (0.8.7)
|
12
|
+
rspec (2.5.0)
|
13
|
+
rspec-core (~> 2.5.0)
|
14
|
+
rspec-expectations (~> 2.5.0)
|
15
|
+
rspec-mocks (~> 2.5.0)
|
16
|
+
rspec-core (2.5.1)
|
17
|
+
rspec-expectations (2.5.0)
|
18
|
+
diff-lcs (~> 1.1.2)
|
19
|
+
rspec-mocks (2.5.0)
|
20
|
+
|
21
|
+
PLATFORMS
|
22
|
+
ruby
|
23
|
+
|
24
|
+
DEPENDENCIES
|
25
|
+
jeweler
|
26
|
+
json
|
27
|
+
rake
|
28
|
+
rspec (~> 2)
|
data/Rakefile
CHANGED
@@ -1,21 +1,22 @@
|
|
1
1
|
task :default => :spec
|
2
|
-
require
|
3
|
-
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
4
|
+
t.rspec_opts = '--backtrace --color'
|
5
|
+
end
|
4
6
|
|
5
7
|
begin
|
6
8
|
require 'jeweler'
|
7
|
-
project_name = 'rpx_now'
|
8
9
|
|
9
10
|
Jeweler::Tasks.new do |gem|
|
10
|
-
gem.name =
|
11
|
+
gem.name = 'rpx_now'
|
11
12
|
gem.summary = "Helper to simplify RPX Now user login/creation"
|
12
13
|
gem.email = "grosser.michael@gmail.com"
|
13
|
-
gem.homepage = "http://github.com/grosser/#{
|
14
|
+
gem.homepage = "http://github.com/grosser/#{gem.name}"
|
14
15
|
gem.authors = ["Michael Grosser"]
|
15
16
|
gem.add_dependency ['json_pure']
|
16
17
|
end
|
17
18
|
|
18
19
|
Jeweler::GemcutterTasks.new
|
19
20
|
rescue LoadError
|
20
|
-
puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install
|
21
|
+
puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
|
21
22
|
end
|
data/Readme.md
CHANGED
@@ -26,23 +26,6 @@ Examples
|
|
26
26
|
|
27
27
|
[Example application](http://github.com/grosser/rpx_now_example), go play around!
|
28
28
|
|
29
|
-
View
|
30
|
-
----
|
31
|
-
<%=RPXNow.embed_code('My-Rpx-Domain', url_for(:controller=>:session, :action=>:rpx_token, :only_path => false))%>
|
32
|
-
OR
|
33
|
-
<%=RPXNow.popup_code('Login here...', 'My-Rpx-Domain', url_for(:controller=>:session, :action=>:rpx_token, :only_path => false), options)%>
|
34
|
-
|
35
|
-
###Options
|
36
|
-
`:language=>'en'` rpx tries to detect the users language, but you may overwrite it [possible languages](https://rpxnow.com/docs#sign-in_localization)
|
37
|
-
`:default_provider=>'google'` [possible default providers](https://rpxnow.com/docs#sign-in_default_provider)
|
38
|
-
`:flags=>'show_provider_list'` [possible flags](https://rpxnow.com/docs#sign-in_interface)
|
39
|
-
`:html => {:id => 'xxx'}` is added to the popup link (popup_code only)
|
40
|
-
|
41
|
-
###Unobtrusive / JS-last
|
42
|
-
`popup_code` can also be called with `:unobtrusive=>true` ( --> just link without javascript include).
|
43
|
-
To still get the normal popup add `RPXNow.popup_source('My-Rpx-Domain', url_for(:controller=>:session, :action=>:rpx_token, :only_path => false), [options])`.
|
44
|
-
Options like :language / :flags should be given for both.
|
45
|
-
|
46
29
|
environment.rb
|
47
30
|
--------------
|
48
31
|
Rails::Initializer.run do |config|
|
@@ -56,6 +39,8 @@ environment.rb
|
|
56
39
|
|
57
40
|
Controller
|
58
41
|
----------
|
42
|
+
This example uses the SessionsController, if you dont have one built it and add routes(rpx_token is a post request)
|
43
|
+
|
59
44
|
skip_before_filter :verify_authenticity_token, :only => [:rpx_token] # RPX does not pass Rails form tokens...
|
60
45
|
|
61
46
|
# user_data
|
@@ -80,21 +65,42 @@ Controller
|
|
80
65
|
# with extended info like friends, accessCredentials, portable contacts. (most Providers do not supply them)
|
81
66
|
RPXNow.user_data(params[:token], :extended => true)[:extended]['friends'][...have a look at the RPX API DOCS...]
|
82
67
|
|
68
|
+
View
|
69
|
+
----
|
70
|
+
|
71
|
+
<%=RPXNow.embed_code('My-Rpx-Domain', url_for(:controller=>:session, :action=>:rpx_token, :only_path => false))%>
|
72
|
+
OR
|
73
|
+
<%=RPXNow.popup_code('Login here...', 'My-Rpx-Domain', url_for(:controller=>:session, :action=>:rpx_token, :only_path => false), options)%>
|
74
|
+
|
75
|
+
###Options
|
76
|
+
`:language=>'en'` rpx tries to detect the users language, but you may overwrite it [possible languages](https://rpxnow.com/docs#sign-in_localization)
|
77
|
+
`:default_provider=>'google'` [possible default providers](https://rpxnow.com/docs#sign-in_default_provider)
|
78
|
+
`:flags=>'show_provider_list'` [possible flags](https://rpxnow.com/docs#sign-in_interface)
|
79
|
+
`:html => {:id => 'xxx'}` is added to the popup link (popup_code only)
|
80
|
+
|
81
|
+
###Unobtrusive / JS-last
|
82
|
+
`popup_code` can also be called with `:unobtrusive=>true` ( --> just link without javascript include).
|
83
|
+
To still get the normal popup add `RPXNow.popup_source('My-Rpx-Domain', url_for(:controller=>:session, :action=>:rpx_token, :only_path => false), [options])`.
|
84
|
+
Options like :language / :flags should be given for both.
|
85
|
+
|
83
86
|
Advanced
|
84
87
|
--------
|
85
88
|
### Versions
|
86
89
|
RPXNow.api_version = 2
|
87
90
|
|
91
|
+
### Custom domain (PRX Plus/Pro)
|
92
|
+
RPXNow.domain = 'other-domain.com'
|
93
|
+
|
88
94
|
### Mappings (PRX Plus/Pro)
|
89
|
-
You can map your primary keys (e.g. user.id) to identifiers, so that
|
95
|
+
You can map your primary keys (e.g. user.id) to identifiers, so that<br/>
|
90
96
|
users can login to the same account with multiple identifiers.
|
91
97
|
RPXNow.map(identifier, primary_key) #add a mapping
|
92
98
|
RPXNow.unmap(identifier, primary_key) #remove a mapping
|
93
99
|
RPXNow.mappings(primary_key) # [identifier1,identifier2,...]
|
94
100
|
RPXNow.all_mappings # [["1",['google.com/dsdas','yahoo.com/asdas']], ["2",[...]], ... ]
|
95
101
|
|
96
|
-
After a primary key is mapped to an identifier, when a user logs in with this identifier,
|
97
|
-
`RPXNow.user_data` will contain his `primaryKey` as `:id`.
|
102
|
+
After a primary key is mapped to an identifier, when a user logs in with this identifier,
|
103
|
+
`RPXNow.user_data` will contain his `primaryKey` as `:id`.
|
98
104
|
A identifyer can only belong to one user (in doubt the last one it was mapped to)
|
99
105
|
|
100
106
|
### User integration (e.g. ActiveRecord)
|
@@ -124,7 +130,7 @@ Post a users activity, on their e.g. Facebook profile, complete with images, tit
|
|
124
130
|
}
|
125
131
|
|
126
132
|
### Offline user data access (RPX Plus/Pro)
|
127
|
-
Same response as auth_info but can be called with a identifier at any time
|
133
|
+
Same response as auth_info but can be called with a identifier at any time.<br/>
|
128
134
|
Offline Profile Access must be enabled.
|
129
135
|
RPXNow.get_user_data(identifier, :extended => true)
|
130
136
|
|
@@ -138,7 +144,7 @@ Author
|
|
138
144
|
__[rpx_now_gem mailing list](http://groups.google.com/group/rpx_now_gem)__
|
139
145
|
|
140
146
|
|
141
|
-
###Contributors
|
147
|
+
### [Contributors](http://github.com/grosser/rpx_now/contributors)
|
142
148
|
- [Amunds](http://github.com/Amunds)
|
143
149
|
- [Bob Groeneveld](http://metathoughtfacility.blogspot.com)
|
144
150
|
- [DBA](http://github.com/DBA)
|
@@ -153,7 +159,8 @@ __[rpx_now_gem mailing list](http://groups.google.com/group/rpx_now_gem)__
|
|
153
159
|
- [Ladislav Martincik](http://martincik.com)
|
154
160
|
- [Ben Aldred](http://github.com/benaldred)
|
155
161
|
- [Casper Fabricius](http://casperfabricius.com)
|
162
|
+
- [Avi Flombaum](http://www.aviflombaum.com)
|
156
163
|
|
157
|
-
[Michael Grosser](http://
|
158
|
-
|
164
|
+
[Michael Grosser](http://grosser.it)<br/>
|
165
|
+
michael@grosser.it<br/>
|
159
166
|
Hereby placed under public domain, do what you want, just do not hold me accountable...
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.24
|
data/lib/rpx_now.rb
CHANGED
@@ -7,8 +7,11 @@ module RPXNow
|
|
7
7
|
|
8
8
|
attr_accessor :api_key
|
9
9
|
attr_accessor :api_version
|
10
|
+
attr_accessor :domain
|
11
|
+
|
10
12
|
self.api_version = 2
|
11
|
-
|
13
|
+
self.domain = 'rpxnow.com'
|
14
|
+
|
12
15
|
VERSION = File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip
|
13
16
|
|
14
17
|
# retrieve the users data
|
data/lib/rpx_now/api.rb
CHANGED
@@ -8,7 +8,6 @@ module RPXNow
|
|
8
8
|
# - parse response
|
9
9
|
# - handle server errors
|
10
10
|
class Api
|
11
|
-
HOST = 'rpxnow.com'
|
12
11
|
SSL_CERT = File.join(File.dirname(__FILE__), '..', '..', 'certs', 'ssl_cert.pem')
|
13
12
|
|
14
13
|
def self.call(method, data)
|
@@ -23,9 +22,9 @@ module RPXNow
|
|
23
22
|
|
24
23
|
def self.host(subdomain=nil)
|
25
24
|
if subdomain
|
26
|
-
"https://#{subdomain}.#{
|
25
|
+
"https://#{subdomain}.#{RPXNow.domain}"
|
27
26
|
else
|
28
|
-
"https://#{
|
27
|
+
"https://#{RPXNow.domain}"
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
@@ -49,7 +48,7 @@ module RPXNow
|
|
49
48
|
end
|
50
49
|
|
51
50
|
def self.client
|
52
|
-
client = Net::HTTP.new(
|
51
|
+
client = Net::HTTP.new(RPXNow.domain, 443)
|
53
52
|
client.use_ssl = true
|
54
53
|
client.ca_file = SSL_CERT
|
55
54
|
client.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
data/rpx_now.gemspec
CHANGED
@@ -1,59 +1,57 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rpx_now}
|
8
|
-
s.version = "0.6.
|
8
|
+
s.version = "0.6.24"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Michael Grosser"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2011-02-21}
|
13
13
|
s.email = %q{grosser.michael@gmail.com}
|
14
14
|
s.files = [
|
15
|
-
"
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
15
|
+
"CHANGELOG",
|
16
|
+
"Gemfile",
|
17
|
+
"Gemfile.lock",
|
18
|
+
"MIGRATION",
|
19
|
+
"Rakefile",
|
20
|
+
"Readme.md",
|
21
|
+
"VERSION",
|
22
|
+
"certs/ssl_cert.pem",
|
23
|
+
"init.rb",
|
24
|
+
"lib/rpx_now.rb",
|
25
|
+
"lib/rpx_now/api.rb",
|
26
|
+
"lib/rpx_now/contacts_collection.rb",
|
27
|
+
"lib/rpx_now/user_integration.rb",
|
28
|
+
"lib/rpx_now/user_proxy.rb",
|
29
|
+
"rpx_now.gemspec",
|
30
|
+
"spec/fixtures/get_contacts_response.json",
|
31
|
+
"spec/integration/mapping_spec.rb",
|
32
|
+
"spec/rpx_now/api_spec.rb",
|
33
|
+
"spec/rpx_now/contacts_collection_spec.rb",
|
34
|
+
"spec/rpx_now/user_proxy_spec.rb",
|
35
|
+
"spec/rpx_now_spec.rb",
|
36
|
+
"spec/spec_helper.rb"
|
37
37
|
]
|
38
38
|
s.homepage = %q{http://github.com/grosser/rpx_now}
|
39
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
40
39
|
s.require_paths = ["lib"]
|
41
|
-
s.rubygems_version = %q{1.
|
40
|
+
s.rubygems_version = %q{1.4.2}
|
42
41
|
s.summary = %q{Helper to simplify RPX Now user login/creation}
|
43
42
|
s.test_files = [
|
43
|
+
"spec/integration/mapping_spec.rb",
|
44
|
+
"spec/rpx_now/api_spec.rb",
|
44
45
|
"spec/rpx_now/contacts_collection_spec.rb",
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
"spec/spec_helper.rb",
|
49
|
-
"spec/rpx_now_spec.rb"
|
46
|
+
"spec/rpx_now/user_proxy_spec.rb",
|
47
|
+
"spec/rpx_now_spec.rb",
|
48
|
+
"spec/spec_helper.rb"
|
50
49
|
]
|
51
50
|
|
52
51
|
if s.respond_to? :specification_version then
|
53
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
54
52
|
s.specification_version = 3
|
55
53
|
|
56
|
-
if Gem::Version.new(Gem::
|
54
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
57
55
|
s.add_runtime_dependency(%q<json_pure>, [">= 0"])
|
58
56
|
else
|
59
57
|
s.add_dependency(%q<json_pure>, [">= 0"])
|
data/spec/rpx_now_spec.rb
CHANGED
@@ -5,23 +5,36 @@ describe RPXNow do
|
|
5
5
|
body = {'stat' => 'ok'}.merge(replace)
|
6
6
|
mock({:code => "200", :body => body.to_json})
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
|
+
describe :domain do
|
10
|
+
it 'defaults to rpxnow.com' do
|
11
|
+
RPXNow.domain.should == 'rpxnow.com'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe :domain= do
|
16
|
+
it "is stored" do
|
17
|
+
RPXNow.domain = 'domain.com'
|
18
|
+
RPXNow.domain.should == 'domain.com'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
9
22
|
describe :api_key= do
|
10
23
|
before do
|
11
24
|
RPXNow.api_key='XX'
|
12
25
|
end
|
13
|
-
|
26
|
+
|
14
27
|
it "is stored" do
|
15
28
|
RPXNow.api_key.should == 'XX'
|
16
29
|
end
|
17
|
-
|
30
|
+
|
18
31
|
it "stores the api key, so i do not have to supply everytime" do
|
19
32
|
RPXNow::Api.should_receive(:request).
|
20
33
|
with(anything, hash_including(:apiKey => 'XX')).
|
21
34
|
and_return fake_response
|
22
35
|
RPXNow.mappings(1)
|
23
36
|
end
|
24
|
-
|
37
|
+
|
25
38
|
it "is not overwritten when overwriting for a single request" do
|
26
39
|
RPXNow::Api.should_receive(:request).
|
27
40
|
with(anything, hash_including(:apiKey => 'YY')).
|
@@ -35,12 +48,12 @@ describe RPXNow do
|
|
35
48
|
it "is 2 by default" do
|
36
49
|
RPXNow.api_version.should == 2
|
37
50
|
end
|
38
|
-
|
51
|
+
|
39
52
|
it "is stored" do
|
40
53
|
RPXNow.api_version='XX'
|
41
54
|
RPXNow.api_version.should == 'XX'
|
42
55
|
end
|
43
|
-
|
56
|
+
|
44
57
|
it "used for every request" do
|
45
58
|
RPXNow.api_version='XX'
|
46
59
|
RPXNow::Api.should_receive(:request).
|
@@ -48,7 +61,7 @@ describe RPXNow do
|
|
48
61
|
and_return fake_response
|
49
62
|
RPXNow.mappings(1)
|
50
63
|
end
|
51
|
-
|
64
|
+
|
52
65
|
it "is not overwritten when overwriting for a single request" do
|
53
66
|
RPXNow.api_version='XX'
|
54
67
|
RPXNow::Api.should_receive(:request).
|
@@ -57,7 +70,7 @@ describe RPXNow do
|
|
57
70
|
RPXNow.mappings(1, :api_version => 'YY')
|
58
71
|
RPXNow.api_version.should == 'XX'
|
59
72
|
end
|
60
|
-
|
73
|
+
|
61
74
|
it "is not passed in data for request" do
|
62
75
|
RPXNow.api_version='XX'
|
63
76
|
RPXNow::Api.should_receive(:request).
|
@@ -66,7 +79,7 @@ describe RPXNow do
|
|
66
79
|
RPXNow.mappings(1, :api_version => 'YY')
|
67
80
|
end
|
68
81
|
end
|
69
|
-
|
82
|
+
|
70
83
|
describe :embed_code do
|
71
84
|
it "contains the subdomain" do
|
72
85
|
RPXNow.embed_code('xxx','my_url').should =~ /xxx/
|
@@ -79,7 +92,7 @@ describe RPXNow do
|
|
79
92
|
it "defaults to no language" do
|
80
93
|
RPXNow.embed_code('xxx', 'my_url').should_not =~ /language_preference/
|
81
94
|
end
|
82
|
-
|
95
|
+
|
83
96
|
it "has a changeable language" do
|
84
97
|
RPXNow.embed_code('xxx', 'my_url', :language => 'es').should =~ /language_preference=es/
|
85
98
|
end
|
@@ -104,28 +117,28 @@ describe RPXNow do
|
|
104
117
|
RPXNow.embed_code('xxx','my_url').should =~ /id=\"rpx_now_embed\"/
|
105
118
|
end
|
106
119
|
end
|
107
|
-
|
120
|
+
|
108
121
|
describe :popup_code do
|
109
122
|
it "defaults to obtrusive output" do
|
110
123
|
RPXNow.popup_code('sign on', 'subdomain', 'http://fake.domain.com/').should =~ /script src=/
|
111
124
|
end
|
112
|
-
|
125
|
+
|
113
126
|
it "does not change supplied options" do
|
114
127
|
options = {:xxx => 1}
|
115
128
|
RPXNow.popup_code('a','b','c', options)
|
116
129
|
options.should == {:xxx => 1}
|
117
130
|
end
|
118
|
-
|
131
|
+
|
119
132
|
it "adds html params to link" do
|
120
133
|
options = {:html => {:id => "xxxx"}}
|
121
134
|
RPXNow.popup_code('a','b','c', options).should =~ /id="xxxx"/
|
122
135
|
end
|
123
|
-
|
136
|
+
|
124
137
|
it "adds rpxnow to given html class" do
|
125
138
|
options = {:html => {:class => "c1 c2"}}
|
126
139
|
RPXNow.popup_code('a','b','c', options).should =~ /class="rpxnow c1 c2"/
|
127
140
|
end
|
128
|
-
|
141
|
+
|
129
142
|
describe 'obstrusive' do
|
130
143
|
it "does not encode token_url for popup" do
|
131
144
|
expected = %Q(RPXNOW.token_url = 'http://fake.domain.com/')
|
@@ -143,24 +156,24 @@ describe RPXNow do
|
|
143
156
|
actual = RPXNow.popup_code('sign on', 'subdomain', 'http://fake.domain.com/', :unobtrusive => true)
|
144
157
|
actual.should == expected
|
145
158
|
end
|
146
|
-
|
159
|
+
|
147
160
|
it "can change api version" do
|
148
161
|
RPXNow.popup_code('x', 'y', 'z', :unobtrusive => true, :api_version => 'XX').should include("openid/vXX/signin?")
|
149
162
|
end
|
150
|
-
|
163
|
+
|
151
164
|
it "can change language" do
|
152
165
|
RPXNow.popup_code('x', 'y', 'z', :unobtrusive => true, :language => 'XX').should include("language_preference=XX")
|
153
166
|
end
|
154
|
-
|
167
|
+
|
155
168
|
it "can add flags" do
|
156
169
|
RPXNow.popup_code('x', 'y', 'z', :unobtrusive => true, :flags => 'test').should include("flags=test")
|
157
170
|
end
|
158
|
-
|
171
|
+
|
159
172
|
it "can add default_provider" do
|
160
173
|
RPXNow.popup_code('x', 'y', 'z', :unobtrusive => true, :default_provider => 'test').should include("default_provider=test")
|
161
174
|
end
|
162
175
|
end
|
163
|
-
|
176
|
+
|
164
177
|
it "allows to specify the version of the widget" do
|
165
178
|
RPXNow.popup_code('x','y','z', :api_version => 300).should =~ %r(/openid/v300/signin)
|
166
179
|
end
|
@@ -168,38 +181,38 @@ describe RPXNow do
|
|
168
181
|
it "defaults to widget version 2" do
|
169
182
|
RPXNow.popup_code('x','y','z').should =~ %r(/openid/v2/signin)
|
170
183
|
end
|
171
|
-
|
184
|
+
|
172
185
|
describe 'language' do
|
173
186
|
it "defaults to no language" do
|
174
187
|
RPXNow.popup_code('x','y','z').should_not =~ /RPXNOW.language_preference/
|
175
188
|
end
|
176
|
-
|
189
|
+
|
177
190
|
it "has a changeable language" do
|
178
191
|
RPXNow.popup_code('x','y','z', :language=>'de').should =~ /RPXNOW.language_preference = 'de'/
|
179
192
|
end
|
180
193
|
end
|
181
|
-
|
194
|
+
|
182
195
|
describe 'flags' do
|
183
196
|
it "defaults to no language" do
|
184
197
|
RPXNow.popup_code('x','y','z').should_not =~ /RPXNOW.flags/
|
185
198
|
end
|
186
|
-
|
199
|
+
|
187
200
|
it "can have flags" do
|
188
201
|
RPXNow.popup_code('x','y','z', :flags=>'test').should =~ /RPXNOW.flags = 'test'/
|
189
202
|
end
|
190
203
|
end
|
191
|
-
|
204
|
+
|
192
205
|
describe 'default_provider' do
|
193
206
|
it "defaults to no provider" do
|
194
207
|
RPXNow.popup_code('x','y','z').should_not =~ /RPXNOW.default_provider/
|
195
208
|
end
|
196
|
-
|
209
|
+
|
197
210
|
it "can have default_provider" do
|
198
211
|
RPXNow.popup_code('x','y','z', :default_provider=>'test').should =~ /RPXNOW.default_provider = 'test'/
|
199
212
|
end
|
200
213
|
end
|
201
214
|
end
|
202
|
-
|
215
|
+
|
203
216
|
describe :user_data do
|
204
217
|
before do
|
205
218
|
@response_body = {
|
@@ -214,7 +227,7 @@ describe RPXNow do
|
|
214
227
|
@response = fake_response(@response_body)
|
215
228
|
@fake_user_data = {'profile'=>{}}
|
216
229
|
end
|
217
|
-
|
230
|
+
|
218
231
|
it "raises ApiError when used with an invalid token" do
|
219
232
|
lambda{
|
220
233
|
RPXNow.user_data('xxxx')
|
@@ -235,13 +248,13 @@ describe RPXNow do
|
|
235
248
|
RPXNow::Api.should_receive(:request).and_return @response
|
236
249
|
RPXNow.user_data('').should == expected
|
237
250
|
end
|
238
|
-
|
251
|
+
|
239
252
|
it "deprecated: adds raw profile data if i want it" do
|
240
253
|
RPXNow::Api.should_receive(:request).and_return @response
|
241
254
|
RPXNow.should_receive(:warn)
|
242
255
|
RPXNow.user_data('',:additional => [:raw])[:raw]["verifiedEmail"].should == "grosser.michael@googlemail.com"
|
243
256
|
end
|
244
|
-
|
257
|
+
|
245
258
|
it "adds raw data if i want it" do
|
246
259
|
RPXNow::Api.should_receive(:request).and_return @response
|
247
260
|
RPXNow.user_data('',:additional => [:raw_response])[:raw_response]['profile']["verifiedEmail"].should == "grosser.michael@googlemail.com"
|
@@ -253,14 +266,14 @@ describe RPXNow do
|
|
253
266
|
RPXNow::Api.should_receive(:request).and_return response
|
254
267
|
RPXNow.user_data('')[:id].should == '2'
|
255
268
|
end
|
256
|
-
|
269
|
+
|
257
270
|
it "handles primaryKeys that are not numeric" do
|
258
271
|
@response_body['profile']['primaryKey'] = "dbalatero"
|
259
272
|
response = fake_response(@response_body)
|
260
273
|
RPXNow::Api.should_receive(:request).and_return response
|
261
274
|
RPXNow.user_data('')[:id].should == 'dbalatero'
|
262
275
|
end
|
263
|
-
|
276
|
+
|
264
277
|
it "can fetch additional fields" do
|
265
278
|
@response_body['profile']['xxxy'] = "test"
|
266
279
|
response = fake_response(@response_body)
|
@@ -287,7 +300,7 @@ describe RPXNow do
|
|
287
300
|
and_return @response
|
288
301
|
RPXNow.user_data('', :extended=>true)
|
289
302
|
end
|
290
|
-
|
303
|
+
|
291
304
|
it "returns extended data as an additional field" do
|
292
305
|
@response_body['friends'] = {'x' => 1}
|
293
306
|
@response = fake_response(@response_body)
|
@@ -295,19 +308,19 @@ describe RPXNow do
|
|
295
308
|
RPXNow::Api.should_receive(:request).and_return @response
|
296
309
|
RPXNow.user_data('', :extended=>true)[:extended].should == {'friends' => {'x' => 1}}
|
297
310
|
end
|
298
|
-
|
311
|
+
|
299
312
|
it "does not pass raw_response to RPX" do
|
300
313
|
RPXNow::Api.should_receive(:request).
|
301
314
|
with(anything, hash_not_including(:raw_response => true)).
|
302
315
|
and_return @response
|
303
316
|
RPXNow.user_data('', :raw_response=>true)
|
304
317
|
end
|
305
|
-
|
318
|
+
|
306
319
|
it "can return a raw_response" do
|
307
320
|
RPXNow::Api.should_receive(:request).and_return @response
|
308
321
|
RPXNow.user_data('', :raw_response=>true).should == @response_body.merge('stat' => 'ok')
|
309
322
|
end
|
310
|
-
|
323
|
+
|
311
324
|
# these 2 tests are kind of duplicates of the api_version/key tests,
|
312
325
|
# but i want to be extra-sure user_data works
|
313
326
|
it "works with api version as option" do
|
@@ -317,7 +330,7 @@ describe RPXNow do
|
|
317
330
|
RPXNow.user_data('id', :extended=>'abc', :api_version=>123)
|
318
331
|
RPXNow.api_version.should == API_VERSION
|
319
332
|
end
|
320
|
-
|
333
|
+
|
321
334
|
it "works with apiKey as option" do
|
322
335
|
RPXNow::Api.should_receive(:request).
|
323
336
|
with('/api/v2/auth_info', hash_including(:apiKey=>'THE KEY')).
|
@@ -326,7 +339,7 @@ describe RPXNow do
|
|
326
339
|
RPXNow.api_key.should == API_KEY
|
327
340
|
end
|
328
341
|
end
|
329
|
-
|
342
|
+
|
330
343
|
describe :set_status do
|
331
344
|
it "sets the status" do
|
332
345
|
RPXNow::Api.should_receive(:request).
|
@@ -335,19 +348,19 @@ describe RPXNow do
|
|
335
348
|
RPXNow.set_status('identifier', 'Chillen...')
|
336
349
|
end
|
337
350
|
end
|
338
|
-
|
351
|
+
|
339
352
|
describe :activity do
|
340
353
|
it "does a api call with the right arguments" do
|
341
354
|
RPXNow::Api.should_receive(:request).with("/api/v2/activity", :identifier=>"identifier", :activity=>'{"test":"something"}', :apiKey=>API_KEY).and_return fake_response
|
342
355
|
RPXNow.activity('identifier', :test => 'something')
|
343
356
|
end
|
344
|
-
|
357
|
+
|
345
358
|
it "can pass identifier/apiKey" do
|
346
359
|
RPXNow::Api.should_receive(:request).with("/api/v66666/activity", hash_including(:apiKey=>'MYKEY')).and_return fake_response
|
347
360
|
RPXNow.activity('identifier', {:test => 'something'}, :apiKey => 'MYKEY', :api_version => '66666')
|
348
361
|
end
|
349
362
|
end
|
350
|
-
|
363
|
+
|
351
364
|
describe :parse_user_data do
|
352
365
|
it "reads secondary names" do
|
353
366
|
RPXNow.send(:parse_user_data,{'profile'=>{'preferredUsername'=>'1'}}, {})[:name].should == '1'
|
@@ -357,7 +370,7 @@ describe RPXNow do
|
|
357
370
|
RPXNow.send(:parse_user_data,{'profile'=>{'email'=>'1@xxx.com'}}, {})[:name].should == '1'
|
358
371
|
end
|
359
372
|
end
|
360
|
-
|
373
|
+
|
361
374
|
describe :contacts do
|
362
375
|
it "finds all contacts" do
|
363
376
|
response = fake_response(JSON.parse(File.read('spec/fixtures/get_contacts_response.json')))
|
@@ -367,7 +380,7 @@ describe RPXNow do
|
|
367
380
|
RPXNow.contacts('xx').size.should == 5
|
368
381
|
end
|
369
382
|
end
|
370
|
-
|
383
|
+
|
371
384
|
describe :mappings do
|
372
385
|
it "shows all mappings" do
|
373
386
|
RPXNow::Api.should_receive(:request).
|
@@ -376,7 +389,7 @@ describe RPXNow do
|
|
376
389
|
RPXNow.mappings(1).should == ["http://test.myopenid.com/"]
|
377
390
|
end
|
378
391
|
end
|
379
|
-
|
392
|
+
|
380
393
|
describe :map do
|
381
394
|
it "maps a identifier" do
|
382
395
|
RPXNow::Api.should_receive(:request).
|
@@ -385,7 +398,7 @@ describe RPXNow do
|
|
385
398
|
RPXNow.map('http://test.myopenid.com',1)
|
386
399
|
end
|
387
400
|
end
|
388
|
-
|
401
|
+
|
389
402
|
describe :unmap do
|
390
403
|
it "unmaps a indentifier" do
|
391
404
|
RPXNow::Api.should_receive(:request).
|
@@ -394,7 +407,7 @@ describe RPXNow do
|
|
394
407
|
RPXNow.unmap('http://test.myopenid.com', 1)
|
395
408
|
end
|
396
409
|
end
|
397
|
-
|
410
|
+
|
398
411
|
it "has a VERSION" do
|
399
412
|
RPXNow::VERSION.should =~ /^\d+\.\d+\.\d+$/
|
400
413
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,18 +1,16 @@
|
|
1
|
-
# ---- requirements
|
2
|
-
require 'rubygems'
|
3
|
-
require 'spec'
|
4
|
-
|
5
1
|
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
6
2
|
|
7
3
|
# ---- setup environment/plugin
|
8
4
|
require File.expand_path("../init", File.dirname(__FILE__))
|
9
5
|
API_KEY = '4b339169026742245b754fa338b9b0aebbd0a733'
|
10
6
|
API_VERSION = RPXNow.api_version
|
7
|
+
DOMAIN = RPXNow.domain
|
11
8
|
|
12
9
|
# ---- rspec
|
13
|
-
|
14
|
-
config.before
|
10
|
+
RSpec.configure do |config|
|
11
|
+
config.before do
|
15
12
|
RPXNow.api_key = API_KEY
|
16
13
|
RPXNow.api_version = API_VERSION
|
14
|
+
RPXNow.domain = DOMAIN
|
17
15
|
end
|
18
|
-
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rpx_now
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 55
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 6
|
8
|
-
-
|
9
|
-
version: 0.6.
|
9
|
+
- 24
|
10
|
+
version: 0.6.24
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Michael Grosser
|
@@ -14,21 +15,23 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date:
|
18
|
+
date: 2011-02-21 00:00:00 +01:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
|
-
name: json_pure
|
22
|
-
prerelease: false
|
23
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
+
hash: 3
|
27
28
|
segments:
|
28
29
|
- 0
|
29
30
|
version: "0"
|
30
|
-
|
31
|
+
prerelease: false
|
31
32
|
version_requirements: *id001
|
33
|
+
type: :runtime
|
34
|
+
name: json_pure
|
32
35
|
description:
|
33
36
|
email: grosser.michael@gmail.com
|
34
37
|
executables: []
|
@@ -38,9 +41,9 @@ extensions: []
|
|
38
41
|
extra_rdoc_files: []
|
39
42
|
|
40
43
|
files:
|
41
|
-
- .gitignore
|
42
44
|
- CHANGELOG
|
43
45
|
- Gemfile
|
46
|
+
- Gemfile.lock
|
44
47
|
- MIGRATION
|
45
48
|
- Rakefile
|
46
49
|
- Readme.md
|
@@ -65,35 +68,39 @@ homepage: http://github.com/grosser/rpx_now
|
|
65
68
|
licenses: []
|
66
69
|
|
67
70
|
post_install_message:
|
68
|
-
rdoc_options:
|
69
|
-
|
71
|
+
rdoc_options: []
|
72
|
+
|
70
73
|
require_paths:
|
71
74
|
- lib
|
72
75
|
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
73
77
|
requirements:
|
74
78
|
- - ">="
|
75
79
|
- !ruby/object:Gem::Version
|
80
|
+
hash: 3
|
76
81
|
segments:
|
77
82
|
- 0
|
78
83
|
version: "0"
|
79
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
80
86
|
requirements:
|
81
87
|
- - ">="
|
82
88
|
- !ruby/object:Gem::Version
|
89
|
+
hash: 3
|
83
90
|
segments:
|
84
91
|
- 0
|
85
92
|
version: "0"
|
86
93
|
requirements: []
|
87
94
|
|
88
95
|
rubyforge_project:
|
89
|
-
rubygems_version: 1.
|
96
|
+
rubygems_version: 1.4.2
|
90
97
|
signing_key:
|
91
98
|
specification_version: 3
|
92
99
|
summary: Helper to simplify RPX Now user login/creation
|
93
100
|
test_files:
|
94
|
-
- spec/
|
101
|
+
- spec/integration/mapping_spec.rb
|
95
102
|
- spec/rpx_now/api_spec.rb
|
103
|
+
- spec/rpx_now/contacts_collection_spec.rb
|
96
104
|
- spec/rpx_now/user_proxy_spec.rb
|
97
|
-
- spec/integration/mapping_spec.rb
|
98
|
-
- spec/spec_helper.rb
|
99
105
|
- spec/rpx_now_spec.rb
|
106
|
+
- spec/spec_helper.rb
|