cabinet/internal/router/router_test.go

44 lines
1.1 KiB
Go

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
}