rack-test-rest 0.3.0 → 0.4.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.
- data/README.md +2 -0
- data/VERSION +1 -1
- data/lib/rack-test-rest.rb +43 -28
- data/rack-test-rest.gemspec +8 -8
- metadata +58 -88
data/README.md
CHANGED
@@ -61,6 +61,8 @@ to create either the URI for creating/indexing resources or the URI for a partic
|
|
61
61
|
:root_uri + '/' + :resource + :extension
|
62
62
|
:root_uri + '/' + :resource + '/' + params[:id].to_s + :extension
|
63
63
|
|
64
|
+
Currently JSON is the only supported response Content-Type.
|
65
|
+
|
64
66
|
## `create_resource(params={})`
|
65
67
|
|
66
68
|
Performs a POST to with any specified parameters to `:root_uri/:resource:extension`
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/rack-test-rest.rb
CHANGED
@@ -6,6 +6,25 @@ module Rack
|
|
6
6
|
"#{@rack_test_rest[:root_uri]}/#{@rack_test_rest[:resource]}"
|
7
7
|
end
|
8
8
|
|
9
|
+
def handle_error_code(code)
|
10
|
+
assert_equal(code, last_response.status)
|
11
|
+
|
12
|
+
if @rack_test_rest[:debug]
|
13
|
+
puts "Status: #{last_response.status}" if @rack_test_rest[:debug]
|
14
|
+
puts "Headers:"
|
15
|
+
puts last_response.headers.inspect
|
16
|
+
puts "Body: #{last_response.body}" if @rack_test_rest[:debug]
|
17
|
+
end
|
18
|
+
|
19
|
+
assert_equal 'application/json', last_response.headers['Content-Type']
|
20
|
+
|
21
|
+
if last_response.headers['Content-Length'].to_i > 0
|
22
|
+
JSON.parse(last_response.body)
|
23
|
+
else
|
24
|
+
nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
9
28
|
def create_resource(params={})
|
10
29
|
expected_code = params[:code]
|
11
30
|
params.delete :code
|
@@ -13,17 +32,18 @@ module Rack
|
|
13
32
|
puts "Posting to: '#{resource_uri}#{@rack_test_rest[:extension]}'" if @rack_test_rest[:debug]
|
14
33
|
post "#{resource_uri}#{@rack_test_rest[:extension]}", params
|
15
34
|
|
16
|
-
if expected_code
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
35
|
+
return handle_error_code(expected_code) if expected_code
|
36
|
+
|
37
|
+
if @rack_test_rest[:debug]
|
38
|
+
puts "#{last_response.status}: #{last_response.body}"
|
39
|
+
puts last_response.original_headers["Location"]
|
40
|
+
end
|
41
|
+
|
42
|
+
assert_equal(201, last_response.status)
|
43
|
+
assert_equal 'application/json', last_response.headers['Content-Type']
|
44
|
+
|
45
|
+
if @rack_test_rest[:location]
|
46
|
+
assert last_response.original_headers["Location"] =~ @rack_test_rest[:location]
|
27
47
|
end
|
28
48
|
|
29
49
|
last_response.original_headers["Location"]
|
@@ -44,18 +64,17 @@ module Rack
|
|
44
64
|
puts "GET #{uri} #{params}" if @rack_test_rest[:debug]
|
45
65
|
get uri, params
|
46
66
|
|
67
|
+
return handle_error_code(expected_code) if expected_code
|
68
|
+
|
47
69
|
if @rack_test_rest[:debug]
|
48
70
|
puts "Code: #{last_response.status}"
|
49
71
|
puts "Body: #{last_response.body}"
|
50
72
|
end
|
51
73
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
assert_equal(200, last_response.status)
|
57
|
-
return JSON.parse(last_response.body)
|
58
|
-
end
|
74
|
+
assert_equal 'application/json', last_response.headers['Content-Type']
|
75
|
+
assert_equal(200, last_response.status)
|
76
|
+
|
77
|
+
JSON.parse(last_response.body)
|
59
78
|
end
|
60
79
|
|
61
80
|
def update_resource(params={})
|
@@ -69,23 +88,19 @@ module Rack
|
|
69
88
|
|
70
89
|
put "#{resource_uri}/#{id}#{@rack_test_rest[:extension]}", params
|
71
90
|
|
91
|
+
return handle_error_code(expected_code) if expected_code
|
92
|
+
|
72
93
|
puts "#{last_response.status}: #{last_response.body}" if @rack_test_rest[:debug]
|
73
94
|
|
74
|
-
|
75
|
-
assert_equal(expected_code, last_response.status)
|
76
|
-
else
|
77
|
-
assert_equal(204, last_response.status)
|
78
|
-
end
|
95
|
+
assert_equal(204, last_response.status)
|
79
96
|
end
|
80
97
|
|
81
98
|
def delete_resource(params={})
|
82
99
|
delete "#{resource_uri}/#{params[:id]}#{@rack_test_rest[:extension]}"
|
83
100
|
|
84
|
-
if params[:code]
|
85
|
-
|
86
|
-
|
87
|
-
assert_equal(204, last_response.status)
|
88
|
-
end
|
101
|
+
return handle_error_code(params[:code]) if params[:code]
|
102
|
+
|
103
|
+
assert_equal(204, last_response.status)
|
89
104
|
end
|
90
105
|
|
91
106
|
def paginate_resource(params={})
|
data/rack-test-rest.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.
|
7
|
+
s.name = "rack-test-rest"
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Joseph Ruscio"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2011-10-20"
|
13
|
+
s.description = "rack-test-rest is an extension to rack-test that when combined with Test::Unit simplifies the process of unit testing properly designed RESTful API's."
|
14
|
+
s.email = "joe@ruscio.org"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
17
|
"README.md"
|
@@ -29,11 +29,11 @@ Gem::Specification.new do |s|
|
|
29
29
|
"test/helper.rb",
|
30
30
|
"test/test_rack-test-rest.rb"
|
31
31
|
]
|
32
|
-
s.homepage =
|
32
|
+
s.homepage = "http://github.com/josephruscio/rack-test-rest"
|
33
33
|
s.licenses = ["MIT"]
|
34
34
|
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version =
|
36
|
-
s.summary =
|
35
|
+
s.rubygems_version = "1.8.10"
|
36
|
+
s.summary = "Abstractions for testing RESTful API's with rack-test and Test::Unit."
|
37
37
|
s.test_files = [
|
38
38
|
"test/helper.rb",
|
39
39
|
"test/test_rack-test-rest.rb"
|
metadata
CHANGED
@@ -1,93 +1,69 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-test-rest
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 0
|
10
|
-
version: 0.3.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Joseph Ruscio
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
type: :development
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 3
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
12
|
+
date: 2011-10-20 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
32
15
|
name: shoulda
|
33
|
-
|
34
|
-
|
35
|
-
|
16
|
+
requirement: &2163619080 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
36
22
|
type: :development
|
37
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2163619080
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: bundler
|
27
|
+
requirement: &2163618380 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
29
|
+
requirements:
|
40
30
|
- - ~>
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
hash: 23
|
43
|
-
segments:
|
44
|
-
- 1
|
45
|
-
- 0
|
46
|
-
- 0
|
31
|
+
- !ruby/object:Gem::Version
|
47
32
|
version: 1.0.0
|
48
|
-
name: bundler
|
49
|
-
version_requirements: *id002
|
50
|
-
prerelease: false
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
33
|
type: :development
|
53
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2163618380
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: jeweler
|
38
|
+
requirement: &2163617640 !ruby/object:Gem::Requirement
|
54
39
|
none: false
|
55
|
-
requirements:
|
40
|
+
requirements:
|
56
41
|
- - ~>
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
hash: 7
|
59
|
-
segments:
|
60
|
-
- 1
|
61
|
-
- 5
|
62
|
-
- 2
|
42
|
+
- !ruby/object:Gem::Version
|
63
43
|
version: 1.5.2
|
64
|
-
name: jeweler
|
65
|
-
version_requirements: *id003
|
66
|
-
prerelease: false
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
44
|
type: :development
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
hash: 3
|
75
|
-
segments:
|
76
|
-
- 0
|
77
|
-
version: "0"
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2163617640
|
47
|
+
- !ruby/object:Gem::Dependency
|
78
48
|
name: rcov
|
79
|
-
|
49
|
+
requirement: &2163617040 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
80
56
|
prerelease: false
|
81
|
-
|
57
|
+
version_requirements: *2163617040
|
58
|
+
description: rack-test-rest is an extension to rack-test that when combined with Test::Unit
|
59
|
+
simplifies the process of unit testing properly designed RESTful API's.
|
82
60
|
email: joe@ruscio.org
|
83
61
|
executables: []
|
84
|
-
|
85
62
|
extensions: []
|
86
|
-
|
87
|
-
extra_rdoc_files:
|
63
|
+
extra_rdoc_files:
|
88
64
|
- LICENSE.txt
|
89
65
|
- README.md
|
90
|
-
files:
|
66
|
+
files:
|
91
67
|
- .document
|
92
68
|
- Gemfile
|
93
69
|
- Gemfile.lock
|
@@ -99,40 +75,34 @@ files:
|
|
99
75
|
- rack-test-rest.gemspec
|
100
76
|
- test/helper.rb
|
101
77
|
- test/test_rack-test-rest.rb
|
102
|
-
has_rdoc: true
|
103
78
|
homepage: http://github.com/josephruscio/rack-test-rest
|
104
|
-
licenses:
|
79
|
+
licenses:
|
105
80
|
- MIT
|
106
81
|
post_install_message:
|
107
82
|
rdoc_options: []
|
108
|
-
|
109
|
-
require_paths:
|
83
|
+
require_paths:
|
110
84
|
- lib
|
111
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
112
86
|
none: false
|
113
|
-
requirements:
|
114
|
-
- -
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
|
117
|
-
segments:
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
segments:
|
118
92
|
- 0
|
119
|
-
|
120
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
hash: -210201095594734930
|
94
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
95
|
none: false
|
122
|
-
requirements:
|
123
|
-
- -
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
|
126
|
-
segments:
|
127
|
-
- 0
|
128
|
-
version: "0"
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
129
100
|
requirements: []
|
130
|
-
|
131
101
|
rubyforge_project:
|
132
|
-
rubygems_version: 1.
|
102
|
+
rubygems_version: 1.8.10
|
133
103
|
signing_key:
|
134
104
|
specification_version: 3
|
135
105
|
summary: Abstractions for testing RESTful API's with rack-test and Test::Unit.
|
136
|
-
test_files:
|
106
|
+
test_files:
|
137
107
|
- test/helper.rb
|
138
108
|
- test/test_rack-test-rest.rb
|