mirror of
https://github.com/project-zot/zot.git
synced 2024-12-23 22:27:35 -05:00
ea79be64da
* refactor(artifact): remove oci artifact support - add header to referrers call to indicated applied artifact type filters Signed-off-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com> * feat(gc): simplify gc logic to increase coverage Signed-off-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com> --------- Signed-off-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com>
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package test
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
type RouteHandler struct {
|
|
Route string
|
|
// HandlerFunc is the HTTP handler function that receives a writer for output and an HTTP request as input.
|
|
HandlerFunc http.HandlerFunc
|
|
// AllowedMethods specifies the HTTP methods allowed for the current route.
|
|
AllowedMethods []string
|
|
}
|
|
|
|
// Routes is a map that associates HTTP paths to their corresponding HTTP handlers.
|
|
type HTTPRoutes []RouteHandler
|
|
|
|
func StartTestHTTPServer(routes HTTPRoutes, port string) *http.Server {
|
|
baseURL := GetBaseURL(port)
|
|
mux := mux.NewRouter()
|
|
|
|
mux.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
|
|
_, err := w.Write([]byte("{}"))
|
|
if err != nil {
|
|
return
|
|
}
|
|
}).Methods(http.MethodGet)
|
|
|
|
for _, routeHandler := range routes {
|
|
mux.HandleFunc(routeHandler.Route, routeHandler.HandlerFunc).Methods(routeHandler.AllowedMethods...)
|
|
}
|
|
|
|
server := &http.Server{ //nolint:gosec
|
|
Addr: fmt.Sprintf(":%s", port),
|
|
Handler: mux,
|
|
}
|
|
|
|
go func() {
|
|
if err := server.ListenAndServe(); !errors.Is(err, http.ErrServerClosed) {
|
|
return
|
|
}
|
|
}()
|
|
|
|
WaitTillServerReady(baseURL + "/test")
|
|
|
|
return server
|
|
}
|