rfuzz 0.6 → 0.7

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.
Files changed (94) hide show
  1. data/README +18 -17
  2. data/Rakefile +8 -3
  3. data/doc/rdoc/classes/RFuzz/Browser.html +229 -0
  4. data/doc/rdoc/classes/RFuzz/Browser.src/M000068.html +25 -0
  5. data/doc/rdoc/classes/RFuzz/Browser.src/M000069.html +23 -0
  6. data/doc/rdoc/classes/RFuzz/Browser.src/M000070.html +24 -0
  7. data/doc/rdoc/classes/RFuzz/HttpClient.html +10 -0
  8. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000010.html +10 -10
  9. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000011.html +18 -18
  10. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000012.html +36 -35
  11. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000013.html +35 -35
  12. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000014.html +43 -43
  13. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000015.html +22 -22
  14. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000016.html +12 -12
  15. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000017.html +18 -18
  16. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000018.html +4 -4
  17. data/doc/rdoc/classes/RFuzz/HttpClient.src/M000019.html +12 -12
  18. data/doc/rdoc/classes/RFuzz/HttpEncoding.html +13 -0
  19. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000001.html +12 -12
  20. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000002.html +4 -4
  21. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000003.html +12 -12
  22. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000004.html +4 -4
  23. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000005.html +18 -18
  24. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000006.html +4 -4
  25. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000007.html +6 -6
  26. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000008.html +6 -6
  27. data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000009.html +18 -18
  28. data/doc/rdoc/classes/RFuzz/Notifier.src/M000044.html +3 -3
  29. data/doc/rdoc/classes/RFuzz/Notifier.src/M000045.html +3 -3
  30. data/doc/rdoc/classes/RFuzz/Notifier.src/M000046.html +3 -3
  31. data/doc/rdoc/classes/RFuzz/Notifier.src/M000047.html +3 -3
  32. data/doc/rdoc/classes/RFuzz/Notifier.src/M000048.html +3 -3
  33. data/doc/rdoc/classes/RFuzz/Notifier.src/M000049.html +3 -3
  34. data/doc/rdoc/classes/RFuzz/Session.html +11 -1
  35. data/doc/rdoc/classes/RFuzz/Session.src/M000020.html +16 -16
  36. data/doc/rdoc/classes/RFuzz/Session.src/M000021.html +4 -4
  37. data/doc/rdoc/classes/RFuzz/Session.src/M000022.html +4 -4
  38. data/doc/rdoc/classes/RFuzz/Session.src/M000023.html +20 -20
  39. data/doc/rdoc/classes/RFuzz/Session.src/M000024.html +5 -5
  40. data/doc/rdoc/classes/RFuzz/Session.src/M000025.html +5 -5
  41. data/doc/rdoc/classes/RFuzz/Session.src/M000026.html +12 -12
  42. data/doc/rdoc/classes/RFuzz/Session.src/M000027.html +15 -15
  43. data/doc/rdoc/classes/RFuzz/Session.src/M000028.html +5 -5
  44. data/doc/rdoc/classes/RFuzz/Session.src/M000029.html +4 -4
  45. data/doc/rdoc/classes/RFuzz/Session.src/M000030.html +4 -4
  46. data/doc/rdoc/classes/RFuzz/Session.src/M000031.html +9 -9
  47. data/doc/rdoc/classes/RFuzz.html +5 -0
  48. data/doc/rdoc/created.rid +1 -1
  49. data/doc/rdoc/files/COPYING.html +1 -1
  50. data/doc/rdoc/files/LICENSE.html +1 -1
  51. data/doc/rdoc/files/README.html +23 -24
  52. data/doc/rdoc/files/lib/rfuzz/browser_rb.html +109 -0
  53. data/doc/rdoc/files/lib/rfuzz/client_rb.html +2 -1
  54. data/doc/rdoc/files/lib/rfuzz/random_rb.html +1 -1
  55. data/doc/rdoc/files/lib/rfuzz/rfuzz_rb.html +1 -1
  56. data/doc/rdoc/files/lib/rfuzz/session_rb.html +1 -1
  57. data/doc/rdoc/files/lib/rfuzz/stats_rb.html +1 -1
  58. data/doc/rdoc/fr_class_index.html +1 -0
  59. data/doc/rdoc/fr_file_index.html +1 -0
  60. data/doc/rdoc/fr_method_index.html +9 -6
  61. data/examples/cl_watcher.rb +36 -0
  62. data/examples/mongrel_test_suite/test/http/access_authentication.rb +8 -0
  63. data/examples/mongrel_test_suite/test/http/appendix.rb +76 -0
  64. data/examples/mongrel_test_suite/test/http/base_protocol.rb +4 -7
  65. data/examples/mongrel_test_suite/test/http/caching_in_http.rb +140 -0
  66. data/examples/mongrel_test_suite/test/http/connections.rb +48 -0
  67. data/examples/mongrel_test_suite/test/http/content_negotiation.rb +20 -0
  68. data/examples/mongrel_test_suite/test/http/entity.rb +24 -0
  69. data/examples/mongrel_test_suite/test/http/header_field_definitions.rb +231 -0
  70. data/examples/mongrel_test_suite/test/http/http_message.rb +122 -0
  71. data/examples/mongrel_test_suite/test/http/method_definitions.rb +52 -0
  72. data/examples/mongrel_test_suite/test/http/protocol_parameters.rb +286 -0
  73. data/examples/mongrel_test_suite/test/http/request.rb +28 -0
  74. data/examples/mongrel_test_suite/test/http/response.rb +20 -0
  75. data/examples/mongrel_test_suite/test/http/security_considerations.rb +54 -0
  76. data/examples/mongrel_test_suite/test/http/status_code_definitions.rb +192 -0
  77. data/ext/fuzzrnd/fuzzrnd.c +1 -2
  78. data/lib/rfuzz/browser.rb +53 -0
  79. data/lib/rfuzz/client.rb +11 -6
  80. data/lib/rfuzz/session.rb +3 -1
  81. data/tools/rakehelp.rb +4 -2
  82. metadata +24 -15
  83. data/test/coverage/index.html +0 -388
  84. data/test/coverage/lib-rfuzz-client_rb.html +0 -1127
  85. data/test/coverage/lib-rfuzz-random_rb.html +0 -739
  86. data/test/coverage/lib-rfuzz-session_rb.html +0 -783
  87. data/test/coverage/lib-rfuzz-stats_rb.html +0 -788
  88. data/test/server.rb +0 -101
  89. data/test/test_client.rb +0 -164
  90. data/test/test_fuzzrnd.rb +0 -31
  91. data/test/test_httpparser.rb +0 -48
  92. data/test/test_random.rb +0 -75
  93. data/test/test_session.rb +0 -33
  94. 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