44 lines
1.1 KiB
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
|
|
}
|