rpx_now 0.5.10 → 0.5.11
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +6 -3
- data/VERSION +1 -1
- data/lib/rpx_now.rb +25 -55
- data/lib/rpx_now/request.rb +43 -0
- data/pkg/rpx_now-0.5.10.gem +0 -0
- data/pkg/rpx_now-0.5.11.gem +0 -0
- data/rdoc/README.rdoc +1 -0
- data/rpx_now.gemspec +7 -2
- data/spec/rpx_now/contacts_collection_spec.rb +1 -1
- data/spec/rpx_now/request_spec.rb +41 -0
- data/spec/rpx_now/user_proxy_spec.rb +1 -1
- data/spec/rpx_now_spec.rb +27 -49
- data/spec/spec_helper.rb +0 -2
- metadata +7 -2
data/README.markdown
CHANGED
@@ -23,7 +23,7 @@ Usage
|
|
23
23
|
Install
|
24
24
|
=======
|
25
25
|
- As Rails plugin: `script/plugin install git://github.com/grosser/rpx_now.git `
|
26
|
-
- As gem: `sudo gem install
|
26
|
+
- As gem: `sudo gem install rpx_now`
|
27
27
|
|
28
28
|
Examples
|
29
29
|
========
|
@@ -40,10 +40,13 @@ View
|
|
40
40
|
Environment
|
41
41
|
-----------
|
42
42
|
Rails::Initializer.run do |config|
|
43
|
-
config.gem "
|
43
|
+
config.gem "rpx_now"
|
44
44
|
...
|
45
|
+
|
46
|
+
config.after_initialize do # so rake gems:install works
|
47
|
+
RPXNow.api_key = "YOU RPX API KEY"
|
48
|
+
end
|
45
49
|
end
|
46
|
-
RPXNow.api_key = "YOU RPX API KEY"
|
47
50
|
|
48
51
|
Controller
|
49
52
|
----------
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.11
|
data/lib/rpx_now.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'net/https'
|
1
3
|
require 'json'
|
4
|
+
|
5
|
+
require 'rpx_now/request'
|
2
6
|
require 'rpx_now/contacts_collection'
|
3
7
|
require 'rpx_now/user_integration'
|
4
8
|
require 'rpx_now/user_proxy'
|
@@ -6,15 +10,14 @@ require 'rpx_now/user_proxy'
|
|
6
10
|
module RPXNow
|
7
11
|
extend self
|
8
12
|
|
9
|
-
HOST = 'rpxnow.com'
|
10
|
-
SSL_CERT = File.join(File.dirname(__FILE__), '..', 'certs', 'ssl_cert.pem')
|
11
|
-
|
12
13
|
attr_accessor :api_key
|
13
14
|
attr_accessor :api_version
|
14
15
|
self.api_version = 2
|
15
16
|
|
16
|
-
# retrieve the users data
|
17
|
-
#
|
17
|
+
# retrieve the users data
|
18
|
+
# - cleaned Hash
|
19
|
+
# - complete/unclean response when block was given user_data{|response| ...; return hash }
|
20
|
+
# - nil when token was invalid / data was not found
|
18
21
|
def user_data(token, *args)
|
19
22
|
api_key, version, options = extract_key_version_and_options!(args)
|
20
23
|
options = {:token=>token,:apiKey=>api_key}.merge options
|
@@ -25,7 +28,7 @@ module RPXNow
|
|
25
28
|
return nil if $!.to_s=~/Data not found/
|
26
29
|
raise
|
27
30
|
end
|
28
|
-
if block_given? then yield(data) else
|
31
|
+
if block_given? then yield(data) else parse_user_data(data) end
|
29
32
|
end
|
30
33
|
|
31
34
|
# set the users status
|
@@ -80,7 +83,7 @@ module RPXNow
|
|
80
83
|
def embed_code(subdomain,url,options={})
|
81
84
|
options = {:width => '400', :height => '240', :language => 'en'}.merge(options)
|
82
85
|
<<EOF
|
83
|
-
<iframe src="https://#{subdomain}.#{HOST}/openid/embed?token_url=#{url}&language_preference=#{options[:language]}"
|
86
|
+
<iframe src="https://#{subdomain}.#{Request::HOST}/openid/embed?token_url=#{url}&language_preference=#{options[:language]}"
|
84
87
|
scrolling="no" frameBorder="no" style="width:#{options[:width]}px;height:#{options[:height]}px;">
|
85
88
|
</iframe>
|
86
89
|
EOF
|
@@ -96,18 +99,29 @@ EOF
|
|
96
99
|
|
97
100
|
private
|
98
101
|
|
102
|
+
def self.parse_user_data(response)
|
103
|
+
user_data = response['profile']
|
104
|
+
data = {}
|
105
|
+
data[:identifier] = user_data['identifier']
|
106
|
+
data[:email] = user_data['verifiedEmail'] || user_data['email']
|
107
|
+
data[:username] = user_data['preferredUsername'] || data[:email].to_s.sub(/@.*/,'')
|
108
|
+
data[:name] = user_data['displayName'] || data[:username]
|
109
|
+
data[:id] = user_data['primaryKey'] unless user_data['primaryKey'].to_s.empty?
|
110
|
+
data
|
111
|
+
end
|
112
|
+
|
99
113
|
def unobtrusive_popup_code(text, subdomain, url, options={})
|
100
114
|
version = extract_version! options
|
101
|
-
"<a class=\"rpxnow\" href=\"https://#{subdomain}.#{HOST}/openid/v#{version}/signin?token_url=#{url}\">#{text}</a>"
|
115
|
+
"<a class=\"rpxnow\" href=\"https://#{subdomain}.#{Request::HOST}/openid/v#{version}/signin?token_url=#{url}\">#{text}</a>"
|
102
116
|
end
|
103
117
|
|
104
118
|
def obtrusive_popup_code(text, subdomain, url, options = {})
|
105
119
|
version = extract_version! options
|
106
120
|
<<EOF
|
107
|
-
<a class="rpxnow" onclick="return false;" href="https://#{subdomain}.#{HOST}/openid/v#{version}/signin?token_url=#{url}">
|
121
|
+
<a class="rpxnow" onclick="return false;" href="https://#{subdomain}.#{Request::HOST}/openid/v#{version}/signin?token_url=#{url}">
|
108
122
|
#{text}
|
109
123
|
</a>
|
110
|
-
<script src="https://#{HOST}/openid/v#{version}/widget" type="text/javascript"></script>
|
124
|
+
<script src="https://#{Request::HOST}/openid/v#{version}/widget" type="text/javascript"></script>
|
111
125
|
<script type="text/javascript">
|
112
126
|
//<![CDATA[
|
113
127
|
RPXNOW.token_url = "#{url}";
|
@@ -144,52 +158,8 @@ EOF
|
|
144
158
|
options.delete(:api_version) || api_version
|
145
159
|
end
|
146
160
|
|
147
|
-
def read_user_data_from_response(response)
|
148
|
-
user_data = response['profile']
|
149
|
-
data = {}
|
150
|
-
data[:identifier] = user_data['identifier']
|
151
|
-
data[:email] = user_data['verifiedEmail'] || user_data['email']
|
152
|
-
data[:username] = user_data['preferredUsername'] || data[:email].to_s.sub(/@.*/,'')
|
153
|
-
data[:name] = user_data['displayName'] || data[:username]
|
154
|
-
data[:id] = user_data['primaryKey'] unless user_data['primaryKey'].to_s.empty?
|
155
|
-
data
|
156
|
-
end
|
157
|
-
|
158
161
|
def secure_json_post(path, data)
|
159
|
-
|
160
|
-
end
|
161
|
-
|
162
|
-
def post(path, data)
|
163
|
-
require 'net/http'
|
164
|
-
require 'net/https'
|
165
|
-
request = Net::HTTP::Post.new(path)
|
166
|
-
request.form_data = data.map{|k,v| [k.to_s,v]}#symbol keys -> string because of ruby 1.9.x bug http://redmine.ruby-lang.org/issues/show/1351
|
167
|
-
make_request(request)
|
168
|
-
end
|
169
|
-
|
170
|
-
def make_request(request)
|
171
|
-
http = Net::HTTP.new(HOST, 443)
|
172
|
-
http.use_ssl = true
|
173
|
-
http.ca_file = SSL_CERT
|
174
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
175
|
-
http.verify_depth = 5
|
176
|
-
http.request(request)
|
177
|
-
end
|
178
|
-
|
179
|
-
def parse_response(response)
|
180
|
-
if response.code.to_i >= 400
|
181
|
-
raise ServiceUnavailableError, "The RPX service is temporarily unavailable. (4XX)"
|
182
|
-
else
|
183
|
-
result = JSON.parse(response.body)
|
184
|
-
return result unless result['err']
|
185
|
-
|
186
|
-
code = result['err']['code']
|
187
|
-
if code == -1
|
188
|
-
raise ServiceUnavailableError, "The RPX service is temporarily unavailable."
|
189
|
-
else
|
190
|
-
raise ApiError, "Got error: #{result['err']['msg']} (code: #{code}), HTTP status: #{response.code}"
|
191
|
-
end
|
192
|
-
end
|
162
|
+
Request.post(path, data)
|
193
163
|
end
|
194
164
|
|
195
165
|
class ServerError < RuntimeError; end #backwards compatibility / catch all
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module RPXNow
|
2
|
+
class Request
|
3
|
+
HOST = 'rpxnow.com'
|
4
|
+
SSL_CERT = File.join(File.dirname(__FILE__), '..', '..', 'certs', 'ssl_cert.pem')
|
5
|
+
|
6
|
+
def self.post(path, data)
|
7
|
+
parse_response(request(path,data))
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def self.request(path, data)
|
13
|
+
request = Net::HTTP::Post.new(path)
|
14
|
+
request.form_data = data.map{|k,v| [k.to_s,v]}#symbol keys -> string because of ruby 1.9.x bug http://redmine.ruby-lang.org/issues/show/1351
|
15
|
+
make_request(request)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.make_request(request)
|
19
|
+
http = Net::HTTP.new(HOST, 443)
|
20
|
+
http.use_ssl = true
|
21
|
+
http.ca_file = SSL_CERT
|
22
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
23
|
+
http.verify_depth = 5
|
24
|
+
http.request(request)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.parse_response(response)
|
28
|
+
if response.code.to_i >= 400
|
29
|
+
raise ServiceUnavailableError, "The RPX service is temporarily unavailable. (4XX)"
|
30
|
+
else
|
31
|
+
result = JSON.parse(response.body)
|
32
|
+
return result unless result['err']
|
33
|
+
|
34
|
+
code = result['err']['code']
|
35
|
+
if code == -1
|
36
|
+
raise ServiceUnavailableError, "The RPX service is temporarily unavailable."
|
37
|
+
else
|
38
|
+
raise ApiError, "Got error: #{result['err']['msg']} (code: #{code}), HTTP status: #{response.code}"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/pkg/rpx_now-0.5.10.gem
CHANGED
Binary file
|
Binary file
|
data/rdoc/README.rdoc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
documentation is at http://github.com/grosser/rpx_now
|
data/rpx_now.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rpx_now}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.11"
|
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{2009-10-
|
12
|
+
s.date = %q{2009-10-07}
|
13
13
|
s.email = %q{grosser.michael@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.markdown"
|
@@ -24,12 +24,16 @@ Gem::Specification.new do |s|
|
|
24
24
|
"init.rb",
|
25
25
|
"lib/rpx_now.rb",
|
26
26
|
"lib/rpx_now/contacts_collection.rb",
|
27
|
+
"lib/rpx_now/request.rb",
|
27
28
|
"lib/rpx_now/user_integration.rb",
|
28
29
|
"lib/rpx_now/user_proxy.rb",
|
29
30
|
"pkg/rpx_now-0.5.10.gem",
|
31
|
+
"pkg/rpx_now-0.5.11.gem",
|
32
|
+
"rdoc/README.rdoc",
|
30
33
|
"rpx_now.gemspec",
|
31
34
|
"spec/fixtures/get_contacts_response.json",
|
32
35
|
"spec/rpx_now/contacts_collection_spec.rb",
|
36
|
+
"spec/rpx_now/request_spec.rb",
|
33
37
|
"spec/rpx_now/user_proxy_spec.rb",
|
34
38
|
"spec/rpx_now_spec.rb",
|
35
39
|
"spec/spec_helper.rb"
|
@@ -44,6 +48,7 @@ Gem::Specification.new do |s|
|
|
44
48
|
"spec/rpx_now_spec.rb",
|
45
49
|
"spec/rpx_now/contacts_collection_spec.rb",
|
46
50
|
"spec/rpx_now/user_proxy_spec.rb",
|
51
|
+
"spec/rpx_now/request_spec.rb",
|
47
52
|
"spec/spec_helper.rb"
|
48
53
|
]
|
49
54
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec/spec_helper'
|
2
|
+
|
3
|
+
describe RPXNow::Request do
|
4
|
+
describe 'ssl cert' do
|
5
|
+
it "has an absolute path" do
|
6
|
+
RPXNow::Request::SSL_CERT[0..0].should == '/' #start with '/'
|
7
|
+
end
|
8
|
+
|
9
|
+
it "exists" do
|
10
|
+
File.read(RPXNow::Request::SSL_CERT).to_s.should_not be_empty
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe :parse_response do
|
15
|
+
it "parses json when status is ok" do
|
16
|
+
response = mock(:code=>'200', :body=>%Q({"stat":"ok","data":"xx"}))
|
17
|
+
RPXNow::Request.send(:parse_response, response)['data'].should == "xx"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "raises when there is a communication error" do
|
21
|
+
response = stub(:code=>'200', :body=>%Q({"err":"wtf","stat":"ok"}))
|
22
|
+
lambda{
|
23
|
+
RPXNow::Request.send(:parse_response,response)
|
24
|
+
}.should raise_error(RPXNow::ApiError)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "raises when service has downtime" do
|
28
|
+
response = stub(:code=>'200', :body=>%Q({"err":{"code":-1},"stat":"ok"}))
|
29
|
+
lambda{
|
30
|
+
RPXNow::Request.send(:parse_response,response)
|
31
|
+
}.should raise_error(RPXNow::ServiceUnavailableError)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "raises when service is down" do
|
35
|
+
response = stub(:code=>'400',:body=>%Q({"stat":"err"}))
|
36
|
+
lambda{
|
37
|
+
RPXNow::Request.send(:parse_response,response)
|
38
|
+
}.should raise_error(RPXNow::ServiceUnavailableError)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/spec/rpx_now_spec.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require 'spec/spec_helper'
|
2
2
|
|
3
3
|
describe RPXNow do
|
4
4
|
describe :api_key= do
|
5
5
|
it "stores the api key, so i do not have to supply everytime" do
|
6
6
|
RPXNow.api_key='XX'
|
7
|
-
RPXNow.
|
7
|
+
RPXNow::Request.should_receive(:request).with{|x,data|data[:apiKey]=='XX'}.and_return mock(:code=>'200', :body=>%Q({"stat":"ok"}))
|
8
8
|
RPXNow.mappings(1)
|
9
9
|
end
|
10
10
|
end
|
@@ -98,55 +98,61 @@ describe RPXNow do
|
|
98
98
|
end
|
99
99
|
|
100
100
|
it "parses JSON response to user data" do
|
101
|
-
|
102
|
-
|
101
|
+
expected = {
|
102
|
+
:name => 'Michael Grosser',
|
103
|
+
:email => 'grosser.michael@googlemail.com',
|
104
|
+
:identifier => 'https://www.google.com/accounts/o8/id?id=AItOawmaOlyYezg_WfbgP_qjaUyHjmqZD9qNIVM',
|
105
|
+
:username => 'grosser.michael',
|
106
|
+
}
|
107
|
+
RPXNow::Request.should_receive(:request).and_return fake_response
|
108
|
+
RPXNow.user_data('').should == expected
|
103
109
|
end
|
104
110
|
|
105
111
|
it "adds a :id when primaryKey was returned" do
|
106
112
|
@response_body.sub!(%Q("verifiedEmail"), %Q("primaryKey":"2","verifiedEmail"))
|
107
|
-
RPXNow.
|
113
|
+
RPXNow::Request.should_receive(:request).and_return fake_response
|
108
114
|
RPXNow.user_data('')[:id].should == '2'
|
109
115
|
end
|
110
116
|
|
111
117
|
it "handles primaryKeys that are not numeric" do
|
112
118
|
@response_body.sub!(%Q("verifiedEmail"), %Q("primaryKey":"dbalatero","verifiedEmail"))
|
113
|
-
RPXNow.
|
119
|
+
RPXNow::Request.should_receive(:request).and_return fake_response
|
114
120
|
RPXNow.user_data('')[:id].should == 'dbalatero'
|
115
121
|
end
|
116
122
|
|
117
123
|
it "hands JSON response to supplied block" do
|
118
|
-
RPXNow.
|
124
|
+
RPXNow::Request.should_receive(:request).and_return mock(:code=>'200',:body=>%Q({"x":"1","stat":"ok"}))
|
119
125
|
response = nil
|
120
126
|
RPXNow.user_data(''){|data| response = data}
|
121
127
|
response.should == {"x" => "1", "stat" => "ok"}
|
122
128
|
end
|
123
129
|
|
124
130
|
it "returns what the supplied block returned" do
|
125
|
-
RPXNow.
|
131
|
+
RPXNow::Request.should_receive(:request).and_return mock(:code=>'200',:body=>%Q({"x":"1","stat":"ok"}))
|
126
132
|
RPXNow.user_data(''){|data| "x"}.should == 'x'
|
127
133
|
end
|
128
134
|
|
129
135
|
it "can send additional parameters" do
|
130
|
-
RPXNow.
|
136
|
+
RPXNow::Request.should_receive(:request).with{|url,data|
|
131
137
|
data[:extended].should == 'true'
|
132
|
-
}.
|
138
|
+
}.and_return fake_response
|
133
139
|
RPXNow.user_data('',:extended=>'true')
|
134
140
|
end
|
135
141
|
|
136
142
|
it "works with api key as 2nd parameter (backwards compatibility)" do
|
137
|
-
RPXNow.
|
143
|
+
RPXNow.should_receive(:secure_json_post).with('/api/v2/auth_info', :apiKey=>'THE KEY', :token=>'id').and_return @fake_user_data
|
138
144
|
RPXNow.user_data('id', 'THE KEY')
|
139
145
|
RPXNow.api_key.should == API_KEY
|
140
146
|
end
|
141
147
|
|
142
148
|
it "works with api key as 2nd parameter and options (backwards compatibility)" do
|
143
|
-
RPXNow.
|
149
|
+
RPXNow.should_receive(:secure_json_post).with('/api/v2/auth_info', :apiKey=>'THE KEY', :extended=>'abc', :token=>'id' ).and_return @fake_user_data
|
144
150
|
RPXNow.user_data('id', 'THE KEY', :extended=>'abc')
|
145
151
|
RPXNow.api_key.should == API_KEY
|
146
152
|
end
|
147
153
|
|
148
154
|
it "works with api version as option (backwards compatibility)" do
|
149
|
-
RPXNow.
|
155
|
+
RPXNow.should_receive(:secure_json_post).with('/api/v123/auth_info', :apiKey=>API_KEY, :token=>'id', :extended=>'abc').and_return @fake_user_data
|
150
156
|
RPXNow.user_data('id', :extended=>'abc', :api_version=>123)
|
151
157
|
RPXNow.api_version.should == API_VERSION
|
152
158
|
end
|
@@ -162,79 +168,51 @@ describe RPXNow do
|
|
162
168
|
end
|
163
169
|
|
164
170
|
it "parses JSON response to result hash" do
|
165
|
-
RPXNow.
|
171
|
+
RPXNow::Request.should_receive(:request).and_return fake_response
|
166
172
|
RPXNow.set_status('identifier', 'Chillen...').should == {'stat' => 'ok'}
|
167
173
|
end
|
168
174
|
end
|
169
175
|
|
170
176
|
describe :read_user_data_from_response do
|
171
177
|
it "reads secondary names" do
|
172
|
-
RPXNow.send(:
|
178
|
+
RPXNow.send(:parse_user_data,{'profile'=>{'preferredUsername'=>'1'}})[:name].should == '1'
|
173
179
|
end
|
174
180
|
|
175
181
|
it "parses email when no name is found" do
|
176
|
-
RPXNow.send(:
|
182
|
+
RPXNow.send(:parse_user_data,{'profile'=>{'email'=>'1@xxx.com'}})[:name].should == '1'
|
177
183
|
end
|
178
184
|
end
|
179
185
|
|
180
186
|
describe :contacts do
|
181
187
|
it "finds all contacts" do
|
182
188
|
response = JSON.parse(File.read('spec/fixtures/get_contacts_response.json'))
|
183
|
-
RPXNow.
|
189
|
+
RPXNow.should_receive(:secure_json_post).with('/api/v2/get_contacts',:identifier=>'xx', :apiKey=>API_KEY).and_return response
|
184
190
|
RPXNow.contacts('xx').size.should == 5
|
185
191
|
end
|
186
192
|
end
|
187
193
|
|
188
|
-
describe :parse_response do
|
189
|
-
it "parses json when status is ok" do
|
190
|
-
response = mock(:code=>'200', :body=>%Q({"stat":"ok","data":"xx"}))
|
191
|
-
RPXNow.send(:parse_response, response)['data'].should == "xx"
|
192
|
-
end
|
193
|
-
|
194
|
-
it "raises when there is a communication error" do
|
195
|
-
response = stub(:code=>'200', :body=>%Q({"err":"wtf","stat":"ok"}))
|
196
|
-
lambda{
|
197
|
-
RPXNow.send(:parse_response,response)
|
198
|
-
}.should raise_error(RPXNow::ApiError)
|
199
|
-
end
|
200
|
-
|
201
|
-
it "raises when service has downtime" do
|
202
|
-
response = stub(:code=>'200', :body=>%Q({"err":{"code":-1},"stat":"ok"}))
|
203
|
-
lambda{
|
204
|
-
RPXNow.send(:parse_response,response)
|
205
|
-
}.should raise_error(RPXNow::ServiceUnavailableError)
|
206
|
-
end
|
207
|
-
|
208
|
-
it "raises when service is down" do
|
209
|
-
response = stub(:code=>'400',:body=>%Q({"stat":"err"}))
|
210
|
-
lambda{
|
211
|
-
RPXNow.send(:parse_response,response)
|
212
|
-
}.should raise_error(RPXNow::ServiceUnavailableError)
|
213
|
-
end
|
214
|
-
end
|
215
|
-
|
216
194
|
describe :mappings do
|
217
195
|
it "parses JSON response to unmap data" do
|
218
|
-
RPXNow.
|
196
|
+
RPXNow::Request.should_receive(:request).and_return mock(:code=>'200',:body=>%Q({"stat":"ok", "identifiers": ["http://test.myopenid.com/"]}))
|
219
197
|
RPXNow.mappings(1, "x").should == ["http://test.myopenid.com/"]
|
220
198
|
end
|
221
199
|
end
|
222
200
|
|
223
201
|
describe :map do
|
224
202
|
it "adds a mapping" do
|
225
|
-
RPXNow.
|
203
|
+
RPXNow::Request.should_receive(:request).and_return mock(:code=>'200',:body=>%Q({"stat":"ok"}))
|
226
204
|
RPXNow.map('http://test.myopenid.com',1, API_KEY)
|
227
205
|
end
|
228
206
|
end
|
229
207
|
|
230
208
|
describe :unmap do
|
231
209
|
it "unmaps a indentifier" do
|
232
|
-
RPXNow.
|
210
|
+
RPXNow::Request.should_receive(:request).and_return mock(:code=>'200',:body=>%Q({"stat":"ok"}))
|
233
211
|
RPXNow.unmap('http://test.myopenid.com', 1, "x")
|
234
212
|
end
|
235
213
|
|
236
214
|
it "can be called with a specific version" do
|
237
|
-
RPXNow.
|
215
|
+
RPXNow.should_receive(:secure_json_post).with{|a,b|a == "/api/v300/unmap"}
|
238
216
|
RPXNow.unmap('http://test.myopenid.com', 1, :api_key=>'xxx', :api_version=>300)
|
239
217
|
end
|
240
218
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# ---- requirements
|
2
2
|
require 'rubygems'
|
3
3
|
require 'spec'
|
4
|
-
require 'mocha'
|
5
4
|
|
6
5
|
$LOAD_PATH << File.expand_path("../lib", File.dirname(__FILE__))
|
7
6
|
|
@@ -12,7 +11,6 @@ API_VERSION = RPXNow.api_version
|
|
12
11
|
|
13
12
|
# ---- rspec
|
14
13
|
Spec::Runner.configure do |config|
|
15
|
-
config.mock_with :mocha
|
16
14
|
config.before :each do
|
17
15
|
RPXNow.api_key = API_KEY
|
18
16
|
RPXNow.api_version = API_VERSION
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rpx_now
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-07 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -40,12 +40,16 @@ files:
|
|
40
40
|
- init.rb
|
41
41
|
- lib/rpx_now.rb
|
42
42
|
- lib/rpx_now/contacts_collection.rb
|
43
|
+
- lib/rpx_now/request.rb
|
43
44
|
- lib/rpx_now/user_integration.rb
|
44
45
|
- lib/rpx_now/user_proxy.rb
|
45
46
|
- pkg/rpx_now-0.5.10.gem
|
47
|
+
- pkg/rpx_now-0.5.11.gem
|
48
|
+
- rdoc/README.rdoc
|
46
49
|
- rpx_now.gemspec
|
47
50
|
- spec/fixtures/get_contacts_response.json
|
48
51
|
- spec/rpx_now/contacts_collection_spec.rb
|
52
|
+
- spec/rpx_now/request_spec.rb
|
49
53
|
- spec/rpx_now/user_proxy_spec.rb
|
50
54
|
- spec/rpx_now_spec.rb
|
51
55
|
- spec/spec_helper.rb
|
@@ -81,4 +85,5 @@ test_files:
|
|
81
85
|
- spec/rpx_now_spec.rb
|
82
86
|
- spec/rpx_now/contacts_collection_spec.rb
|
83
87
|
- spec/rpx_now/user_proxy_spec.rb
|
88
|
+
- spec/rpx_now/request_spec.rb
|
84
89
|
- spec/spec_helper.rb
|