package test import ( "github.com/stretchr/testify/require" "bytes" "fmt" "io" "math/rand" "net/http" "net/http/httptest" "testing" "mstore/app/router" "mstore/app/server" ) func MakeServer(t *testing.T) *server.Server { var err error srv, err := server.NewServer() require.NoError(t, err) err = srv.Configure() require.NoError(t, err) err = srv.Build() require.NoError(t, err) return srv } func TestFileLife(t *testing.T) { } func xxxTestFileExists(t *testing.T) { var err error srv := MakeServer(t) require.NotNil(t, srv) reqPath := `/v3/api/file/foo/bare` routePath := `/v3/api/file/{filepath}` rout := router.NewRouter() hand := srv.Handler() require.NotNil(t, hand) rout.Head(routePath, hand.FileExists) request, err := http.NewRequest("HEAD", reqPath, nil) require.NoError(t, err) recorder := httptest.NewRecorder() rout.ServeHTTP(recorder, request) require.Equal(t, http.StatusNotFound, recorder.Code) fmt.Printf("Response code: %d\n", recorder.Code) bodyReader := recorder.Body bodyBytes, err := io.ReadAll(bodyReader) fmt.Printf("Response body: %s\n", string(bodyBytes)) } func TestPutFile(t *testing.T) { var err error srv := MakeServer(t) require.NotNil(t, srv) reqPath := `/v3/api/file/foo/bare` routePath := `/v3/api/file/{filepath}` rout := router.NewRouter() hand := srv.Handler() require.NotNil(t, hand) rout.Put(routePath, hand.PutFile) datasize := 16 filedata := make([]byte, datasize) _, err = rand.Read(filedata) require.NoError(t, err) source := bytes.NewReader(filedata) request, err := http.NewRequest("PUT", reqPath, source) require.NoError(t, err) request.Header.Set("Content-Length", fmt.Sprintf("%d", datasize)) request.Header.Set("Content-Type", "application/octet-stream") recorder := httptest.NewRecorder() rout.ServeHTTP(recorder, request) require.Equal(t, http.StatusOK, recorder.Code) fmt.Printf("Response code: %d\n", recorder.Code) bodyReader := recorder.Body bodyBytes, err := io.ReadAll(bodyReader) fmt.Printf("Response body: %s\n", string(bodyBytes)) } func xxxTestServiceHello(t *testing.T) { var err error srv := MakeServer(t) require.NotNil(t, srv) reqPath := "/service/hello" routePath := "/service/hello" rout := router.NewRouter() hand := srv.Handler() rout.Get(routePath, hand.SendHello) request, err := http.NewRequest("GET", reqPath, nil) require.NoError(t, err) recorder := httptest.NewRecorder() rout.ServeHTTP(recorder, request) require.Equal(t, http.StatusOK, recorder.Code) fmt.Printf("Response code: %d\n", recorder.Code) bodyReader := recorder.Body bodyBytes, err := io.ReadAll(bodyReader) fmt.Printf("Response body: %s\n", string(bodyBytes)) }