rfuzz 0.6 → 0.7

Sign up to get free protection for your applications and to get access to all the features.
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