httpdir - directory_test.go
1 package httpdir
2
3 import (
4 "io"
5 "io/fs"
6 "testing"
7 "time"
8 )
9
10 func TestDirectory(t *testing.T) {
11 d := dir{}
12 _, err := d.Open()
13 if err != fs.ErrPermission {
14 t.Errorf("expecting permission error, got: %s", err)
15 }
16 if d.Mode() != ModeDir {
17 t.Errorf("expecting mode %v, got %v", ModeDir, d.Mode())
18 }
19 mt := time.Now()
20 d = dir{
21 index: true,
22 contents: map[string]Node{
23 "file1": FileString("Hello, World!", mt.Add(-1*time.Hour)),
24 "file2": FileString("FooBarBaz", mt.Add(-2*time.Hour)),
25 },
26 modTime: mt,
27 }
28 if !d.ModTime().Equal(mt) {
29 t.Errorf("expecting modTime %v, got %v", mt, d.ModTime())
30 }
31 f, err := d.Open()
32 if err != nil {
33 t.Errorf("unexpected error: %s", err)
34 return
35 }
36 c, err := f.Readdir(-1)
37 if err != nil {
38 t.Errorf("unexpected error: %s", err)
39 return
40 }
41 if len(c) != 2 {
42 t.Errorf("expecting 2 items, got %d", len(c))
43 return
44 }
45 if c[0].Name() != "file1" {
46 t.Errorf("expecting file with name \"file1\", got %q", c[0].Name())
47 }
48 if c[1].Name() != "file2" {
49 t.Errorf("expecting file with name \"file2\", got %q", c[1].Name())
50 }
51 _, err = f.Readdir(1)
52 if err != io.EOF {
53 t.Errorf("expected error EOF, got %s", err)
54 return
55 }
56 _, err = f.Seek(0, 0)
57 if err != nil {
58 t.Errorf("unexpected error: %s", err)
59 return
60 }
61 c, err = f.Readdir(1)
62 if err != nil {
63 t.Errorf("unexpected error: %s", err)
64 return
65 }
66 if len(c) != 1 {
67 t.Errorf("expecting 1 item, got %d", len(c))
68 return
69 }
70 if c[0].Name() != "file1" {
71 t.Errorf("expecting file with name \"file1\", got %q", c[0].Name())
72 }
73 c, err = f.Readdir(1)
74 if err != nil {
75 t.Errorf("unexpected error: %s", err)
76 return
77 }
78 if len(c) != 1 {
79 t.Errorf("expecting 1 item, got %d", len(c))
80 return
81 }
82 if c[0].Name() != "file2" {
83 t.Errorf("expecting file with name \"file2\", got %q", c[0].Name())
84 }
85 _, err = f.Readdir(1)
86 if err != io.EOF {
87 t.Errorf("expected error EOF, got %s", err)
88 return
89 }
90 }
91