package router import ( "io" "net/http" "net/http/httptest" "strings" "testing" "github.com/matryer/is" "go.jolheiser.com/cabinet" "go.jolheiser.com/cabinet/internal/workspace/mock" ) func TestRouter(t *testing.T) { assert := is.New(t) m := mock.New() server := httptest.NewUnstartedServer(nil) server.Start() defer server.Close() r := New(server.URL, m, NewLimit(12, 5*1024*1024, 100*1024*1024, 1024*1024)) server.Config.Handler = r c := cabinet.New(server.URL, cabinet.WithHTTPClient(server.Client())) // Redirect redir := "https://duckduckgo.com" u, _, err := c.Redirect(redir) assert.NoErr(err) // Creating a redirect should succeed resp, err := http.Get(u) assert.NoErr(err) assert.Equal(redir, resp.Request.URL.String()) // The redirect should match what was given file := "foobar" f, _, err := c.File("test.txt", strings.NewReader(file)) assert.NoErr(err) // Creating a file should succeed resp, err = http.Get(f) assert.NoErr(err) b, err := io.ReadAll(resp.Body) assert.NoErr(err) assert.Equal(file, string(b)) // The file should match what was given }