package sharedhost_test import ( "context" "net/url" "testing" "github.com/stretchr/testify/assert" "tildegit.org/tjp/gus" "tildegit.org/tjp/gus/contrib/sharedhost" ) func TestReplaceTilde(t *testing.T) { tests := []struct { replacement string inputURL string replacedPath string }{ { replacement: "users/", inputURL: "gemini://domain.com/~username/foo/bar", replacedPath: "/users/username/foo/bar", }, { replacement: "people-", inputURL: "gemini://domain.com/non/match", replacedPath: "/non/match", }, { replacement: "people-", inputURL: "gemini://domain.com/~someone/dir/file", replacedPath: "/people-someone/dir/file", }, } for _, test := range tests { t.Run(test.inputURL, func(t *testing.T) { u, err := url.Parse(test.inputURL) assert.Nil(t, err) originalPath := u.Path replacer := sharedhost.ReplaceTilde(test.replacement) request := &gus.Request{URL: u} handler := replacer(func(_ context.Context, request *gus.Request) *gus.Response { assert.Equal(t, test.replacedPath, request.Path) return &gus.Response{} }) handler(context.Background(), request) // original request was unmodified assert.Equal(t, originalPath, request.Path) }) } }