Skip to content

Commit

Permalink
not-found-body: check if meta leaks into response body
Browse files Browse the repository at this point in the history
  • Loading branch information
ninedraft committed Feb 12, 2022
1 parent c0ca862 commit 4afd772
Showing 1 changed file with 39 additions and 15 deletions.
54 changes: 39 additions & 15 deletions gemax/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,26 +158,50 @@ func TestURLDotEscape(test *testing.T) {
expectResponse(test, resp, "50 50 PERMANENT FAILURE\r\n")
}

// emulates michael-lazar/gemini-diagnostics localhost 9999 --checks='PageNotFound'
// emulates michael-lazar/gemini-diagnostics localhost 9999 --checks='PageNotFound'
func TestPageNotFound(test *testing.T) {
var listener, server = setupServer(test,
func(_ context.Context, rw gemax.ResponseWriter, req gemax.IncomingRequest) {
gemax.NotFound(rw, req)
test.Run("helper", func(test *testing.T) {
var listener, server = setupServer(test,
func(_ context.Context, rw gemax.ResponseWriter, req gemax.IncomingRequest) {
gemax.NotFound(rw, req)
})
server.Hosts = []string{"example.com"}
defer func() { _ = listener.Close() }()
var ctx, cancel = context.WithCancel(context.Background())
test.Cleanup(cancel)
runTask(test, func() {
var err = server.Serve(ctx, listener)
if err != nil {
test.Logf("test server: Serve: %v", err)
}
})
server.Hosts = []string{"example.com"}
defer func() { _ = listener.Close() }()
var ctx, cancel = context.WithCancel(context.Background())
test.Cleanup(cancel)
runTask(test, func() {
var err = server.Serve(ctx, listener)
if err != nil {
test.Logf("test server: Serve: %v", err)
}

var resp = listener.next(test.Name(), strings.NewReader("gemini://example.com/notexist\r\n"))

expectResponse(test, resp, "51 gemini://example.com/notexist is not found\r\n")
})

var resp = listener.next(test.Name(), strings.NewReader("gemini://example.com/notexist\r\n"))
test.Run("custom", func(test *testing.T) {
test.Log("meta must not interfere with response body")
var listener, server = setupServer(test,
func(_ context.Context, rw gemax.ResponseWriter, req gemax.IncomingRequest) {
rw.WriteStatus(status.NotFound, "page is not found\r\ndotdot")
})
server.Hosts = []string{"example.com"}
defer func() { _ = listener.Close() }()
var ctx, cancel = context.WithCancel(context.Background())
test.Cleanup(cancel)
runTask(test, func() {
var err = server.Serve(ctx, listener)
if err != nil {
test.Logf("test server: Serve: %v", err)
}
})

var resp = listener.next(test.Name(), strings.NewReader("gemini://example.com/notexist\r\n"))

expectResponse(test, resp, "51 gemini://example.com/notexist is not found\r\n")
expectResponse(test, resp, "51 page is not found\tdotdot\r\n")
})
}

func setupServer(t *testing.T, handler gemax.Handler) (*fakeListener, *gemax.Server) {
Expand Down

0 comments on commit 4afd772

Please sign in to comment.