1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
require 'abstract_unit'
class ResponseTest < ActiveSupport::TestCase
def setup
@response = ActionDispatch::Response.new
end
test "simple output" do
@response.body = "Hello, World!"
@response.prepare!
status, headers, body = @response.to_a
assert_equal 200, status
assert_equal({
"Content-Type" => "text/html; charset=utf-8",
"Cache-Control" => "private, max-age=0, must-revalidate",
"ETag" => '"65a8e27d8879283831b664bd8b7f0ad4"',
"Set-Cookie" => "",
"Content-Length" => "13"
}, headers)
parts = []
body.each { |part| parts << part }
assert_equal ["Hello, World!"], parts
end
test "utf8 output" do
@response.body = [1090, 1077, 1089, 1090].pack("U*")
@response.prepare!
status, headers, body = @response.to_a
assert_equal 200, status
assert_equal({
"Content-Type" => "text/html; charset=utf-8",
"Cache-Control" => "private, max-age=0, must-revalidate",
"ETag" => '"ebb5e89e8a94e9dd22abf5d915d112b2"',
"Set-Cookie" => "",
"Content-Length" => "8"
}, headers)
end
test "streaming block" do
@response.body = Proc.new do |response, output|
5.times { |n| output.write(n) }
end
@response.prepare!
status, headers, body = @response.to_a
assert_equal 200, status
assert_equal({
"Content-Type" => "text/html; charset=utf-8",
"Cache-Control" => "no-cache",
"Set-Cookie" => ""
}, headers)
parts = []
body.each { |part| parts << part.to_s }
assert_equal ["0", "1", "2", "3", "4"], parts
end
test "content type" do
[204, 304].each do |c|
@response.status = c.to_s
@response.prepare!
status, headers, body = @response.to_a
assert !headers.has_key?("Content-Type"), "#{c} should not have Content-Type header"
end
[200, 302, 404, 500].each do |c|
@response.status = c.to_s
@response.prepare!
status, headers, body = @response.to_a
assert headers.has_key?("Content-Type"), "#{c} did not have Content-Type header"
end
end
test "does not include Status header" do
@response.status = "200 OK"
@response.prepare!
status, headers, body = @response.to_a
assert !headers.has_key?('Status')
end
end
|