mirror of
https://github.com/1f349/orchid.git
synced 2024-12-23 00:24:07 +00:00
36 lines
936 B
Go
36 lines
936 B
Go
|
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())
|
||
|
}
|