1
0
mirror of https://github.com/go-acme/lego.git synced 2025-10-31 08:27:38 +02:00

tests: change the signature of the method BuildHTTPS (#2611)

This commit is contained in:
Ludovic Fernandez
2025-08-04 12:21:14 +02:00
committed by GitHub
parent c9157f756e
commit 756d5ade0e
14 changed files with 66 additions and 64 deletions

View File

@@ -73,34 +73,34 @@ rzFL1KZfz+HZdnFwFW2T2gVW8L3ii1l9AJDuKzlvjUH3p6bgihVq02sjT8mx+GM2
`
func TestCertificateService_Get_issuerRelUp(t *testing.T) {
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("POST /certificate", servermock.RawStringResponse(certResponseMock)).
BuildHTTPS(t)
key, err := rsa.GenerateKey(rand.Reader, 2048)
require.NoError(t, err, "Could not generate test key")
core, err := New(client, "lego-test", apiURL+"/dir", "", key)
core, err := New(server.Client(), "lego-test", server.URL+"/dir", "", key)
require.NoError(t, err)
cert, issuer, err := core.Certificates.Get(apiURL+"/certificate", true)
cert, issuer, err := core.Certificates.Get(server.URL+"/certificate", true)
require.NoError(t, err)
assert.Equal(t, certResponseMock, string(cert), "Certificate")
assert.Equal(t, issuerMock, string(issuer), "IssuerCertificate")
}
func TestCertificateService_Get_embeddedIssuer(t *testing.T) {
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("POST /certificate", servermock.RawStringResponse(certResponseMock)).
BuildHTTPS(t)
key, err := rsa.GenerateKey(rand.Reader, 2048)
require.NoError(t, err, "Could not generate test key")
core, err := New(client, "lego-test", apiURL+"/dir", "", key)
core, err := New(server.Client(), "lego-test", server.URL+"/dir", "", key)
require.NoError(t, err)
cert, issuer, err := core.Certificates.Get(apiURL+"/certificate", true)
cert, issuer, err := core.Certificates.Get(server.URL+"/certificate", true)
require.NoError(t, err)
assert.Equal(t, certResponseMock, string(cert), "Certificate")
assert.Equal(t, issuerMock, string(issuer), "IssuerCertificate")

View File

@@ -12,7 +12,7 @@ import (
)
func TestNotHoldingLockWhileMakingHTTPRequests(t *testing.T) {
manager, _ := servermock.NewBuilder(
manager := servermock.NewBuilder(
func(server *httptest.Server) (*Manager, error) {
doer := sender.NewDoer(server.Client(), "lego-test")

View File

@@ -13,7 +13,7 @@ import (
)
func TestNotHoldingLockWhileMakingHTTPRequests(t *testing.T) {
manager, _ := servermock.NewBuilder(
manager := servermock.NewBuilder(
func(server *httptest.Server) (*nonces.Manager, error) {
doer := sender.NewDoer(server.Client(), "lego-test")

View File

@@ -22,7 +22,7 @@ func TestOrderService_NewWithOptions(t *testing.T) {
privateKey, errK := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, errK, "Could not generate test key")
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("POST /newOrder",
http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
body, err := readSignedBody(req, privateKey)
@@ -54,7 +54,7 @@ func TestOrderService_NewWithOptions(t *testing.T) {
})).
BuildHTTPS(t)
core, err := New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
testCases := []struct {

View File

@@ -175,14 +175,14 @@ Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
`
func Test_checkResponse(t *testing.T) {
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("POST /certificate", servermock.RawStringResponse(certResponseMock)).
BuildHTTPS(t)
key, err := rsa.GenerateKey(rand.Reader, 2048)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", key)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", key)
require.NoError(t, err)
certifier := NewCertifier(core, &resolverMock{}, CertifierOptions{KeyType: certcrypto.RSA2048})
@@ -190,7 +190,7 @@ func Test_checkResponse(t *testing.T) {
order := acme.ExtendedOrder{
Order: acme.Order{
Status: acme.StatusValid,
Certificate: apiURL + "/certificate",
Certificate: server.URL + "/certificate",
},
}
certRes := &Resource{}
@@ -209,14 +209,14 @@ func Test_checkResponse(t *testing.T) {
}
func Test_checkResponse_issuerRelUp(t *testing.T) {
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("POST /certificate", servermock.RawStringResponse(certResponseMock)).
BuildHTTPS(t)
key, err := rsa.GenerateKey(rand.Reader, 2048)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", key)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", key)
require.NoError(t, err)
certifier := NewCertifier(core, &resolverMock{}, CertifierOptions{KeyType: certcrypto.RSA2048})
@@ -224,7 +224,7 @@ func Test_checkResponse_issuerRelUp(t *testing.T) {
order := acme.ExtendedOrder{
Order: acme.Order{
Status: acme.StatusValid,
Certificate: apiURL + "/certificate",
Certificate: server.URL + "/certificate",
},
}
certRes := &Resource{}
@@ -243,14 +243,14 @@ func Test_checkResponse_issuerRelUp(t *testing.T) {
}
func Test_checkResponse_no_bundle(t *testing.T) {
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("POST /certificate", servermock.RawStringResponse(certResponseMock)).
BuildHTTPS(t)
key, err := rsa.GenerateKey(rand.Reader, 2048)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", key)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", key)
require.NoError(t, err)
certifier := NewCertifier(core, &resolverMock{}, CertifierOptions{KeyType: certcrypto.RSA2048})
@@ -258,7 +258,7 @@ func Test_checkResponse_no_bundle(t *testing.T) {
order := acme.ExtendedOrder{
Order: acme.Order{
Status: acme.StatusValid,
Certificate: apiURL + "/certificate",
Certificate: server.URL + "/certificate",
},
}
certRes := &Resource{}
@@ -277,7 +277,7 @@ func Test_checkResponse_no_bundle(t *testing.T) {
}
func Test_checkResponse_alternate(t *testing.T) {
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("POST /certificate",
http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
rw.Header().Add("Link",
@@ -291,7 +291,7 @@ func Test_checkResponse_alternate(t *testing.T) {
key, err := rsa.GenerateKey(rand.Reader, 2048)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", key)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", key)
require.NoError(t, err)
certifier := NewCertifier(core, &resolverMock{}, CertifierOptions{KeyType: certcrypto.RSA2048})
@@ -299,7 +299,7 @@ func Test_checkResponse_alternate(t *testing.T) {
order := acme.ExtendedOrder{
Order: acme.Order{
Status: acme.StatusValid,
Certificate: apiURL + "/certificate",
Certificate: server.URL + "/certificate",
},
}
certRes := &Resource{
@@ -321,25 +321,25 @@ func Test_checkResponse_alternate(t *testing.T) {
}
func Test_Get(t *testing.T) {
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("POST /acme/cert/test-cert", servermock.RawStringResponse(certResponseMock)).
BuildHTTPS(t)
key, err := rsa.GenerateKey(rand.Reader, 2048)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", key)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", key)
require.NoError(t, err)
certifier := NewCertifier(core, &resolverMock{}, CertifierOptions{KeyType: certcrypto.RSA2048})
certRes, err := certifier.Get(apiURL+"/acme/cert/test-cert", true)
certRes, err := certifier.Get(server.URL+"/acme/cert/test-cert", true)
require.NoError(t, err)
assert.NotNil(t, certRes)
assert.Equal(t, "acme.wtf", certRes.Domain)
assert.Equal(t, apiURL+"/acme/cert/test-cert", certRes.CertStableURL)
assert.Equal(t, apiURL+"/acme/cert/test-cert", certRes.CertURL)
assert.Equal(t, server.URL+"/acme/cert/test-cert", certRes.CertStableURL)
assert.Equal(t, server.URL+"/acme/cert/test-cert", certRes.CertURL)
assert.Nil(t, certRes.CSR)
assert.Nil(t, certRes.PrivateKey)
assert.Equal(t, certResponseMock, string(certRes.Certificate), "Certificate")

View File

@@ -43,7 +43,7 @@ func TestCertifier_GetRenewalInfo(t *testing.T) {
require.NoError(t, err)
// Test with a fake API.
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("GET /renewalInfo/"+ariLeafCertID,
servermock.RawStringResponse(`{
"suggestedWindow": {
@@ -60,7 +60,7 @@ func TestCertifier_GetRenewalInfo(t *testing.T) {
key, err := rsa.GenerateKey(rand.Reader, 2048)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", key)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", key)
require.NoError(t, err)
certifier := NewCertifier(core, &resolverMock{}, CertifierOptions{KeyType: certcrypto.RSA2048})
@@ -110,15 +110,17 @@ func TestCertifier_GetRenewalInfo_errors(t *testing.T) {
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("GET /renewalInfo/"+ariLeafCertID, test.handler).
BuildHTTPS(t)
client := server.Client()
if test.timeout != 0 {
client.Timeout = test.timeout
}
core, err := api.New(client, "lego-test", apiURL+"/dir", "", key)
core, err := api.New(client, "lego-test", server.URL+"/dir", "", key)
require.NoError(t, err)
certifier := NewCertifier(core, &resolverMock{}, CertifierOptions{KeyType: certcrypto.RSA2048})

View File

@@ -31,12 +31,12 @@ func (p *providerTimeoutMock) CleanUp(domain, token, keyAuth string) error { ret
func (p *providerTimeoutMock) Timeout() (time.Duration, time.Duration) { return p.timeout, p.interval }
func TestChallenge_PreSolve(t *testing.T) {
apiURL, client := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err)
core, err := api.New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
testCases := []struct {
@@ -113,12 +113,12 @@ func TestChallenge_PreSolve(t *testing.T) {
}
func TestChallenge_Solve(t *testing.T) {
apiURL, client := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err)
core, err := api.New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
testCases := []struct {
@@ -200,12 +200,12 @@ func TestChallenge_Solve(t *testing.T) {
}
func TestChallenge_CleanUp(t *testing.T) {
apiURL, client := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err)
core, err := api.New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
testCases := []struct {

View File

@@ -67,7 +67,7 @@ func TestProviderServer_GetAddress(t *testing.T) {
}
func TestChallenge(t *testing.T) {
apiURL, client := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
providerServer := NewProviderServer("", "23457")
@@ -100,7 +100,7 @@ func TestChallenge(t *testing.T) {
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
solver := NewChallenge(core, validate, providerServer)
@@ -123,7 +123,7 @@ func TestChallengeUnix(t *testing.T) {
t.Skip("only for UNIX systems")
}
apiURL, httpsClient := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
dir := t.TempDir()
t.Cleanup(func() { _ = os.RemoveAll(dir) })
@@ -169,7 +169,7 @@ func TestChallengeUnix(t *testing.T) {
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(httpsClient, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
solver := NewChallenge(core, validate, providerServer)
@@ -188,12 +188,12 @@ func TestChallengeUnix(t *testing.T) {
}
func TestChallengeInvalidPort(t *testing.T) {
apiURL, client := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
validate := func(_ *api.Core, _ string, _ acme.Challenge) error { return nil }
@@ -371,7 +371,7 @@ func TestChallengeWithProxy(t *testing.T) {
func testServeWithProxy(t *testing.T, header, extra *testProxyHeader, expectError bool) {
t.Helper()
apiURL, client := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
providerServer := NewProviderServer("localhost", "23457")
if header != nil {
@@ -414,7 +414,7 @@ func testServeWithProxy(t *testing.T, header, extra *testProxyHeader, expectErro
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
solver := NewChallenge(core, validate, providerServer)

View File

@@ -37,7 +37,7 @@ func TestValidate(t *testing.T) {
privateKey, _ := rsa.GenerateKey(rand.Reader, 1024)
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("POST /chlg",
http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
if err := validateNoBody(privateKey, req); err != nil {
@@ -76,7 +76,7 @@ func TestValidate(t *testing.T) {
})).
BuildHTTPS(t)
core, err := api.New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
testCases := []struct {
@@ -118,7 +118,7 @@ func TestValidate(t *testing.T) {
t.Run(test.name, func(t *testing.T) {
statuses = test.statuses
err := validate(core, "example.com", acme.Challenge{Type: "http-01", Token: "token", URL: apiURL + "/chlg"})
err := validate(core, "example.com", acme.Challenge{Type: "http-01", Token: "token", URL: server.URL + "/chlg"})
if test.want == "" {
require.NoError(t, err)
} else {

View File

@@ -20,7 +20,7 @@ import (
)
func TestChallenge(t *testing.T) {
apiURL, client := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
domain := "localhost"
port := "24457"
@@ -68,7 +68,7 @@ func TestChallenge(t *testing.T) {
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
solver := NewChallenge(
@@ -92,12 +92,12 @@ func TestChallenge(t *testing.T) {
}
func TestChallengeInvalidPort(t *testing.T) {
apiURL, client := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
solver := NewChallenge(
@@ -122,7 +122,7 @@ func TestChallengeInvalidPort(t *testing.T) {
}
func TestChallengeIPaddress(t *testing.T) {
apiURL, client := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
domain := "127.0.0.1"
port := "24457"
@@ -169,7 +169,7 @@ func TestChallengeIPaddress(t *testing.T) {
privateKey, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err, "Could not generate test key")
core, err := api.New(client, "lego-test", apiURL+"/dir", "", privateKey)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", privateKey)
require.NoError(t, err)
solver := NewChallenge(

View File

@@ -13,7 +13,7 @@ import (
)
func TestNewClient(t *testing.T) {
apiURL, httpsClient := tester.MockACMEServer().BuildHTTPS(t)
server := tester.MockACMEServer().BuildHTTPS(t)
key, err := rsa.GenerateKey(rand.Reader, 1024)
require.NoError(t, err, "Could not generate test key")
@@ -25,8 +25,8 @@ func TestNewClient(t *testing.T) {
}
config := NewConfig(user)
config.CADirURL = apiURL + "/dir"
config.HTTPClient = httpsClient
config.CADirURL = server.URL + "/dir"
config.HTTPClient = server.Client()
client, err := NewClient(config)
require.NoError(t, err, "Could not create client")

View File

@@ -11,10 +11,10 @@ import (
)
// MockACMEServer Minimal stub ACME server for validation.
func MockACMEServer() *servermock.Builder[string] {
func MockACMEServer() *servermock.Builder[*httptest.Server] {
return servermock.NewBuilder(
func(server *httptest.Server) (string, error) {
return server.URL, nil
func(server *httptest.Server) (*httptest.Server, error) {
return server, nil
}).
Route("GET /dir", http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
serverURL := fmt.Sprintf("https://%s", req.Context().Value(http.LocalAddrContextKey))

View File

@@ -71,7 +71,7 @@ func (b *Builder[T]) Build(t *testing.T) T {
return client
}
func (b *Builder[T]) BuildHTTPS(t *testing.T) (T, *http.Client) {
func (b *Builder[T]) BuildHTTPS(t *testing.T) T {
t.Helper()
server := httptest.NewTLSServer(b.mux)
@@ -80,5 +80,5 @@ func (b *Builder[T]) BuildHTTPS(t *testing.T) (T, *http.Client) {
client, err := b.clientBuilder(server)
require.NoError(t, err)
return client, server.Client()
return client
}

View File

@@ -16,7 +16,7 @@ import (
)
func TestRegistrar_ResolveAccountByKey(t *testing.T) {
apiURL, client := tester.MockACMEServer().
server := tester.MockACMEServer().
Route("/account",
http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
rw.Header().Set("Location",
@@ -35,7 +35,7 @@ func TestRegistrar_ResolveAccountByKey(t *testing.T) {
privatekey: key,
}
core, err := api.New(client, "lego-test", apiURL+"/dir", "", key)
core, err := api.New(server.Client(), "lego-test", server.URL+"/dir", "", key)
require.NoError(t, err)
registrar := NewRegistrar(core, user)