github.com/falafeljan/pkger@v0.18.0/pkging/pkgtest/http.go (about) 1 package pkgtest 2 3 import ( 4 "io/ioutil" 5 "net/http" 6 "net/http/httptest" 7 "os" 8 "path/filepath" 9 "testing" 10 11 "github.com/markbates/pkger/pkging" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func HTTPTest(t *testing.T, ref *Ref, pkg pkging.Pkger) { 16 r := require.New(t) 17 18 _, err := LoadFiles("/public", ref, pkg) 19 r.NoError(err) 20 21 defer os.RemoveAll(ref.Dir) 22 23 fp := filepath.Join(ref.Dir, "public") 24 gots := httptest.NewServer(http.FileServer(http.Dir(fp))) 25 defer gots.Close() 26 27 dir, err := pkg.Open("/public") 28 r.NoError(err) 29 30 pkgts := httptest.NewServer(http.FileServer(dir)) 31 defer pkgts.Close() 32 33 paths := []string{ 34 "/", 35 "/index.html", 36 "/images", 37 "/images/img1.png", 38 } 39 40 for _, path := range paths { 41 t.Run(path, func(st *testing.T) { 42 r := require.New(st) 43 44 gores, err := http.Get(gots.URL + path) 45 r.NoError(err) 46 47 pkgres, err := http.Get(pkgts.URL + path) 48 r.NoError(err) 49 50 r.Equal(gores.StatusCode, pkgres.StatusCode) 51 52 gobody, err := ioutil.ReadAll(gores.Body) 53 r.NoError(err) 54 55 pkgbody, err := ioutil.ReadAll(pkgres.Body) 56 r.NoError(err) 57 58 exp := string(gobody) 59 act := string(pkgbody) 60 r.Equal(exp, act) 61 // exp := strings.ReplaceAll(string(gobody), tdir, "") 62 // exp = clean(exp) 63 // r.Equal(exp, clean(string(pkgbody))) 64 }) 65 } 66 }