forked from projectdiscovery/simplehttpserver
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpythonliststyle_test.go
More file actions
75 lines (65 loc) · 1.68 KB
/
pythonliststyle_test.go
File metadata and controls
75 lines (65 loc) · 1.68 KB
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
package test
import (
"bytes"
"github.com/projectdiscovery/simplehttpserver/pkg/httpserver"
"io"
"net/http/httptest"
"os"
"strings"
"testing"
)
func TestServePythonStyleHtmlPageForDirectories(t *testing.T) {
const want = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Directory listing for /</title>
</head>
<body>
<h1>Directory listing for /</h1>
<hr>
<ul>
<li><a href="test%20file.txt">test file.txt</a></li>
</ul>
<hr>
</body>
</html>
`
py := httpserver.PythonStyle("./fixture/pythonliststyle")
w := httptest.NewRecorder()
py.ServeHTTP(w, httptest.NewRequest("GET", "http://example.com/", nil))
b, _ := io.ReadAll(w.Result().Body)
body := string(b)
if strings.Compare(want, body) != 0 {
t.Errorf("want:\n%s\ngot:\n%s", want, body)
}
}
func TestServeFileContentForFiles(t *testing.T) {
want, _ := os.ReadFile("./fixture/pythonliststyle/test file.txt")
py := httpserver.PythonStyle("./fixture/pythonliststyle")
w := httptest.NewRecorder()
py.ServeHTTP(w, httptest.NewRequest(
"GET",
"http://example.com/test%20file.txt",
nil,
))
got, _ := io.ReadAll(w.Result().Body)
if !bytes.Equal(want, got) {
t.Errorf("want:\n%x\ngot:\n%x", want, got)
}
}
func TestResponseNotFound(t *testing.T) {
const want = `404 page not found
`
py := httpserver.PythonStyle("./fixture/pythonliststyle")
w := httptest.NewRecorder()
py.ServeHTTP(w, httptest.NewRequest(
"GET",
"http://example.com/does-not-exist.txt",
nil,
))
got, _ := io.ReadAll(w.Result().Body)
if strings.Compare(want, string(got)) != 0 {
t.Errorf("want:\n%s\ngot:\n%s", want, got)
}
}