func/pkg/oci/mock/registry.go

45 lines
774 B
Go

package mock
import (
"log"
"net"
"net/http"
"net/http/httptest"
"os"
impl "github.com/google/go-containerregistry/pkg/registry"
)
type Registry struct {
*httptest.Server
HandlerFunc http.HandlerFunc
RegistryImpl http.Handler
}
func NewRegistry() *Registry {
registryHandler := impl.New(impl.Logger(log.New(os.Stderr, "test registry: ", log.LstdFlags)))
r := &Registry{
RegistryImpl: registryHandler,
}
r.Server = httptest.NewServer(r)
return r
}
func (r *Registry) Addr() net.Addr {
return r.Server.Listener.Addr()
}
func (r *Registry) Close() {
r.Server.Close()
}
func (r *Registry) ServeHTTP(res http.ResponseWriter, req *http.Request) {
if r.HandlerFunc != nil {
r.HandlerFunc(res, req)
} else {
r.RegistryImpl.ServeHTTP(res, req)
}
}