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  }