rfuzz 0.6 → 0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README +18 -17
- data/Rakefile +8 -3
- data/doc/rdoc/classes/RFuzz/Browser.html +229 -0
- data/doc/rdoc/classes/RFuzz/Browser.src/M000068.html +25 -0
- data/doc/rdoc/classes/RFuzz/Browser.src/M000069.html +23 -0
- data/doc/rdoc/classes/RFuzz/Browser.src/M000070.html +24 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.html +10 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000010.html +10 -10
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000011.html +18 -18
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000012.html +36 -35
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000013.html +35 -35
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000014.html +43 -43
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000015.html +22 -22
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000016.html +12 -12
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000017.html +18 -18
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000018.html +4 -4
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000019.html +12 -12
- data/doc/rdoc/classes/RFuzz/HttpEncoding.html +13 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000001.html +12 -12
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000002.html +4 -4
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000003.html +12 -12
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000004.html +4 -4
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000005.html +18 -18
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000006.html +4 -4
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000007.html +6 -6
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000008.html +6 -6
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000009.html +18 -18
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000044.html +3 -3
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000045.html +3 -3
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000046.html +3 -3
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000047.html +3 -3
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000048.html +3 -3
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000049.html +3 -3
- data/doc/rdoc/classes/RFuzz/Session.html +11 -1
- data/doc/rdoc/classes/RFuzz/Session.src/M000020.html +16 -16
- data/doc/rdoc/classes/RFuzz/Session.src/M000021.html +4 -4
- data/doc/rdoc/classes/RFuzz/Session.src/M000022.html +4 -4
- data/doc/rdoc/classes/RFuzz/Session.src/M000023.html +20 -20
- data/doc/rdoc/classes/RFuzz/Session.src/M000024.html +5 -5
- data/doc/rdoc/classes/RFuzz/Session.src/M000025.html +5 -5
- data/doc/rdoc/classes/RFuzz/Session.src/M000026.html +12 -12
- data/doc/rdoc/classes/RFuzz/Session.src/M000027.html +15 -15
- data/doc/rdoc/classes/RFuzz/Session.src/M000028.html +5 -5
- data/doc/rdoc/classes/RFuzz/Session.src/M000029.html +4 -4
- data/doc/rdoc/classes/RFuzz/Session.src/M000030.html +4 -4
- data/doc/rdoc/classes/RFuzz/Session.src/M000031.html +9 -9
- data/doc/rdoc/classes/RFuzz.html +5 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/COPYING.html +1 -1
- data/doc/rdoc/files/LICENSE.html +1 -1
- data/doc/rdoc/files/README.html +23 -24
- data/doc/rdoc/files/lib/rfuzz/browser_rb.html +109 -0
- data/doc/rdoc/files/lib/rfuzz/client_rb.html +2 -1
- data/doc/rdoc/files/lib/rfuzz/random_rb.html +1 -1
- data/doc/rdoc/files/lib/rfuzz/rfuzz_rb.html +1 -1
- data/doc/rdoc/files/lib/rfuzz/session_rb.html +1 -1
- data/doc/rdoc/files/lib/rfuzz/stats_rb.html +1 -1
- data/doc/rdoc/fr_class_index.html +1 -0
- data/doc/rdoc/fr_file_index.html +1 -0
- data/doc/rdoc/fr_method_index.html +9 -6
- data/examples/cl_watcher.rb +36 -0
- data/examples/mongrel_test_suite/test/http/access_authentication.rb +8 -0
- data/examples/mongrel_test_suite/test/http/appendix.rb +76 -0
- data/examples/mongrel_test_suite/test/http/base_protocol.rb +4 -7
- data/examples/mongrel_test_suite/test/http/caching_in_http.rb +140 -0
- data/examples/mongrel_test_suite/test/http/connections.rb +48 -0
- data/examples/mongrel_test_suite/test/http/content_negotiation.rb +20 -0
- data/examples/mongrel_test_suite/test/http/entity.rb +24 -0
- data/examples/mongrel_test_suite/test/http/header_field_definitions.rb +231 -0
- data/examples/mongrel_test_suite/test/http/http_message.rb +122 -0
- data/examples/mongrel_test_suite/test/http/method_definitions.rb +52 -0
- data/examples/mongrel_test_suite/test/http/protocol_parameters.rb +286 -0
- data/examples/mongrel_test_suite/test/http/request.rb +28 -0
- data/examples/mongrel_test_suite/test/http/response.rb +20 -0
- data/examples/mongrel_test_suite/test/http/security_considerations.rb +54 -0
- data/examples/mongrel_test_suite/test/http/status_code_definitions.rb +192 -0
- data/ext/fuzzrnd/fuzzrnd.c +1 -2
- data/lib/rfuzz/browser.rb +53 -0
- data/lib/rfuzz/client.rb +11 -6
- data/lib/rfuzz/session.rb +3 -1
- data/tools/rakehelp.rb +4 -2
- metadata +24 -15
- data/test/coverage/index.html +0 -388
- data/test/coverage/lib-rfuzz-client_rb.html +0 -1127
- data/test/coverage/lib-rfuzz-random_rb.html +0 -739
- data/test/coverage/lib-rfuzz-session_rb.html +0 -783
- data/test/coverage/lib-rfuzz-stats_rb.html +0 -788
- data/test/server.rb +0 -101
- data/test/test_client.rb +0 -164
- data/test/test_fuzzrnd.rb +0 -31
- data/test/test_httpparser.rb +0 -48
- data/test/test_random.rb +0 -75
- data/test/test_session.rb +0 -33
- data/test/test_stats.rb +0 -45
@@ -0,0 +1,140 @@
|
|
1
|
+
require 'rfuzz/session'
|
2
|
+
|
3
|
+
context "13: Caching in HTTP" do
|
4
|
+
setup do
|
5
|
+
@sess = RFuzz::Session.new :host => "localhost", :port => 3000
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "13.1.1: Cache Correctness" do
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
specify "13.1.2: Warnings" do
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
specify "13.1.3: Cache-control Mechanisms" do
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
specify "13.1.4: Explicit User Agent Warnings" do
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
specify "13.1.5: Exceptions to the Rules and Warnings" do
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
specify "13.1.6: Client-controlled Behavior" do
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
specify "13.2: Expiration Model" do
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
specify "13.2.1: Server-Specified Expiration" do
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
specify "13.2.2: Heuristic Expiration" do
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
specify "13.2.3: Age Calculations" do
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
specify "13.2.4: Expiration Calculations" do
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
specify "13.2.5: Disambiguating Expiration Values" do
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
specify "13.2.6: Disambiguating Multiple Responses" do
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
specify "13.3: Validation Model" do
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
specify "13.3.1: Last-Modified Dates" do
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
specify "13.3.2: Entity Tag Cache Validators" do
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
specify "13.3.3: Weak and Strong Validators" do
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
specify "13.3.4: Rules for When to Use Entity Tags and Last-Modified Dates" do
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
specify "13.3.5: Non-validating Conditionals" do
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
specify "13.4: Response Cacheability" do
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
specify "13.5: Constructing Responses From Caches" do
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
specify "13.5.1: End-to-end and Hop-by-hop Headers" do
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
specify "13.5.2: Non-modifiable Headers" do
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
specify "13.5.3: Combining Headers" do
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
specify "13.5.4: Combining Byte Ranges" do
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
specify "13.6: Caching Negotiated Responses" do
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
specify "13.7: Shared and Non-Shared Caches" do
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
specify "13.8: Errors or Incomplete Response Cache Behavior" do
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
specify "13.9: Side Effects of GET and HEAD" do
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
specify "13.10: Invalidation After Updates or Deletions" do
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
specify "13.11: Write-Through Mandatory" do
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
specify "13.12: Cache Replacement" do
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
specify "13.13: History Lists" do
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'rfuzz/session'
|
2
|
+
|
3
|
+
context "8: Connections" do
|
4
|
+
setup do
|
5
|
+
@sess = RFuzz::Session.new :host => "localhost", :port => 3000
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "8.1: Persistent Connections" do
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
specify "8.1.1: Purpose" do
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
specify "8.1.2: Overall Operation" do
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
specify "8.1.3: Proxy Servers" do
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
specify "8.1.4: Practical Considerations" do
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
specify "8.2: Message Transmission Requirements" do
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
specify "8.2.1: Persistent Connections and Flow Control" do
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
specify "8.2.2: Monitoring Connections for Error Status Messages" do
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
specify "8.2.3: Use of the 100 (Continue) Status" do
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
specify "8.2.4: Client Behavior if Server Prematurely Closes Connection" do
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rfuzz/session'
|
2
|
+
|
3
|
+
context "12: Content Negotiation" do
|
4
|
+
setup do
|
5
|
+
@sess = RFuzz::Session.new :host => "localhost", :port => 3000
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "12.1: Server-driven Negotiation" do
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
specify "12.2: Agent-driven Negotiation" do
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
specify "12.3: Transparent Negotiation" do
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rfuzz/session'
|
2
|
+
|
3
|
+
context "7: Entity" do
|
4
|
+
setup do
|
5
|
+
@sess = RFuzz::Session.new :host => "localhost", :port => 3000
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "7.1: Entity Header Fields" do
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
specify "7.2: Entity Body" do
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
specify "7.2.1: Type" do
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
specify "7.2.2: Entity Length" do
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,231 @@
|
|
1
|
+
require 'rfuzz/session'
|
2
|
+
|
3
|
+
context "14: Header Field Definitions" do
|
4
|
+
setup do
|
5
|
+
@sess = RFuzz::Session.new :host => "localhost", :port => 3000
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "14.1: Accept" do
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
specify "14.2: Accept-Charset" do
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
specify "14.3: Accept-Encoding" do
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
specify "14.4: Accept-Language" do
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
specify "14.5: Accept-Ranges" do
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
specify "14.6: Age" do
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
specify "14.7: Allow" do
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
specify "14.8: Authorization" do
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
specify "14.9: Cache-Control" do
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
specify "14.9.1: What is Cacheable" do
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
specify "14.9.2: What May be Stored by Caches" do
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
specify "14.9.3: Modifications of the Basic Expiration Mechanism" do
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
specify "14.9.4: Cache Revalidation and Reload Controls" do
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
specify "14.9.5: No-Transform Directive" do
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
specify "14.9.6: Cache Control Extensions" do
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
specify "14.10: Connection" do
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
specify "14.11: Content-Encoding" do
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
specify "14.12: Content-Language" do
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
specify "14.13: Content-Length" do
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
specify "14.14: Content-Location" do
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
specify "14.15: Content-MD5" do
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
specify "14.16: Content-Range" do
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
specify "14.17: Content-Type" do
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
specify "14.18: Date" do
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
specify "14.18.1: Clockless Origin Server Operation" do
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
specify "14.19: ETag" do
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
specify "14.20: Expect" do
|
113
|
+
end
|
114
|
+
|
115
|
+
|
116
|
+
specify "14.21: Expires" do
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
specify "14.22: From" do
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
specify "14.23: Host" do
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
specify "14.24: If-Match" do
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
specify "14.25: If-Modified-Since" do
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
specify "14.26: If-None-Match" do
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
specify "14.27: If-Range" do
|
141
|
+
end
|
142
|
+
|
143
|
+
|
144
|
+
specify "14.28: If-Unmodified-Since" do
|
145
|
+
end
|
146
|
+
|
147
|
+
|
148
|
+
specify "14.29: Last-Modified" do
|
149
|
+
end
|
150
|
+
|
151
|
+
|
152
|
+
specify "14.30: Location" do
|
153
|
+
end
|
154
|
+
|
155
|
+
|
156
|
+
specify "14.31: Max-Forwards" do
|
157
|
+
end
|
158
|
+
|
159
|
+
|
160
|
+
specify "14.32: Pragma" do
|
161
|
+
end
|
162
|
+
|
163
|
+
|
164
|
+
specify "14.33: Proxy-Authenticate" do
|
165
|
+
end
|
166
|
+
|
167
|
+
|
168
|
+
specify "14.34: Proxy-Authorization" do
|
169
|
+
end
|
170
|
+
|
171
|
+
|
172
|
+
specify "14.35: Range" do
|
173
|
+
end
|
174
|
+
|
175
|
+
|
176
|
+
specify "14.35.1: Byte Ranges" do
|
177
|
+
end
|
178
|
+
|
179
|
+
|
180
|
+
specify "14.35.2: Range Retrieval Requests" do
|
181
|
+
end
|
182
|
+
|
183
|
+
|
184
|
+
specify "14.36: Referer" do
|
185
|
+
end
|
186
|
+
|
187
|
+
|
188
|
+
specify "14.37: Retry-After" do
|
189
|
+
end
|
190
|
+
|
191
|
+
|
192
|
+
specify "14.38: Server" do
|
193
|
+
end
|
194
|
+
|
195
|
+
|
196
|
+
specify "14.39: TE" do
|
197
|
+
end
|
198
|
+
|
199
|
+
|
200
|
+
specify "14.40: Trailer" do
|
201
|
+
end
|
202
|
+
|
203
|
+
|
204
|
+
specify "14.41: Transfer-Encoding" do
|
205
|
+
end
|
206
|
+
|
207
|
+
|
208
|
+
specify "14.42: Upgrade" do
|
209
|
+
end
|
210
|
+
|
211
|
+
|
212
|
+
specify "14.43: User-Agent" do
|
213
|
+
end
|
214
|
+
|
215
|
+
|
216
|
+
specify "14.44: Vary" do
|
217
|
+
end
|
218
|
+
|
219
|
+
|
220
|
+
specify "14.45: Via" do
|
221
|
+
end
|
222
|
+
|
223
|
+
|
224
|
+
specify "14.46: Warning" do
|
225
|
+
end
|
226
|
+
|
227
|
+
|
228
|
+
specify "14.47: WWW-Authenticate" do
|
229
|
+
end
|
230
|
+
|
231
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
require 'rfuzz/session'
|
2
|
+
|
3
|
+
context "4: HTTP Message" do
|
4
|
+
setup do
|
5
|
+
@sess = RFuzz::Session.new :host => "localhost", :port => 3000
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "4.1: Message Types" do
|
9
|
+
# In the interest of robustness, servers SHOULD ignore any empty line(s)
|
10
|
+
# received where a Request-Line is expected.
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
specify "4.2: Message Headers" do
|
15
|
+
# The field value MAY be preceded by any amount of LWS, though a single SP
|
16
|
+
# is preferred.
|
17
|
+
|
18
|
+
# leading or trailing LWS MAY be removed without changing the semantics of
|
19
|
+
# the field value
|
20
|
+
|
21
|
+
# Any LWS that occurs between field-content MAY be replaced with a single
|
22
|
+
# SP before interpreting the field value or forwarding the message
|
23
|
+
# downstream.
|
24
|
+
# RANT: WTF, so the values basically have to be quoted to prevent this?
|
25
|
+
|
26
|
+
# Multiple message-header fields with the same field-name MAY be present in
|
27
|
+
# a message if and only if the entire field-value for that header field is
|
28
|
+
# defined as a comma-separated list
|
29
|
+
|
30
|
+
# It MUST be possible to combine the multiple header fields into one
|
31
|
+
# "field-name: field-value" pair
|
32
|
+
|
33
|
+
# a proxy MUST NOT change the order of these field values when a message is
|
34
|
+
# forwarded
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
specify "4.3: Message Body" do
|
39
|
+
# Transfer-Encoding MUST be used to indicate any transfer-codings applied
|
40
|
+
# by an application to ensure safe and proper transfer of the message
|
41
|
+
|
42
|
+
# Transfer-Encoding MAY be added or removed by any application along the
|
43
|
+
# request/response chain
|
44
|
+
|
45
|
+
# A message-body MUST NOT be included in a request if the specification of
|
46
|
+
# the request method (section 5.1.1) does not allow sending an entity-body
|
47
|
+
# in requests.
|
48
|
+
|
49
|
+
# A server SHOULD read and forward a message-body on any request
|
50
|
+
|
51
|
+
# if the request method does not include defined semantics for an
|
52
|
+
# entity-body, then the message-body SHOULD be ignored when handling the
|
53
|
+
# request
|
54
|
+
|
55
|
+
# All responses to the HEAD request method MUST NOT include a message-body,
|
56
|
+
# even though the presence of entity- header fields might lead one to
|
57
|
+
# believe they do
|
58
|
+
|
59
|
+
# All 1xx (informational), 204 (no content), and 304 (not modified)
|
60
|
+
# responses MUST NOT include a message-body
|
61
|
+
|
62
|
+
# All other responses do include a message-body, although it MAY be of zero
|
63
|
+
# length.
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
specify "4.4: Message Length" do
|
68
|
+
# The Content-Length header field MUST NOT be sent if these two lengths are
|
69
|
+
# different (entity-length & transfer-length)
|
70
|
+
|
71
|
+
# If a message is received with both a Transfer-Encoding header field and a
|
72
|
+
# Content-Length header field, the latter MUST be ignored.
|
73
|
+
|
74
|
+
# "multipart/byteranges" media type MUST NOT be used unless the sender
|
75
|
+
# knows that the recipient can parse it
|
76
|
+
|
77
|
+
# Closing the connection cannot be used to indicate the end of a request
|
78
|
+
# body, since that would leave no possibility for the server to send back a
|
79
|
+
# response.
|
80
|
+
|
81
|
+
# HTTP/1.1 requests containing a message-body MUST include a valid
|
82
|
+
# Content-Length header field unless the server is known to be HTTP/1.1
|
83
|
+
# compliant
|
84
|
+
|
85
|
+
# If a request contains a message-body and a Content-Length is not given,
|
86
|
+
# the server SHOULD respond with 400 (bad request) if it cannot determine
|
87
|
+
# the length of the message, or with 411 (length required) if it wishes to
|
88
|
+
# insist on receiving a valid Content-Length.
|
89
|
+
|
90
|
+
# All HTTP/1.1 applications that receive entities MUST accept the "chunked"
|
91
|
+
# transfer-coding (section 3.6)
|
92
|
+
# RANT: Applications meaning what? clients? servers? both?
|
93
|
+
|
94
|
+
# Messages MUST NOT include both a Content-Length header field and a
|
95
|
+
# non-identity transfer-coding.
|
96
|
+
|
97
|
+
# If the message does include a non- identity transfer-coding, the
|
98
|
+
# Content-Length MUST be ignored. RANT: They already said that, must be
|
99
|
+
# really important.
|
100
|
+
#
|
101
|
+
# [Content-Length in messages which allow it] MUST exactly match the number
|
102
|
+
# of OCTETs in the message-body.
|
103
|
+
|
104
|
+
# HTTP/1.1 user agents MUST notify the user when an invalid length is
|
105
|
+
# received and detected.
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
specify "4.5: General Header Fields" do
|
110
|
+
# These apply to both requests and responses:
|
111
|
+
# general-header = Cache-Control ; Section 14.9
|
112
|
+
# | Connection ; Section 14.10
|
113
|
+
# | Date ; Section 14.18
|
114
|
+
# | Pragma ; Section 14.32
|
115
|
+
# | Trailer ; Section 14.40
|
116
|
+
# | Transfer-Encoding ; Section 14.41
|
117
|
+
# | Upgrade ; Section 14.42
|
118
|
+
# | Via ; Section 14.45
|
119
|
+
# | Warning ; Section 14.46
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'rfuzz/session'
|
2
|
+
|
3
|
+
context "9: Method Definitions" do
|
4
|
+
setup do
|
5
|
+
@sess = RFuzz::Session.new :host => "localhost", :port => 3000
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "9.1: Safe and Idempotent Methods" do
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
specify "9.1.1: Safe Methods" do
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
specify "9.1.2: Idempotent Methods" do
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
specify "9.2: OPTIONS" do
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
specify "9.3: GET" do
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
specify "9.4: HEAD" do
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
specify "9.5: POST" do
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
specify "9.6: PUT" do
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
specify "9.7: DELETE" do
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
specify "9.8: TRACE" do
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
specify "9.9: CONNECT" do
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
end
|