From f9a5502ae90ba63fc0efe5769d932263cf66f590 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Fri, 21 Oct 2022 12:18:12 +0200 Subject: [PATCH] Add function to spawn a server that responds with error code --- internal/integrationtest/http_server.go | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/internal/integrationtest/http_server.go b/internal/integrationtest/http_server.go index 951845e900c..c5f06e9557a 100644 --- a/internal/integrationtest/http_server.go +++ b/internal/integrationtest/http_server.go @@ -51,3 +51,31 @@ func (env *Environment) HTTPServeFile(port uint16, path *paths.Path) *url.URL { return fileURL } + +// HTTPServeFileError spawns an http server that serves a single file and responds +// with the given error code. +func (env *Environment) HTTPServeFileError(port uint16, path *paths.Path, code int) *url.URL { + mux := http.NewServeMux() + mux.HandleFunc("/"+path.Base(), func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(code) + }) + server := &http.Server{ + Addr: fmt.Sprintf(":%d", port), + Handler: mux, + } + + t := env.T() + fileURL, err := url.Parse(fmt.Sprintf("http://127.0.0.1:%d/%s", port, path.Base())) + require.NoError(t, err) + + go func() { + err := server.ListenAndServe() + require.Equal(t, err, http.ErrServerClosed) + }() + + env.RegisterCleanUpCallback(func() { + server.Close() + }) + + return fileURL +}