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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
| | # -*- encoding: binary -*-
require 'test/unit'
require 'stringio'
require 'tempfile'
require 'rack'
module TestRackReadWrite
attr_reader :app
def test_rack_read_write_suffix_mime
@app = Metropolis.new(@app_opts.merge(:encoding => :deflate,
:use => Metropolis::SuffixMime))
basic_rest
o = { :lint => true, :fatal => true }
req = Rack::MockRequest.new(@app)
r = req.put("/asdf.jpg", o.merge(:input => "ASDF"))
assert_equal 201, r.status
assert_equal "text/plain", r.headers["Content-Type"]
assert_equal "Created\n", r.body
r = req.get("/asdf.jpg")
assert_equal 200, r.status
assert_equal "image/jpeg", r.headers["Content-Type"]
assert_equal "ASDF", r.body
r = req.request("HEAD", "/asdf.jpg")
assert_equal 200, r.status
assert_equal "image/jpeg", r.headers["Content-Type"]
assert_equal "", r.body
end
def test_rack_read_write_deflated
@app = Metropolis.new(@app_opts.merge(:encoding => :deflate))
basic_rest
blob = "." * 1024 * 1024
o = { :lint => true, :fatal => true }
req = Rack::MockRequest.new(app)
r = req.put("/asdf", o.merge(:input => blob))
assert_equal 201, r.status
assert_equal "Created\n", r.body
r = req.get("/asdf", o.merge("HTTP_ACCEPT_ENCODING" => "deflate"))
assert_equal 200, r.status
assert_equal "deflate", r.headers['Content-Encoding']
assert r.body.size < blob.size
r = req.get("/asdf", o.merge("HTTP_ACCEPT_ENCODING" => "gzip"))
assert_equal 200, r.status
assert_nil r.headers['Content-Encoding']
assert_equal blob, r.body
end
def test_rack_read_write_gzipped
@app = Metropolis.new(@app_opts.merge(:encoding => :gzip))
basic_rest
blob = "." * 1024 * 1024
o = { :lint => true, :fatal => true }
req = Rack::MockRequest.new(app)
r = req.put("/asdf", o.merge(:input => blob))
assert_equal 201, r.status
assert_equal "Created\n", r.body
r = req.get("/asdf", o.merge("HTTP_ACCEPT_ENCODING" => "gzip"))
assert_equal 200, r.status
assert_equal "gzip", r.headers['Content-Encoding']
assert r.body.size < blob.size
r = req.get("/asdf", o.merge("HTTP_ACCEPT_ENCODING" => "deflate"))
assert_equal 200, r.status
assert_nil r.headers['Content-Encoding']
assert_equal blob, r.body
end
def test_rack_read_write
@app = Metropolis.new(@app_opts)
basic_rest
end
def basic_rest
o = { :lint => true, :fatal => true }
req = Rack::MockRequest.new(app)
r = req.put("/asdf", o.merge(:input=>"ASDF"))
assert_equal 201, r.status
assert_equal "Created\n", r.body
r = req.get("/asdf")
assert_equal 200, r.status
assert_equal "ASDF", r.body
r = req.request("HEAD", "/asdf", {})
assert_equal 200, r.status
assert_equal "", r.body
r = req.delete("/asdf", {})
assert_equal 200, r.status
assert_equal "OK\n", r.body
r = req.get("/asdf")
assert_equal 404, r.status
assert_equal "Not Found\n", r.body
r = req.delete("/asdf", {})
assert_equal 404, r.status
assert_equal "Not Found\n", r.body
r = req.request("HEAD", "/asdf", {})
assert_equal 404, r.status
assert_equal "", r.body
end
def test_rack_readonly
tmp = Metropolis.new(@app_opts)
tmp.close!
@app = Metropolis.new(@app_opts.merge(:readonly => true))
basic_rest_readonly
end
def basic_rest_readonly
o = { :lint => true, :fatal => true }
req = Rack::MockRequest.new(app)
r = req.put("/asdf", o.merge(:input=>"ASDF"))
assert_equal 403, r.status
r = req.get("/asdf")
assert_equal 404, r.status
r = req.request("HEAD", "/asdf", {})
assert_equal 404, r.status
r = req.delete("/asdf", {})
assert_equal 403, r.status
end
end
|