mirror of
https://github.com/go-acme/lego
synced 2026-03-14 14:35:48 +01:00
tests: clean up code (#2612)
This commit is contained in:
parent
756d5ade0e
commit
fc21d23f7f
26 changed files with 106 additions and 76 deletions
|
|
@ -167,11 +167,11 @@ func TestPresent_httpStorage(t *testing.T) {
|
|||
|
||||
for _, test := range testCases {
|
||||
t.Run(test.desc, func(t *testing.T) {
|
||||
config := servermock.NewBuilder(func(server *httptest.Server) (*Config, error) {
|
||||
cfg := NewDefaultConfig()
|
||||
cfg.StorageBaseURL = server.URL
|
||||
provider := servermock.NewBuilder(func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.StorageBaseURL = server.URL
|
||||
|
||||
return cfg, nil
|
||||
return NewDNSProviderConfig(config)
|
||||
}).
|
||||
// Fetch
|
||||
Route("GET /example.com", servermock.Noop().WithStatusCode(http.StatusNotFound)).
|
||||
|
|
@ -179,15 +179,12 @@ func TestPresent_httpStorage(t *testing.T) {
|
|||
Route("POST /example.com", servermock.Noop().WithStatusCode(test.StatusCode)).
|
||||
Build(t)
|
||||
|
||||
p, err := NewDNSProviderConfig(config)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := newMockClient().WithRegisterAccount(egTestAccount)
|
||||
p.client = client
|
||||
provider.client = client
|
||||
|
||||
err = p.Present(egDomain, "foo", egKeyAuth)
|
||||
err := provider.Present(egDomain, "foo", egKeyAuth)
|
||||
if test.ExpectedError != nil {
|
||||
assert.Equal(t, test.ExpectedError, err)
|
||||
assert.EqualError(t, err, test.ExpectedError.Error())
|
||||
assert.True(t, client.registerAccountCalled)
|
||||
assert.False(t, client.updateTXTRecordCalled)
|
||||
} else {
|
||||
|
|
@ -222,22 +219,19 @@ func TestRegister_httpStorage(t *testing.T) {
|
|||
|
||||
for _, test := range testCases {
|
||||
t.Run(test.Name, func(t *testing.T) {
|
||||
config := servermock.NewBuilder(func(server *httptest.Server) (*Config, error) {
|
||||
cfg := NewDefaultConfig()
|
||||
cfg.StorageBaseURL = server.URL
|
||||
provider := servermock.NewBuilder(func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.StorageBaseURL = server.URL
|
||||
|
||||
return cfg, nil
|
||||
return NewDNSProviderConfig(config)
|
||||
}).
|
||||
// Put
|
||||
Route("POST /example.com", servermock.Noop().WithStatusCode(test.StatusCode)).
|
||||
Build(t)
|
||||
|
||||
p, err := NewDNSProviderConfig(config)
|
||||
require.NoError(t, err)
|
||||
provider.client = newMockClient().WithRegisterAccount(egTestAccount)
|
||||
|
||||
p.client = newMockClient().WithRegisterAccount(egTestAccount)
|
||||
|
||||
acc, err := p.register(t.Context(), egDomain, egFQDN)
|
||||
acc, err := provider.register(t.Context(), egDomain, egFQDN)
|
||||
if test.ExpectedError != nil {
|
||||
assert.Equal(t, test.ExpectedError, err)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ func TestHTTPStorage_Fetch_error(t *testing.T) {
|
|||
|
||||
func TestHTTPStorage_FetchAll(t *testing.T) {
|
||||
storage := mockBuilder().
|
||||
Route("GET /", servermock.ResponseFromFixture("fetch-all.json")).
|
||||
Route("GET /", servermock.ResponseFromFixture("fetch_all.json")).
|
||||
Build(t)
|
||||
|
||||
account, err := storage.FetchAll(t.Context())
|
||||
|
|
@ -98,7 +98,7 @@ func TestHTTPStorage_FetchAll_error(t *testing.T) {
|
|||
func TestHTTPStorage_Put(t *testing.T) {
|
||||
storage := mockBuilder().
|
||||
Route("POST /example.com", nil,
|
||||
servermock.CheckRequestJSONBodyFromFixture("request-body.json")).
|
||||
servermock.CheckRequestJSONBodyFromFixture("fetch-request.json")).
|
||||
Build(t)
|
||||
|
||||
account := goacmedns.Account{
|
||||
|
|
@ -137,7 +137,7 @@ func TestHTTPStorage_Put_CNAME_created(t *testing.T) {
|
|||
Route("POST /example.com",
|
||||
servermock.Noop().
|
||||
WithStatusCode(http.StatusCreated),
|
||||
servermock.CheckRequestJSONBodyFromFixture("request-body.json")).
|
||||
servermock.CheckRequestJSONBodyFromFixture("fetch-request.json")).
|
||||
Build(t)
|
||||
|
||||
account := goacmedns.Account{
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import (
|
|||
func setupIdentifierClient(server *httptest.Server) (*Identifier, error) {
|
||||
client := NewIdentifier("user", "secret")
|
||||
client.authEndpoint = server.URL
|
||||
client.HTTPClient = server.Client()
|
||||
|
||||
return client, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@
|
|||
package bindman
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/go-acme/lego/v4/platform/tester"
|
||||
bindmanClient "github.com/labbsr0x/bindman-dns-webhook/src/client"
|
||||
"github.com/go-acme/lego/v4/platform/tester/servermock"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
|
@ -106,10 +106,24 @@ func TestNewDNSProviderConfig(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func mockBuilder() *servermock.Builder[*DNSProvider] {
|
||||
return servermock.NewBuilder(
|
||||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.BaseURL = server.URL
|
||||
config.HTTPClient = server.Client()
|
||||
|
||||
return NewDNSProviderConfig(config)
|
||||
},
|
||||
servermock.CheckHeader().
|
||||
WithJSONHeaders().
|
||||
With("User-Agent", "bindman-dns-webhook-client"))
|
||||
}
|
||||
|
||||
func TestDNSProvider_Present(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
client *bindmanClient.DNSWebhookClient
|
||||
mock *servermock.Builder[*DNSProvider]
|
||||
domain string
|
||||
token string
|
||||
keyAuth string
|
||||
|
|
@ -117,28 +131,31 @@ func TestDNSProvider_Present(t *testing.T) {
|
|||
}{
|
||||
{
|
||||
name: "success when add record function return no error",
|
||||
client: &bindmanClient.DNSWebhookClient{
|
||||
ClientAPI: &MockHTTPClientAPI{Status: http.StatusNoContent},
|
||||
},
|
||||
domain: "hello.test.com",
|
||||
mock: mockBuilder().
|
||||
Route("POST /records",
|
||||
servermock.Noop().WithStatusCode(http.StatusNoContent),
|
||||
servermock.CheckRequestJSONBodyFromFixture("add_record-request.json"),
|
||||
),
|
||||
domain: "example.com",
|
||||
keyAuth: "szDTG4zmM0GsKG91QAGO2M4UYOJMwU8oFpWOP7eTjCw",
|
||||
expectError: false,
|
||||
},
|
||||
{
|
||||
name: "error when add record function return an error",
|
||||
client: &bindmanClient.DNSWebhookClient{
|
||||
ClientAPI: &MockHTTPClientAPI{Error: errors.New("error adding record")},
|
||||
},
|
||||
domain: "hello.test.com",
|
||||
mock: mockBuilder().
|
||||
Route("POST /records",
|
||||
servermock.ResponseFromFixture("error.json"),
|
||||
),
|
||||
domain: "example.com",
|
||||
keyAuth: "szDTG4zmM0GsKG91QAGO2M4UYOJMwU8oFpWOP7eTjCw",
|
||||
expectError: true,
|
||||
},
|
||||
}
|
||||
for _, test := range testCases {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
d := &DNSProvider{client: test.client}
|
||||
provider := test.mock.Build(t)
|
||||
|
||||
err := d.Present(test.domain, test.token, test.keyAuth)
|
||||
err := provider.Present(test.domain, test.token, test.keyAuth)
|
||||
if test.expectError {
|
||||
require.Error(t, err)
|
||||
} else {
|
||||
|
|
@ -151,7 +168,7 @@ func TestDNSProvider_Present(t *testing.T) {
|
|||
func TestDNSProvider_CleanUp(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
client *bindmanClient.DNSWebhookClient
|
||||
mock *servermock.Builder[*DNSProvider]
|
||||
domain string
|
||||
token string
|
||||
keyAuth string
|
||||
|
|
@ -159,30 +176,33 @@ func TestDNSProvider_CleanUp(t *testing.T) {
|
|||
}{
|
||||
{
|
||||
name: "success when remove record function return no error",
|
||||
client: &bindmanClient.DNSWebhookClient{
|
||||
ClientAPI: &MockHTTPClientAPI{Status: http.StatusNoContent},
|
||||
},
|
||||
domain: "hello.test.com",
|
||||
mock: mockBuilder().
|
||||
Route("DELETE /records/_acme-challenge.example.com./TXT",
|
||||
servermock.Noop().WithStatusCode(http.StatusNoContent),
|
||||
),
|
||||
domain: "example.com",
|
||||
keyAuth: "szDTG4zmM0GsKG91QAGO2M4UYOJMwU8oFpWOP7eTjCw",
|
||||
expectError: false,
|
||||
},
|
||||
{
|
||||
name: "error when remove record function return an error",
|
||||
client: &bindmanClient.DNSWebhookClient{
|
||||
ClientAPI: &MockHTTPClientAPI{Error: errors.New("error adding record")},
|
||||
},
|
||||
domain: "hello.test.com",
|
||||
mock: mockBuilder().
|
||||
Route("DELETE /records/_acme-challenge.example.com./TXT",
|
||||
servermock.ResponseFromFixture("error.json"),
|
||||
),
|
||||
domain: "example.com",
|
||||
keyAuth: "szDTG4zmM0GsKG91QAGO2M4UYOJMwU8oFpWOP7eTjCw",
|
||||
expectError: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range testCases {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
d := &DNSProvider{client: test.client}
|
||||
provider := test.mock.Build(t)
|
||||
|
||||
err := d.CleanUp(test.domain, test.token, test.keyAuth)
|
||||
err := provider.CleanUp(test.domain, test.token, test.keyAuth)
|
||||
if test.expectError {
|
||||
require.Error(t, err)
|
||||
require.ErrorContains(t, err, "bindman: ERROR (400): bar; ")
|
||||
} else {
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
|
@ -217,25 +237,3 @@ func TestLiveCleanUp(t *testing.T) {
|
|||
err = provider.CleanUp(envTest.GetDomain(), "", "123d==")
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
type MockHTTPClientAPI struct {
|
||||
Data []byte
|
||||
Status int
|
||||
Error error
|
||||
}
|
||||
|
||||
func (m *MockHTTPClientAPI) Put(url string, data []byte) (*http.Response, []byte, error) {
|
||||
return &http.Response{StatusCode: m.Status}, m.Data, m.Error
|
||||
}
|
||||
|
||||
func (m *MockHTTPClientAPI) Post(url string, data []byte) (*http.Response, []byte, error) {
|
||||
return &http.Response{StatusCode: m.Status}, m.Data, m.Error
|
||||
}
|
||||
|
||||
func (m *MockHTTPClientAPI) Get(url string) (*http.Response, []byte, error) {
|
||||
return &http.Response{StatusCode: m.Status}, m.Data, m.Error
|
||||
}
|
||||
|
||||
func (m *MockHTTPClientAPI) Delete(url string) (*http.Response, []byte, error) {
|
||||
return &http.Response{StatusCode: m.Status}, m.Data, m.Error
|
||||
}
|
||||
|
|
|
|||
5
providers/dns/bindman/fixtures/add_record-request.json
Normal file
5
providers/dns/bindman/fixtures/add_record-request.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name": "_acme-challenge.example.com.",
|
||||
"value": "_EYMkjukXEMcXbnvpT6WLESzfYhxH190NKTBo3cpu-E",
|
||||
"type": "TXT"
|
||||
}
|
||||
5
providers/dns/bindman/fixtures/error.json
Normal file
5
providers/dns/bindman/fixtures/error.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"message": "bar",
|
||||
"code": 400,
|
||||
"details": ["foo"]
|
||||
}
|
||||
|
|
@ -132,6 +132,7 @@ func mockBuilder() *servermock.Builder[*DNSProvider] {
|
|||
return servermock.NewBuilder(
|
||||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.HTTPClient = server.Client()
|
||||
config.Token = "secret"
|
||||
|
||||
p, err := NewDNSProviderConfig(config)
|
||||
|
|
|
|||
|
|
@ -304,6 +304,7 @@ func mockBuilder() *servermock.Builder[*DNSProvider] {
|
|||
config.AuthEmail = "foo@example.com"
|
||||
config.AuthKey = "secret"
|
||||
config.BaseURL = server.URL
|
||||
config.HTTPClient = server.Client()
|
||||
|
||||
return NewDNSProviderConfig(config)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@ func TestDNSProvider(t *testing.T) {
|
|||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.BaseURL = server.URL + "/"
|
||||
config.HTTPClient = server.Client()
|
||||
config.APIKey = "123412341234123412341234"
|
||||
|
||||
return NewDNSProviderConfig(config)
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ func TestDNSProvider(t *testing.T) {
|
|||
config := NewDefaultConfig()
|
||||
config.PersonalAccessToken = "123412341234123412341234"
|
||||
config.BaseURL = server.URL
|
||||
config.HTTPClient = server.Client()
|
||||
|
||||
return NewDNSProviderConfig(config)
|
||||
},
|
||||
|
|
|
|||
|
|
@ -352,7 +352,7 @@ func TestLiveCleanUp(t *testing.T) {
|
|||
func mockBuilder() *servermock.Builder[*DNSProvider] {
|
||||
return servermock.NewBuilder(func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.HTTPClient = &http.Client{Timeout: 10 * time.Second}
|
||||
config.HTTPClient = server.Client()
|
||||
config.Project = "manhattan"
|
||||
|
||||
p, err := NewDNSProviderConfig(config)
|
||||
|
|
|
|||
|
|
@ -227,6 +227,7 @@ func mockBuilder(mode string) *servermock.Builder[*DNSProvider] {
|
|||
return servermock.NewBuilder(
|
||||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.HTTPClient = server.Client()
|
||||
config.Endpoint, _ = url.Parse(server.URL)
|
||||
config.Mode = mode
|
||||
|
||||
|
|
@ -238,6 +239,7 @@ func mockBuilderWithPathPrefix(mode, prefix string) *servermock.Builder[*DNSProv
|
|||
return servermock.NewBuilder(
|
||||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.HTTPClient = server.Client()
|
||||
config.Endpoint, _ = url.Parse(server.URL + prefix)
|
||||
config.Mode = mode
|
||||
|
||||
|
|
@ -249,6 +251,7 @@ func mockBuilderWithBasicAuth(username, password string) *servermock.Builder[*DN
|
|||
return servermock.NewBuilder(
|
||||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.HTTPClient = server.Client()
|
||||
config.Endpoint, _ = url.Parse(server.URL)
|
||||
config.Username = username
|
||||
config.Password = password
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ func TestDNSProvider_Present(t *testing.T) {
|
|||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
return &DNSProvider{
|
||||
client: lightsail.NewFromConfig(aws.Config{
|
||||
HTTPClient: server.Client(),
|
||||
Credentials: credentials.NewStaticCredentialsProvider("abc", "123", " "),
|
||||
Region: "mock-region",
|
||||
BaseEndpoint: aws.String(server.URL),
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ func mockBuilder(password string) *servermock.Builder[*Client] {
|
|||
return servermock.NewBuilder[*Client](
|
||||
func(server *httptest.Server) (*Client, error) {
|
||||
client := NewClient("apiuser", password)
|
||||
client.HTTPClient = server.Client()
|
||||
client.BaseURL = server.URL + "/"
|
||||
|
||||
return client, nil
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
package namecheap
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/go-acme/lego/v4/platform/tester/servermock"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
|
@ -179,11 +177,11 @@ func Test_newPseudoRecord_domainSplit(t *testing.T) {
|
|||
func mockBuilder() *servermock.Builder[*DNSProvider] {
|
||||
return servermock.NewBuilder(func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.HTTPClient = server.Client()
|
||||
config.BaseURL = server.URL
|
||||
config.APIUser = envTestUser
|
||||
config.APIKey = envTestKey
|
||||
config.ClientIP = envTestClientIP
|
||||
config.HTTPClient = &http.Client{Timeout: 60 * time.Second}
|
||||
|
||||
return NewDNSProviderConfig(config)
|
||||
})
|
||||
|
|
|
|||
|
|
@ -279,6 +279,7 @@ func mockBuilder() *servermock.Builder[*DNSProvider] {
|
|||
return servermock.NewBuilder(
|
||||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.HTTPClient = server.Client()
|
||||
config.UserName = "user"
|
||||
config.Password = "secret"
|
||||
config.DomainName = "example.com"
|
||||
|
|
|
|||
|
|
@ -113,6 +113,7 @@ func mockBuilder() *servermock.Builder[*DNSProvider] {
|
|||
return servermock.NewBuilder(
|
||||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.HTTPClient = server.Client()
|
||||
config.APIUser = "testUser"
|
||||
config.APIKey = "testKey"
|
||||
config.HTTPClient = server.Client()
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ func mockBuilder() *servermock.Builder[*Client] {
|
|||
return servermock.NewBuilder[*Client](
|
||||
func(server *httptest.Server) (*Client, error) {
|
||||
client := NewClient("user", "secret")
|
||||
client.HTTPClient = server.Client()
|
||||
client.baseURL, _ = url.Parse(server.URL)
|
||||
|
||||
return client, nil
|
||||
|
|
|
|||
|
|
@ -146,6 +146,7 @@ func TestDNSProvider_Present(t *testing.T) {
|
|||
provider := servermock.NewBuilder(
|
||||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
cfg := aws.Config{
|
||||
HTTPClient: server.Client(),
|
||||
Credentials: credentials.NewStaticCredentialsProvider("abc", "123", " "),
|
||||
Region: "mock-region",
|
||||
BaseEndpoint: aws.String(server.URL),
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ func mockBuilder() *servermock.Builder[*Client] {
|
|||
func(server *httptest.Server) (*Client, error) {
|
||||
client := NewClient("secret")
|
||||
client.baseURL, _ = url.Parse(server.URL)
|
||||
client.HTTPClient = server.Client()
|
||||
|
||||
return client, nil
|
||||
},
|
||||
|
|
|
|||
|
|
@ -252,6 +252,13 @@ func mockBuilder() *servermock.Builder[*DNSProvider] {
|
|||
EnvEndpoint: server.URL,
|
||||
})
|
||||
|
||||
return NewDNSProvider()
|
||||
provider, err := NewDNSProvider()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
provider.client.HTTPClient = server.Client()
|
||||
|
||||
return provider, nil
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -163,7 +163,14 @@ func mockBuilder() *servermock.Builder[*DNSProvider] {
|
|||
config.SecretKey = "bar"
|
||||
config.Host = server.URL
|
||||
|
||||
return NewDNSProviderConfig(config)
|
||||
provider, err := NewDNSProviderConfig(config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
provider.client.HTTPClient = server.Client()
|
||||
|
||||
return provider, nil
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ func TestDNSProvider_getHostedZone(t *testing.T) {
|
|||
|
||||
provider := servermock.NewBuilder(
|
||||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
client := govultr.NewClient(nil)
|
||||
client := govultr.NewClient(server.Client())
|
||||
err := client.SetBaseURL(server.URL)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
|
|
|||
|
|
@ -273,6 +273,7 @@ func mockBuilder(username, apiKey string) *servermock.Builder[*DNSProvider] {
|
|||
return servermock.NewBuilder(
|
||||
func(server *httptest.Server) (*DNSProvider, error) {
|
||||
config := NewDefaultConfig()
|
||||
config.HTTPClient = server.Client()
|
||||
config.Endpoint, _ = url.Parse(server.URL)
|
||||
config.Username = username
|
||||
config.APIKey = apiKey
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue