aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/httptest.lua121
1 files changed, 79 insertions, 42 deletions
diff --git a/test/httptest.lua b/test/httptest.lua
index 96c9378..3d0db87 100644
--- a/test/httptest.lua
+++ b/test/httptest.lua
@@ -3,6 +3,29 @@
3-- needs ScriptAlias from /home/c/diego/tec/luasocket/test/cgi 3-- needs ScriptAlias from /home/c/diego/tec/luasocket/test/cgi
4-- to "/luasocket-test-cgi" and "/luasocket-test-cgi/" 4-- to "/luasocket-test-cgi" and "/luasocket-test-cgi/"
5-- needs "AllowOverride AuthConfig" on /home/c/diego/tec/luasocket/test/auth 5-- needs "AllowOverride AuthConfig" on /home/c/diego/tec/luasocket/test/auth
6dofile("noglobals.lua")
7
8local host, proxyh, proxyp, request, response
9local ignore, expect, index, prefix, cgiprefix
10
11local t = socket.time()
12
13host = host or "diego.princeton.edu"
14proxyh = proxyh or "localhost"
15proxyp = proxyp or 3128
16prefix = prefix or "/luasocket-test"
17cgiprefix = cgiprefix or "/luasocket-test-cgi"
18
19local readfile = function(name)
20 local f = io.open(name, "r")
21 if not f then return nil end
22 local s = f:read("*a")
23 f:close()
24 return s
25end
26
27index = readfile("test/index.html")
28
6local similar = function(s1, s2) 29local similar = function(s1, s2)
7 return string.lower(string.gsub(s1 or "", "%s", "")) == 30 return string.lower(string.gsub(s1 or "", "%s", "")) ==
8 string.lower(string.gsub(s2 or "", "%s", "")) 31 string.lower(string.gsub(s2 or "", "%s", ""))
@@ -14,14 +37,6 @@ local fail = function(s)
14 os.exit() 37 os.exit()
15end 38end
16 39
17local readfile = function(name)
18 local f = io.open(name, "r")
19 if not f then return nil end
20 local s = f:read("*a")
21 f:close()
22 return s
23end
24
25local check = function (v, e) 40local check = function (v, e)
26 if v then print("ok") 41 if v then print("ok")
27 else fail(e) end 42 else fail(e) end
@@ -48,23 +63,12 @@ local check_request = function(request, expect, ignore)
48 print("ok") 63 print("ok")
49end 64end
50 65
51local host, request, response, ignore, expect, index, prefix, cgiprefix
52
53local t = socket.time()
54
55host = host or "localhost"
56prefix = prefix or "/luasocket-test"
57cgiprefix = cgiprefix or "/luasocket-test-cgi"
58index = readfile("test/index.html")
59
60io.write("testing request uri correctness: ") 66io.write("testing request uri correctness: ")
61local forth = cgiprefix .. "/request-uri?" .. "this+is+the+query+string" 67local forth = cgiprefix .. "/request-uri?" .. "this+is+the+query+string"
62local back, h, c, e = socket.http.get("http://" .. host .. forth) 68local back, h, c, e = socket.http.get("http://" .. host .. forth)
63if similar(back, forth) then print("ok") 69back = socket.url.parse(back)
64else 70if similar(back.query, "this+is+the+query+string") then print("ok")
65print(h, c, e) 71else fail() end
66fail()
67end
68 72
69io.write("testing query string correctness: ") 73io.write("testing query string correctness: ")
70forth = "this+is+the+query+string" 74forth = "this+is+the+query+string"
@@ -86,7 +90,19 @@ ignore = {
86} 90}
87check_request(request, expect, ignore) 91check_request(request, expect, ignore)
88 92
89socket.http.get("http://" .. host .. prefix .. "/lixo.html") 93io.write("testing redirect loop: ")
94request = {
95 url = "http://" .. host .. cgiprefix .. "/redirect-loop"
96}
97expect = {
98 code = 302
99}
100ignore = {
101 status = 1,
102 headers = 1,
103 body = 1
104}
105check_request(request, expect, ignore)
90 106
91io.write("testing post method: ") 107io.write("testing post method: ")
92-- wanted to test chunked post, but apache doesn't support it... 108-- wanted to test chunked post, but apache doesn't support it...
@@ -107,16 +123,35 @@ ignore = {
107} 123}
108check_request(request, expect, ignore) 124check_request(request, expect, ignore)
109 125
126io.write("testing proxy with post method: ")
127request = {
128 url = "http://" .. host .. cgiprefix .. "/cat",
129 method = "POST",
130 body = index,
131 headers = { ["content-length"] = string.len(index) },
132 port = proxyp,
133 host = proxyh
134}
135expect = {
136 body = index,
137 code = 200
138}
139ignore = {
140 status = 1,
141 headers = 1
142}
143check_request(request, expect, ignore)
144
110io.write("testing simple post function: ") 145io.write("testing simple post function: ")
111body = socket.http.post("http://" .. host .. cgiprefix .. "/cat", index) 146back = socket.http.post("http://" .. host .. cgiprefix .. "/cat", index)
112check(body == index) 147check(back == index)
113 148
114io.write("testing simple post function with table args: ") 149io.write("testing simple post function with table args: ")
115body = socket.http.post { 150back = socket.http.post {
116 url = "http://" .. host .. cgiprefix .. "/cat", 151 url = "http://" .. host .. cgiprefix .. "/cat",
117 body = index 152 body = index
118} 153}
119check(body == index) 154check(back == index)
120 155
121io.write("testing http redirection: ") 156io.write("testing http redirection: ")
122request = { 157request = {
@@ -132,6 +167,22 @@ ignore = {
132} 167}
133check_request(request, expect, ignore) 168check_request(request, expect, ignore)
134 169
170io.write("testing proxy with redirection: ")
171request = {
172 url = "http://" .. host .. prefix,
173 host = proxyh,
174 port = proxyp
175}
176expect = {
177 body = index,
178 code = 200
179}
180ignore = {
181 status = 1,
182 headers = 1
183}
184check_request(request, expect, ignore)
185
135 186
136io.write("testing automatic auth failure: ") 187io.write("testing automatic auth failure: ")
137request = { 188request = {
@@ -150,7 +201,7 @@ check_request(request, expect, ignore)
150io.write("testing http redirection failure: ") 201io.write("testing http redirection failure: ")
151request = { 202request = {
152 url = "http://" .. host .. prefix, 203 url = "http://" .. host .. prefix,
153 stay = 1 204 redirect = false
154} 205}
155expect = { 206expect = {
156 code = 301 207 code = 301
@@ -273,20 +324,6 @@ ignore = {
273} 324}
274check_request(request, expect, ignore) 325check_request(request, expect, ignore)
275 326
276io.write("testing redirect loop: ")
277request = {
278 url = "http://" .. host .. cgiprefix .. "/redirect-loop"
279}
280expect = {
281 code = 302
282}
283ignore = {
284 status = 1,
285 headers = 1,
286 body = 1
287}
288check_request(request, expect, ignore)
289
290io.write("testing wrong scheme: ") 327io.write("testing wrong scheme: ")
291request = { 328request = {
292 url = "wrong://" .. host .. cgiprefix .. "/cat", 329 url = "wrong://" .. host .. cgiprefix .. "/cat",