webbed 0.1.1 → 0.2.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/.gitignore +22 -0
- data/.travis.yml +7 -0
- data/.yardopts +6 -0
- data/Gemfile +5 -13
- data/Guardfile +5 -0
- data/README.md +36 -31
- data/Rakefile +7 -14
- data/lib/webbed.rb +28 -6
- data/lib/webbed/generic_message.rb +27 -15
- data/lib/webbed/headers.rb +2 -0
- data/lib/webbed/helpers/entity_headers_helper.rb +62 -0
- data/lib/webbed/helpers/method_helper.rb +83 -0
- data/lib/webbed/helpers/rack_request_helper.rb +86 -0
- data/lib/webbed/helpers/rack_response_helper.rb +56 -0
- data/lib/webbed/helpers/request_headers_helper.rb +62 -0
- data/lib/webbed/helpers/request_uri_helper.rb +34 -0
- data/lib/webbed/helpers/response_headers_helper.rb +48 -0
- data/lib/webbed/helpers/scheme_helper.rb +26 -0
- data/lib/webbed/http_version.rb +88 -33
- data/lib/webbed/media_type.rb +160 -0
- data/lib/webbed/method.rb +63 -33
- data/lib/webbed/request.rb +65 -21
- data/lib/webbed/response.rb +65 -24
- data/lib/webbed/status_code.rb +84 -17
- data/lib/webbed/version.rb +1 -1
- data/test/support/assertions.rb +17 -0
- data/test/support/runner.rb +326 -0
- data/test/test_helper.rb +13 -0
- data/test/webbed/generic_message_test.rb +44 -0
- data/test/webbed/headers_test.rb +31 -0
- data/test/webbed/helpers/entity_headers_helper_test.rb +68 -0
- data/test/webbed/helpers/method_helper_test.rb +151 -0
- data/test/webbed/helpers/rack_request_helper_test.rb +108 -0
- data/test/webbed/helpers/rack_response_helper_test.rb +33 -0
- data/test/webbed/helpers/request_headers_helper_test.rb +57 -0
- data/test/webbed/helpers/request_uri_helper_test.rb +32 -0
- data/test/webbed/helpers/response_headers_helper_test.rb +46 -0
- data/test/webbed/helpers/scheme_helper_test.rb +28 -0
- data/test/webbed/http_version_test.rb +52 -0
- data/test/webbed/media_type_test.rb +100 -0
- data/test/webbed/method_test.rb +160 -0
- data/test/webbed/request_test.rb +74 -0
- data/test/webbed/response_test.rb +86 -0
- data/test/webbed/status_code_test.rb +105 -0
- data/webbed.gemspec +31 -0
- metadata +128 -41
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module WebbedTest
|
4
|
+
class HTTPVersionTest < TestCase
|
5
|
+
test '#initialize with string' do
|
6
|
+
version = Webbed::HTTPVersion.new('HTTP/1.1')
|
7
|
+
assert_equal 1, version.major
|
8
|
+
assert_equal 1, version.minor
|
9
|
+
end
|
10
|
+
|
11
|
+
test '#initialize with float' do
|
12
|
+
version = Webbed::HTTPVersion.new(2.0)
|
13
|
+
assert_equal 2, version.major
|
14
|
+
assert_equal 0, version.minor
|
15
|
+
end
|
16
|
+
|
17
|
+
test '#to_s' do
|
18
|
+
assert_equal 'HTTP/2.0', Webbed::HTTPVersion.new('HTTP/2.0').to_s
|
19
|
+
assert_equal 'HTTP/2.0', Webbed::HTTPVersion.new(2.0).to_s
|
20
|
+
end
|
21
|
+
|
22
|
+
test '#to_f' do
|
23
|
+
version = Webbed::HTTPVersion.new('HTTP/2.0')
|
24
|
+
assert_equal 2.0, version.to_f
|
25
|
+
|
26
|
+
version = Webbed::HTTPVersion.new(2.0)
|
27
|
+
assert_equal 2.0, version.to_f
|
28
|
+
end
|
29
|
+
|
30
|
+
test 'comparisons' do
|
31
|
+
one_point_one = Webbed::HTTPVersion.new('HTTP/1.1')
|
32
|
+
two_point_oh1 = Webbed::HTTPVersion.new('HTTP/2.0')
|
33
|
+
two_point_oh2 = Webbed::HTTPVersion.new('HTTP/2.0')
|
34
|
+
|
35
|
+
assert_equal 1.1, one_point_one
|
36
|
+
refute_equal 1.0, one_point_one
|
37
|
+
assert_equal two_point_oh1, two_point_oh2
|
38
|
+
|
39
|
+
assert_comparable one_point_one, two_point_oh1
|
40
|
+
end
|
41
|
+
|
42
|
+
test 'ONE_POINT_ONE' do
|
43
|
+
assert_equal 1, Webbed::HTTPVersion::ONE_POINT_ONE.major
|
44
|
+
assert_equal 1, Webbed::HTTPVersion::ONE_POINT_ONE.minor
|
45
|
+
end
|
46
|
+
|
47
|
+
test 'ONE_POINT_OH' do
|
48
|
+
assert_equal 1, Webbed::HTTPVersion::ONE_POINT_OH.major
|
49
|
+
assert_equal 0, Webbed::HTTPVersion::ONE_POINT_OH.minor
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module WebbedTest
|
4
|
+
class MediaTypeTest < TestCase
|
5
|
+
test '#initialize with only MIME type' do
|
6
|
+
media_type = Webbed::MediaType.new('text/html')
|
7
|
+
|
8
|
+
assert_equal 'text', media_type.type
|
9
|
+
assert_equal 'html', media_type.subtype
|
10
|
+
assert_equal 'text/html', media_type.mime_type
|
11
|
+
assert media_type.parameters.empty?
|
12
|
+
end
|
13
|
+
|
14
|
+
test '#initialize with MIME type and parameters' do
|
15
|
+
media_type = Webbed::MediaType.new('text/html; foo=bar; lol=rofl')
|
16
|
+
|
17
|
+
assert_equal 'text', media_type.type
|
18
|
+
assert_equal 'html', media_type.subtype
|
19
|
+
assert_equal 'text/html', media_type.mime_type
|
20
|
+
assert_equal 'bar', media_type.parameters['foo']
|
21
|
+
assert_equal 'rofl', media_type.parameters['lol']
|
22
|
+
end
|
23
|
+
|
24
|
+
test '#initialize with MIME type and weirdly spaced parameters' do
|
25
|
+
media_type = Webbed::MediaType.new('text/html; foo=bar ; lol=rofl')
|
26
|
+
|
27
|
+
assert_equal 'text', media_type.type
|
28
|
+
assert_equal 'html', media_type.subtype
|
29
|
+
assert_equal 'text/html', media_type.mime_type
|
30
|
+
assert_equal 'bar', media_type.parameters['foo']
|
31
|
+
assert_equal 'rofl', media_type.parameters['lol']
|
32
|
+
end
|
33
|
+
|
34
|
+
test '#mime_type' do
|
35
|
+
media_type = Webbed::MediaType.new('text/html; foo=bar; lol=rofl')
|
36
|
+
media_type.mime_type = 'application/json'
|
37
|
+
|
38
|
+
assert_equal 'application', media_type.type
|
39
|
+
assert_equal 'json', media_type.subtype
|
40
|
+
assert_equal 'application/json', media_type.mime_type
|
41
|
+
end
|
42
|
+
|
43
|
+
test '#type' do
|
44
|
+
media_type = Webbed::MediaType.new('text/html; foo=bar; lol=rofl')
|
45
|
+
media_type.type = 'image'
|
46
|
+
|
47
|
+
assert_equal 'image', media_type.type
|
48
|
+
assert_equal 'html', media_type.subtype
|
49
|
+
assert_equal 'image/html', media_type.mime_type
|
50
|
+
end
|
51
|
+
|
52
|
+
test '#subtype' do
|
53
|
+
media_type = Webbed::MediaType.new('text/html; foo=bar; lol=rofl')
|
54
|
+
media_type.subtype = 'xml'
|
55
|
+
|
56
|
+
assert_equal 'text', media_type.type
|
57
|
+
assert_equal 'xml', media_type.subtype
|
58
|
+
assert_equal 'text/xml', media_type.mime_type
|
59
|
+
end
|
60
|
+
|
61
|
+
test '#parameters' do
|
62
|
+
media_type = Webbed::MediaType.new('text/html; foo=bar; lol=rofl')
|
63
|
+
media_type.parameters = { 'test' => 'lol' }
|
64
|
+
|
65
|
+
assert_equal 'lol', media_type.parameters['test']
|
66
|
+
end
|
67
|
+
|
68
|
+
test '#to_s' do
|
69
|
+
assert_equal 'text/html', Webbed::MediaType.new('text/html').to_s
|
70
|
+
|
71
|
+
media_type_string = Webbed::MediaType.new('text/html; foo=bar; lol=rofl').to_s
|
72
|
+
assert media_type_string.include?('; lol=rofl')
|
73
|
+
assert media_type_string.include?('; foo=bar')
|
74
|
+
assert media_type_string.include?('text/html')
|
75
|
+
end
|
76
|
+
|
77
|
+
test '#vendor_specific?' do
|
78
|
+
refute Webbed::MediaType.new('text/html; foo=bar; lol=rofl').vendor_specific?
|
79
|
+
assert Webbed::MediaType.new('application/vnd.lol+xml').vendor_specific?
|
80
|
+
end
|
81
|
+
|
82
|
+
test '#suffix' do
|
83
|
+
suffixed = Webbed::MediaType.new('application/atom+xml')
|
84
|
+
assert_equal 'xml', suffixed.suffix
|
85
|
+
assert_includes suffixed.interpretable_as, 'application/xml'
|
86
|
+
assert_includes suffixed.interpretable_as, 'application/atom+xml'
|
87
|
+
|
88
|
+
not_suffixed = Webbed::MediaType.new('text/html')
|
89
|
+
assert_nil not_suffixed.suffix
|
90
|
+
assert_includes not_suffixed.interpretable_as, 'text/html'
|
91
|
+
end
|
92
|
+
|
93
|
+
test 'equality' do
|
94
|
+
json = Webbed::MediaType.new('application/json')
|
95
|
+
|
96
|
+
assert_equal Webbed::MediaType.new('application/json'), json
|
97
|
+
refute_equal Webbed::MediaType.new('text/html'), json
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module WebbedTest
|
4
|
+
class MethodTest < TestCase
|
5
|
+
test '#initialize without options' do
|
6
|
+
fake = Webbed::Method.new('FAKE')
|
7
|
+
|
8
|
+
assert_equal 'FAKE', fake.to_s
|
9
|
+
refute fake.safe?
|
10
|
+
refute fake.idempotent?
|
11
|
+
assert_includes fake.allowable_entities, :request
|
12
|
+
assert_includes fake.allowable_entities, :response
|
13
|
+
end
|
14
|
+
|
15
|
+
test '#initialize a safe Method' do
|
16
|
+
fake = Webbed::Method.new('FAKE', :safe => true)
|
17
|
+
assert fake.safe?
|
18
|
+
assert fake.idempotent?
|
19
|
+
end
|
20
|
+
|
21
|
+
test '#initialize an idempotent Method' do
|
22
|
+
fake = Webbed::Method.new('FAKE', :idempotent => true)
|
23
|
+
refute fake.safe?
|
24
|
+
assert fake.idempotent?
|
25
|
+
end
|
26
|
+
|
27
|
+
test '#initialize an unsafe Method' do
|
28
|
+
fake = Webbed::Method.new('FAKE', :safe => false)
|
29
|
+
refute fake.safe?
|
30
|
+
refute fake.idempotent?
|
31
|
+
end
|
32
|
+
|
33
|
+
test '#initialize a headers-only Method' do
|
34
|
+
fake = Webbed::Method.new('FAKE', :allowable_entities => [])
|
35
|
+
refute_includes fake.allowable_entities, :request
|
36
|
+
refute_includes fake.allowable_entities, :response
|
37
|
+
end
|
38
|
+
|
39
|
+
test '#initialize a response-entity-only Method' do
|
40
|
+
fake = Webbed::Method.new('FAKE', :allowable_entities => [:response])
|
41
|
+
refute_includes fake.allowable_entities, :request
|
42
|
+
assert_includes fake.allowable_entities, :response
|
43
|
+
end
|
44
|
+
|
45
|
+
test '#initialize a two-entity Method' do
|
46
|
+
fake = Webbed::Method.new('FAKE', :allowable_entities => [:request, :response])
|
47
|
+
assert_includes fake.allowable_entities, :request
|
48
|
+
assert_includes fake.allowable_entities, :response
|
49
|
+
end
|
50
|
+
|
51
|
+
test 'cached Methods' do
|
52
|
+
assert_same Webbed::Method::OPTIONS, Webbed::Method.new('OPTIONS')
|
53
|
+
assert_same Webbed::Method::GET, Webbed::Method.new('GET')
|
54
|
+
assert_same Webbed::Method::HEAD, Webbed::Method.new('HEAD')
|
55
|
+
assert_same Webbed::Method::POST, Webbed::Method.new('POST')
|
56
|
+
assert_same Webbed::Method::PUT, Webbed::Method.new('PUT')
|
57
|
+
assert_same Webbed::Method::DELETE, Webbed::Method.new('DELETE')
|
58
|
+
assert_same Webbed::Method::TRACE, Webbed::Method.new('TRACE')
|
59
|
+
assert_same Webbed::Method::CONNECT, Webbed::Method.new('CONNECT')
|
60
|
+
assert_same Webbed::Method::PATCH, Webbed::Method.new('PATCH')
|
61
|
+
end
|
62
|
+
|
63
|
+
test 'equality' do
|
64
|
+
fake = Webbed::Method.new('FAKE')
|
65
|
+
|
66
|
+
assert_equal Webbed::Method.new('FAKE'), fake
|
67
|
+
refute_equal Webbed::Method::POST, fake
|
68
|
+
end
|
69
|
+
|
70
|
+
test 'OPTIONS' do
|
71
|
+
method = Webbed::Method::OPTIONS
|
72
|
+
|
73
|
+
assert_equal 'OPTIONS', method.to_s
|
74
|
+
assert method.safe?
|
75
|
+
assert method.idempotent?
|
76
|
+
refute_includes method.allowable_entities, :request
|
77
|
+
assert_includes method.allowable_entities, :response
|
78
|
+
end
|
79
|
+
|
80
|
+
test 'GET' do
|
81
|
+
method = Webbed::Method::GET
|
82
|
+
|
83
|
+
assert_equal 'GET', method.to_s
|
84
|
+
assert method.safe?
|
85
|
+
assert method.idempotent?
|
86
|
+
refute_includes method.allowable_entities, :request
|
87
|
+
assert_includes method.allowable_entities, :response
|
88
|
+
end
|
89
|
+
|
90
|
+
test 'HEAD' do
|
91
|
+
method = Webbed::Method::HEAD
|
92
|
+
|
93
|
+
assert_equal 'HEAD', method.to_s
|
94
|
+
assert method.safe?
|
95
|
+
assert method.idempotent?
|
96
|
+
refute_includes method.allowable_entities, :request
|
97
|
+
refute_includes method.allowable_entities, :response
|
98
|
+
end
|
99
|
+
|
100
|
+
test 'POST' do
|
101
|
+
method = Webbed::Method::POST
|
102
|
+
|
103
|
+
assert_equal 'POST', method.to_s
|
104
|
+
refute method.safe?
|
105
|
+
refute method.idempotent?
|
106
|
+
assert_includes method.allowable_entities, :request
|
107
|
+
assert_includes method.allowable_entities, :response
|
108
|
+
end
|
109
|
+
|
110
|
+
test 'PUT' do
|
111
|
+
method = Webbed::Method::PUT
|
112
|
+
|
113
|
+
assert_equal 'PUT', method.to_s
|
114
|
+
refute method.safe?
|
115
|
+
assert method.idempotent?
|
116
|
+
assert_includes method.allowable_entities, :request
|
117
|
+
assert_includes method.allowable_entities, :response
|
118
|
+
end
|
119
|
+
|
120
|
+
test 'DELETE' do
|
121
|
+
method = Webbed::Method::DELETE
|
122
|
+
|
123
|
+
assert_equal 'DELETE', method.to_s
|
124
|
+
refute method.safe?
|
125
|
+
assert method.idempotent?
|
126
|
+
refute_includes method.allowable_entities, :request
|
127
|
+
assert_includes method.allowable_entities, :response
|
128
|
+
end
|
129
|
+
|
130
|
+
test 'TRACE' do
|
131
|
+
method = Webbed::Method::TRACE
|
132
|
+
|
133
|
+
assert_equal 'TRACE', method.to_s
|
134
|
+
assert method.safe?
|
135
|
+
assert method.idempotent?
|
136
|
+
refute_includes method.allowable_entities, :request
|
137
|
+
assert_includes method.allowable_entities, :response
|
138
|
+
end
|
139
|
+
|
140
|
+
test 'CONNECT' do
|
141
|
+
method = Webbed::Method::CONNECT
|
142
|
+
|
143
|
+
assert_equal 'CONNECT', method.to_s
|
144
|
+
refute method.safe?
|
145
|
+
refute method.idempotent?
|
146
|
+
assert_includes method.allowable_entities, :request
|
147
|
+
assert_includes method.allowable_entities, :response
|
148
|
+
end
|
149
|
+
|
150
|
+
test 'PATCH' do
|
151
|
+
method = Webbed::Method::PATCH
|
152
|
+
|
153
|
+
assert_equal 'PATCH', method.to_s
|
154
|
+
refute method.safe?
|
155
|
+
refute method.idempotent?
|
156
|
+
assert_includes method.allowable_entities, :request
|
157
|
+
assert_includes method.allowable_entities, :response
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module WebbedTest
|
4
|
+
class RequestTest < TestCase
|
5
|
+
test '#initialize without options' do
|
6
|
+
request = Webbed::Request.new(
|
7
|
+
'POST',
|
8
|
+
'http://google.com',
|
9
|
+
{ 'Content-Type' => 'text/plain' },
|
10
|
+
'Test 1 2 3'
|
11
|
+
)
|
12
|
+
|
13
|
+
assert_equal Webbed::Method::POST, request.method
|
14
|
+
assert_instance_of Addressable::URI, request.request_uri
|
15
|
+
assert_equal 'http://google.com', request.request_uri.to_s
|
16
|
+
assert_equal 'text/plain', request.headers['Content-Type']
|
17
|
+
assert_equal 'Test 1 2 3', request.entity_body
|
18
|
+
assert_equal Webbed::HTTPVersion::ONE_POINT_ONE, request.http_version
|
19
|
+
assert_equal 'http', request.scheme
|
20
|
+
end
|
21
|
+
|
22
|
+
test '#initialize with an HTTP Version' do
|
23
|
+
request = Webbed::Request.new(
|
24
|
+
'POST',
|
25
|
+
'http://google.com',
|
26
|
+
{ 'Content-Type' => 'text/plain' },
|
27
|
+
'Test 1 2 3',
|
28
|
+
:http_version => 1.0
|
29
|
+
)
|
30
|
+
|
31
|
+
assert_equal Webbed::HTTPVersion::ONE_POINT_OH, request.http_version
|
32
|
+
end
|
33
|
+
|
34
|
+
test '#initialize with a scheme' do
|
35
|
+
request = Webbed::Request.new(
|
36
|
+
'POST',
|
37
|
+
'http://google.com',
|
38
|
+
{ 'Content-Type' => 'text/plain' },
|
39
|
+
'Test 1 2 3',
|
40
|
+
:scheme => 'https'
|
41
|
+
)
|
42
|
+
|
43
|
+
assert_equal 'https', request.scheme
|
44
|
+
end
|
45
|
+
|
46
|
+
test '#method' do
|
47
|
+
request = Webbed::Request.new(
|
48
|
+
'POST',
|
49
|
+
'http://google.com',
|
50
|
+
{ 'Content-Type' => 'text/plain' },
|
51
|
+
'Test 1 2 3'
|
52
|
+
)
|
53
|
+
|
54
|
+
request.method = 'GET'
|
55
|
+
|
56
|
+
assert_instance_of Webbed::Method, request.method
|
57
|
+
assert_equal Webbed::Method::GET, request.method
|
58
|
+
|
59
|
+
assert_instance_of Method, request.method(:__send__)
|
60
|
+
end
|
61
|
+
|
62
|
+
test '#scheme' do
|
63
|
+
request = Webbed::Request.new(
|
64
|
+
'POST',
|
65
|
+
'http://google.com',
|
66
|
+
{ 'Content-Type' => 'text/plain' },
|
67
|
+
'Test 1 2 3'
|
68
|
+
)
|
69
|
+
|
70
|
+
request.scheme = 'https'
|
71
|
+
assert_equal 'https', request.scheme
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module WebbedTest
|
4
|
+
class ResponseTest < TestCase
|
5
|
+
test '#initialize without options' do
|
6
|
+
response = Webbed::Response.new(
|
7
|
+
404,
|
8
|
+
{ 'Content-Type' => 'text/plain' },
|
9
|
+
'Test 1 2 3'
|
10
|
+
)
|
11
|
+
|
12
|
+
assert_equal 'text/plain', response.headers['Content-Type']
|
13
|
+
assert_equal 'Test 1 2 3', response.entity_body
|
14
|
+
assert_equal Webbed::HTTPVersion::ONE_POINT_ONE, response.http_version
|
15
|
+
end
|
16
|
+
|
17
|
+
test '#initialize with a Reason Phrase' do
|
18
|
+
response = Webbed::Response.new(
|
19
|
+
'200 LOLOL',
|
20
|
+
{},
|
21
|
+
'Test 1 2 3'
|
22
|
+
)
|
23
|
+
|
24
|
+
assert_equal 'LOLOL', response.reason_phrase
|
25
|
+
|
26
|
+
assert_instance_of Webbed::StatusCode, response.status_code
|
27
|
+
assert_equal 200, response.status_code
|
28
|
+
end
|
29
|
+
|
30
|
+
test '#initialize without a Reason Phrase' do
|
31
|
+
response = Webbed::Response.new(
|
32
|
+
404,
|
33
|
+
{},
|
34
|
+
'Test 1 2 3'
|
35
|
+
)
|
36
|
+
|
37
|
+
assert_equal 'Not Found', response.reason_phrase
|
38
|
+
|
39
|
+
assert_instance_of Webbed::StatusCode, response.status_code
|
40
|
+
assert_equal 404, response.status_code
|
41
|
+
end
|
42
|
+
|
43
|
+
test '#initialize with an HTTP Version' do
|
44
|
+
response = Webbed::Response.new(
|
45
|
+
404,
|
46
|
+
{},
|
47
|
+
'Test 1 2 3',
|
48
|
+
:http_version => 1.0
|
49
|
+
)
|
50
|
+
|
51
|
+
assert_equal Webbed::HTTPVersion::ONE_POINT_OH, response.http_version
|
52
|
+
end
|
53
|
+
|
54
|
+
test '#status_code' do
|
55
|
+
response = Webbed::Response.new(
|
56
|
+
404,
|
57
|
+
{},
|
58
|
+
'Test 1 2 3'
|
59
|
+
)
|
60
|
+
|
61
|
+
assert_instance_of Webbed::StatusCode, response.status_code
|
62
|
+
assert_equal 404, response.status_code
|
63
|
+
|
64
|
+
response.status_code = 100
|
65
|
+
|
66
|
+
assert_instance_of Webbed::StatusCode, response.status_code
|
67
|
+
assert_equal 100, response.status_code
|
68
|
+
end
|
69
|
+
|
70
|
+
test '#reason_phrase' do
|
71
|
+
response = Webbed::Response.new(
|
72
|
+
500,
|
73
|
+
{},
|
74
|
+
'Test 1 2 3'
|
75
|
+
)
|
76
|
+
|
77
|
+
assert_equal 'Internal Server Error', response.reason_phrase
|
78
|
+
|
79
|
+
response.status_code = 404
|
80
|
+
assert_equal 'Not Found', response.reason_phrase
|
81
|
+
|
82
|
+
response.reason_phrase = 'FOOBAR'
|
83
|
+
assert_equal 'FOOBAR', response.reason_phrase
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|