resourceful 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -50,7 +50,7 @@ describe Resourceful::Request do
50
50
  @net_http_adapter_response = mock('net_http_adapter_response')
51
51
  Resourceful::NetHttpAdapter.stub!(:make_request).and_return(@net_http_adapter_response)
52
52
 
53
- @response = mock('response', :code => 200, :authoritative= => true, :was_unsuccessful? => false)
53
+ @response = mock('response', :code => 200, :authoritative= => true, :was_unsuccessful? => false, :request_time= => nil)
54
54
  Resourceful::Response.stub!(:new).and_return(@response)
55
55
  end
56
56
 
@@ -70,6 +70,13 @@ describe Resourceful::Request do
70
70
  @request.request_time.should == now
71
71
  end
72
72
 
73
+ it 'should set the response\'s request time' do
74
+ now = Time.now
75
+ Time.stub!(:now).and_return(now)
76
+
77
+ @response.should_receive(:request_time=).with(now)
78
+ @request.response
79
+ end
73
80
  end
74
81
 
75
82
  describe '#should_be_redirected?' do
@@ -77,7 +84,7 @@ describe Resourceful::Request do
77
84
  @net_http_adapter_response = mock('net_http_adapter_response')
78
85
  Resourceful::NetHttpAdapter.stub!(:make_request).and_return(@net_http_adapter_response)
79
86
 
80
- @response = mock('response', :code => 200, :authoritative= => true, :was_unsuccessful? => false)
87
+ @response = mock('response', :code => 200, :authoritative= => true, :was_unsuccessful? => false, :request_time= => nil)
81
88
  Resourceful::Response.stub!(:new).and_return(@response)
82
89
  end
83
90
 
@@ -37,6 +37,15 @@ describe Resourceful::Resource do
37
37
  it 'should take a uri' do
38
38
  @resource.uri.should == @uri
39
39
  end
40
+
41
+ it 'should take some default_options' do
42
+ r = Resourceful::Resource.new(@accessor, @uri, :foo => :bar)
43
+ r.default_options.should == {:foo => :bar}
44
+ end
45
+
46
+ it 'should default to an empty hash for options' do
47
+ @resource.default_options.should == {}
48
+ end
40
49
  end
41
50
 
42
51
  describe '#effective_uri' do
@@ -67,6 +76,22 @@ describe Resourceful::Resource do
67
76
  @resource.do_read_request(:some_method, :foo => :bar)
68
77
  end
69
78
 
79
+ describe 'default options' do
80
+ before do
81
+ @resource.default_options = {:foo => :bar}
82
+ end
83
+
84
+ it 'should merge the header with the default options' do
85
+ Resourceful::Request.should_receive(:new).with(anything, anything, anything, :foo => :bar).and_return(@request)
86
+ make_request
87
+ end
88
+
89
+ it 'should override any default header with the request header' do
90
+ Resourceful::Request.should_receive(:new).with(anything, anything, anything, :foo => :baz).and_return(@request)
91
+ @resource.do_read_request(:some_method, :foo => :baz)
92
+ end
93
+ end
94
+
70
95
  describe 'non-success responses' do
71
96
  before do
72
97
  @uri = 'http://www.example.com/code/404'
@@ -164,7 +189,7 @@ describe Resourceful::Resource do
164
189
  end
165
190
 
166
191
  it 'should make a new resource from the new location' do
167
- new_resource = mock('resource', :do_read_request => @response)
192
+ new_resource = mock('resource', :do_read_request => @response, :uri => @uri)
168
193
  Resourceful::Resource.should_receive(:new).with(@accessor, @redirected_uri).and_return(new_resource)
169
194
  make_request
170
195
  end
@@ -244,7 +269,7 @@ describe Resourceful::Resource do
244
269
  describe '#do_write_request' do
245
270
 
246
271
  def make_request
247
- @resource.do_write_request(:some_method, "data", {})
272
+ @resource.do_write_request(:some_method, "data")
248
273
  end
249
274
 
250
275
  it 'should make a new request object from the method' do
@@ -252,33 +277,49 @@ describe Resourceful::Resource do
252
277
  @resource.do_write_request(:some_method, "data")
253
278
  end
254
279
 
280
+ describe 'default options' do
281
+ before do
282
+ @resource.default_options = {:foo => :bar}
283
+ end
284
+
285
+ it 'should merge the header with the default options' do
286
+ Resourceful::Request.should_receive(:new).with(anything, anything, anything, :foo => :bar).and_return(@request)
287
+ make_request
288
+ end
289
+
290
+ it 'should override any default header with the request header' do
291
+ Resourceful::Request.should_receive(:new).with(anything, anything, anything, :foo => :baz).and_return(@request)
292
+ @resource.do_write_request(:some_method, "data", :foo => :baz)
293
+ end
294
+ end
295
+
255
296
  describe 'non-success responses' do
256
297
  before do
257
298
  @uri = 'http://www.example.com/code/404'
258
299
  @resource = Resourceful::Resource.new(@accessor, @uri)
259
300
 
260
301
  @redirected_uri = 'http://www.example.com/get'
261
- @redirect_response = mock('redirect_response',
262
- :header => {'Location' => [@redirected_uri]},
263
- :is_redirect? => false,
264
- :is_success? => false,
265
- :is_not_authorized? => false,
266
- :code => 404)
302
+ @response = mock('response',
303
+ :header => {'Location' => [@redirected_uri]},
304
+ :is_redirect? => false,
305
+ :is_success? => false,
306
+ :is_not_authorized? => false,
307
+ :code => 404)
267
308
 
268
- @request.stub!(:response).and_return(@redirect_response, @response)
309
+ @request.stub!(:response).and_return(@response)
269
310
  @request.stub!(:method).and_return(:post)
270
311
  @request.stub!(:uri).and_return('http://www.example.com/code/404')
271
312
  end
272
313
 
273
314
  it 'should raise UnsuccessfulHttpRequestError' do
274
315
  lambda {
275
- @resource.do_write_request(:post, "data", anything)
316
+ @resource.do_write_request(:post, "data")
276
317
  }.should raise_error(Resourceful::UnsuccessfulHttpRequestError)
277
318
  end
278
319
 
279
320
  it 'should give a reasonable error message' do
280
321
  lambda {
281
- @resource.do_write_request(:post, "data", anything)
322
+ @resource.do_write_request(:post, "data")
282
323
  }.should raise_error("post request to <http://www.example.com/code/404> failed with code 404")
283
324
  end
284
325
  end
@@ -123,9 +123,8 @@ end unless defined? AuthorizationResponder
123
123
 
124
124
  describe 'simple http server', :shared => true do
125
125
  before(:all) do
126
- #setup a thin http server we can connect to
127
- require 'thin'
128
126
  require 'rack'
127
+ require 'thin'
129
128
 
130
129
  app = Rack::Builder.new do |env|
131
130
  use Rack::ShowExceptions
@@ -147,8 +146,8 @@ describe 'simple http server', :shared => true do
147
146
  #spawn the server in a separate thread
148
147
  @httpd = Thread.new do
149
148
  Thin::Logging.silent = true
150
- #Thin::Logging.debug = true
151
- Thin::Server.start(app)
149
+ # Thin::Logging.debug = true
150
+ Thin::Server.start(app)
152
151
  end
153
152
  #give the server a chance to initialize
154
153
  sleep 0.05
@@ -56,6 +56,15 @@ describe 'http server' do
56
56
  resp[1]['Foo'].should == ['bar']
57
57
  end
58
58
 
59
+ it 'should allow the Date header to be overridden' do
60
+ uri = URI.escape("http://localhost:3000/header?{Date: \"Thu, 21 Aug 2008 20:00:00 GMT\"}")
61
+ resp = Resourceful::NetHttpAdapter.make_request(:get, uri)
62
+
63
+ resp[1].should have_key('Date')
64
+ resp[1]['Date'].should == ['Thu, 21 Aug 2008 20:00:00 GMT']
65
+ end
66
+
67
+
59
68
  it 'should parse escaped uris properly' do
60
69
  uri = URI.escape("http://localhost:3000/header?{Expire: \"#{Time.now.httpdate}\"}")
61
70
 
data/spec/spec_helper.rb CHANGED
@@ -4,8 +4,7 @@ require 'spec'
4
4
  require 'pp'
5
5
  require 'facets'
6
6
 
7
- #$LOAD_PATH << Pathname(__FILE__).dirname + "../lib"
8
- $LOAD_PATH << File.dirname(__FILE__) + "../lib"
7
+ $LOAD_PATH << Pathname(__FILE__).dirname + "../lib"
9
8
  require 'resourceful/util'
10
9
  require 'resourceful'
11
10
  require 'resourceful/http_accessor'
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resourceful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - Paul Sadauskas & Peter Williams
7
+ - Paul Sadauskas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-07-31 00:00:00 -06:00
12
+ date: 2008-12-05 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -52,26 +52,79 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  version: "0"
54
54
  version:
55
- description: Resourceful provides a convenient Ruby API for making HTTP requests.
55
+ - !ruby/object:Gem::Dependency
56
+ name: andand
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: thin
67
+ type: :development
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ - !ruby/object:Gem::Dependency
76
+ name: yard
77
+ type: :development
78
+ version_requirement:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: "0"
84
+ version:
85
+ description: An HTTP library for Ruby that takes advantage of everything HTTP has to offer.
56
86
  email: psadauskas@gmail.com
57
87
  executables: []
58
88
 
59
89
  extensions: []
60
90
 
61
- extra_rdoc_files: []
62
-
63
- files:
64
- - MIT-LICENSE
91
+ extra_rdoc_files:
92
+ - lib/resourceful.rb
93
+ - lib/resourceful/authentication_manager.rb
94
+ - lib/resourceful/util.rb
95
+ - lib/resourceful/resource.rb
96
+ - lib/resourceful/memcache_cache_manager.rb
97
+ - lib/resourceful/net_http_adapter.rb
98
+ - lib/resourceful/http_accessor.rb
99
+ - lib/resourceful/stubbed_resource_proxy.rb
100
+ - lib/resourceful/header.rb
101
+ - lib/resourceful/cache_manager.rb
102
+ - lib/resourceful/options_interpreter.rb
103
+ - lib/resourceful/response.rb
104
+ - lib/resourceful/request.rb
65
105
  - README.markdown
66
- - Rakefile
106
+ files:
107
+ - lib/resourceful.rb
108
+ - lib/resourceful/authentication_manager.rb
109
+ - lib/resourceful/util.rb
110
+ - lib/resourceful/resource.rb
111
+ - lib/resourceful/memcache_cache_manager.rb
112
+ - lib/resourceful/net_http_adapter.rb
113
+ - lib/resourceful/http_accessor.rb
114
+ - lib/resourceful/stubbed_resource_proxy.rb
115
+ - lib/resourceful/header.rb
116
+ - lib/resourceful/cache_manager.rb
117
+ - lib/resourceful/options_interpreter.rb
118
+ - lib/resourceful/response.rb
119
+ - lib/resourceful/request.rb
67
120
  - spec/acceptance_shared_specs.rb
68
121
  - spec/spec.opts
69
122
  - spec/acceptance_spec.rb
70
123
  - spec/simple_http_server_shared_spec_spec.rb
71
124
  - spec/spec_helper.rb
72
- - spec/resourceful
73
125
  - spec/resourceful/header_spec.rb
74
126
  - spec/resourceful/authentication_manager_spec.rb
127
+ - spec/resourceful/memcache_cache_manager_spec.rb
75
128
  - spec/resourceful/response_spec.rb
76
129
  - spec/resourceful/options_interpreter_spec.rb
77
130
  - spec/resourceful/http_accessor_spec.rb
@@ -81,45 +134,41 @@ files:
81
134
  - spec/resourceful/cache_manager_spec.rb
82
135
  - spec/resourceful/net_http_adapter_spec.rb
83
136
  - spec/simple_http_server_shared_spec.rb
84
- - lib/resourceful.rb
85
- - lib/resourceful
86
- - lib/resourceful/authentication_manager.rb
87
- - lib/resourceful/util.rb
88
- - lib/resourceful/resource.rb
89
- - lib/resourceful/net_http_adapter.rb
90
- - lib/resourceful/version.rb
91
- - lib/resourceful/http_accessor.rb
92
- - lib/resourceful/stubbed_resource_proxy.rb
93
- - lib/resourceful/header.rb
94
- - lib/resourceful/cache_manager.rb
95
- - lib/resourceful/options_interpreter.rb
96
- - lib/resourceful/response.rb
97
- - lib/resourceful/request.rb
98
- has_rdoc: false
99
- homepage: https://github.com/paul/resourceful/tree/master
137
+ - Manifest
138
+ - Rakefile
139
+ - README.markdown
140
+ - MIT-LICENSE
141
+ - resourceful.gemspec
142
+ has_rdoc: true
143
+ homepage: http://github.com/paul/resourceful
100
144
  post_install_message:
101
- rdoc_options: []
102
-
145
+ rdoc_options:
146
+ - --line-numbers
147
+ - --inline-source
148
+ - --title
149
+ - Resourceful
150
+ - --main
151
+ - README.markdown
103
152
  require_paths:
104
153
  - lib
105
154
  required_ruby_version: !ruby/object:Gem::Requirement
106
155
  requirements:
107
156
  - - ">="
108
157
  - !ruby/object:Gem::Version
109
- version: 1.8.6
158
+ version: "0"
110
159
  version:
111
160
  required_rubygems_version: !ruby/object:Gem::Requirement
112
161
  requirements:
113
162
  - - ">="
114
163
  - !ruby/object:Gem::Version
115
- version: "0"
164
+ version: "1.2"
116
165
  version:
117
166
  requirements: []
118
167
 
119
168
  rubyforge_project: resourceful
120
- rubygems_version: 1.2.0
169
+ rubygems_version: 1.3.1
121
170
  signing_key:
122
171
  specification_version: 2
123
- summary: Resourceful provides a convenient Ruby API for making HTTP requests.
172
+ summary: An HTTP library for Ruby that takes advantage of everything HTTP has to offer.
124
173
  test_files: []
125
174
 
@@ -1 +0,0 @@
1
- RESOURCEFUL_VERSION = '0.2'