orchid/test/fakeAcmeProv.go

36 lines
936 B
Go
Raw Permalink Normal View History

2023-06-29 02:37:00 +01:00
package test
import (
"crypto/tls"
"crypto/x509"
"fmt"
"github.com/go-acme/lego/v4/challenge"
"net/http"
)
// fakeAcmeProv an acme provider to emulate
type fakeAcmeProv struct {
t http.RoundTripper
}
func MakeFakeAcmeProv(cert []byte) interface {
challenge.Provider
http.RoundTripper
} {
cp := x509.NewCertPool()
cp.AppendCertsFromPEM(cert)
t := http.DefaultTransport.(*http.Transport).Clone()
t.TLSClientConfig = &tls.Config{RootCAs: cp}
return &fakeAcmeProv{t: t}
}
func (f *fakeAcmeProv) Present(string, string, string) error { return nil }
func (f *fakeAcmeProv) CleanUp(string, string, string) error { return nil }
func (f *fakeAcmeProv) RoundTrip(req *http.Request) (*http.Response, error) {
// use transport with custom CertPool for pebble requests
if req.URL.Host == "localhost:14000" {
return f.t.RoundTrip(req)
}
return nil, fmt.Errorf("invalid fakeAcmeProv.RoundTrip call to '%s'", req.URL.String())
}