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

chore: update to go1.24 (#2566)

This commit is contained in:
Ludovic Fernandez
2025-07-08 17:23:52 +02:00
committed by GitHub
parent 40baed291c
commit 713acefd7f
198 changed files with 968 additions and 881 deletions

View File

@@ -6,6 +6,13 @@ formatters:
- gofmt
- gofumpt
- goimports
settings:
gofumpt:
extra-rules: true
gofmt:
rewrite-rules:
- pattern: 'interface{}'
replacement: 'any'
linters:
default: all

View File

@@ -60,7 +60,7 @@ func New(httpClient *http.Client, userAgent, caDirURL, kid string, privateKey cr
// post performs an HTTP POST request and parses the response body as JSON,
// into the provided respBody object.
func (a *Core) post(uri string, reqBody, response interface{}) (*http.Response, error) {
func (a *Core) post(uri string, reqBody, response any) (*http.Response, error) {
content, err := json.Marshal(reqBody)
if err != nil {
return nil, errors.New("failed to marshal message")
@@ -71,11 +71,11 @@ func (a *Core) post(uri string, reqBody, response interface{}) (*http.Response,
// postAsGet performs an HTTP POST ("POST-as-GET") request.
// https://www.rfc-editor.org/rfc/rfc8555.html#section-6.3
func (a *Core) postAsGet(uri string, response interface{}) (*http.Response, error) {
func (a *Core) postAsGet(uri string, response any) (*http.Response, error) {
return a.retrievablePost(uri, []byte{}, response)
}
func (a *Core) retrievablePost(uri string, content []byte, response interface{}) (*http.Response, error) {
func (a *Core) retrievablePost(uri string, content []byte, response any) (*http.Response, error) {
// during tests, allow to support ~90% of bad nonce with a minimum of attempts.
bo := backoff.NewExponentialBackOff()
bo.InitialInterval = 200 * time.Millisecond
@@ -111,7 +111,7 @@ func (a *Core) retrievablePost(uri string, content []byte, response interface{})
return resp, nil
}
func (a *Core) signedPost(uri string, content []byte, response interface{}) (*http.Response, error) {
func (a *Core) signedPost(uri string, content []byte, response any) (*http.Response, error) {
signedContent, err := a.jws.SignContent(uri, content)
if err != nil {
return nil, fmt.Errorf("failed to post JWS message: failed to sign content: %w", err)

View File

@@ -54,7 +54,7 @@ func (j *JWS) SignContent(url string, content []byte) (*jose.JSONWebSignature, e
options := jose.SignerOptions{
NonceSource: j.nonces,
ExtraHeaders: map[jose.HeaderKey]interface{}{
ExtraHeaders: map[jose.HeaderKey]any{
"url": url,
},
}
@@ -87,7 +87,7 @@ func (j *JWS) SignEABContent(url, kid string, hmac []byte) (*jose.JSONWebSignatu
jose.SigningKey{Algorithm: jose.HS256, Key: hmac},
&jose.SignerOptions{
EmbedJWK: false,
ExtraHeaders: map[jose.HeaderKey]interface{}{
ExtraHeaders: map[jose.HeaderKey]any{
"kid": kid,
"url": url,
},

View File

@@ -35,7 +35,7 @@ func NewDoer(client *http.Client, userAgent string) *Doer {
// Get performs a GET request with a proper User-Agent string.
// If "response" is not provided, callers should close resp.Body when done reading from it.
func (d *Doer) Get(url string, response interface{}) (*http.Response, error) {
func (d *Doer) Get(url string, response any) (*http.Response, error) {
req, err := d.newRequest(http.MethodGet, url, nil)
if err != nil {
return nil, err
@@ -57,7 +57,7 @@ func (d *Doer) Head(url string) (*http.Response, error) {
// Post performs a POST request with a proper User-Agent string.
// If "response" is not provided, callers should close resp.Body when done reading from it.
func (d *Doer) Post(url string, body io.Reader, bodyType string, response interface{}) (*http.Response, error) {
func (d *Doer) Post(url string, body io.Reader, bodyType string, response any) (*http.Response, error) {
req, err := d.newRequest(http.MethodPost, url, body, contentType(bodyType))
if err != nil {
return nil, err
@@ -84,7 +84,7 @@ func (d *Doer) newRequest(method, uri string, body io.Reader, opts ...RequestOpt
return req, nil
}
func (d *Doer) do(req *http.Request, response interface{}) (*http.Response, error) {
func (d *Doer) do(req *http.Request, response any) (*http.Response, error) {
resp, err := d.httpClient.Do(req)
if err != nil {
return nil, err

View File

@@ -179,11 +179,11 @@ func CreateCSR(privateKey crypto.PrivateKey, opts CSROptions) ([]byte, error) {
return x509.CreateCertificateRequest(rand.Reader, &template, privateKey)
}
func PEMEncode(data interface{}) []byte {
func PEMEncode(data any) []byte {
return pem.EncodeToMemory(PEMBlock(data))
}
func PEMBlock(data interface{}) *pem.Block {
func PEMBlock(data any) *pem.Block {
var pemBlock *pem.Block
switch key := data.(type) {
case *ecdsa.PrivateKey:

View File

@@ -1,5 +1,11 @@
package dns01
import (
"iter"
"github.com/miekg/dns"
)
// ToFqdn converts the name into a fqdn appending a trailing dot.
func ToFqdn(name string) string {
n := len(name)
@@ -17,3 +23,33 @@ func UnFqdn(name string) string {
}
return name
}
// UnFqdnDomainsSeq generates a sequence of "unFQDNed" domain names derived from a domain (FQDN or not) in descending order.
func UnFqdnDomainsSeq(fqdn string) iter.Seq[string] {
return func(yield func(string) bool) {
if fqdn == "" {
return
}
for _, index := range dns.Split(fqdn) {
if !yield(UnFqdn(fqdn[index:])) {
return
}
}
}
}
// DomainsSeq generates a sequence of domain names derived from a domain (FQDN or not) in descending order.
func DomainsSeq(fqdn string) iter.Seq[string] {
return func(yield func(string) bool) {
if fqdn == "" {
return
}
for _, index := range dns.Split(fqdn) {
if !yield(fqdn[index:]) {
return
}
}
}
}

View File

@@ -1,6 +1,7 @@
package dns01
import (
"slices"
"testing"
"github.com/stretchr/testify/assert"
@@ -62,3 +63,103 @@ func TestUnFqdn(t *testing.T) {
})
}
}
func TestUnFqdnDomainsSeq(t *testing.T) {
testCases := []struct {
desc string
fqdn string
expected []string
}{
{
desc: "empty",
fqdn: "",
expected: nil,
},
{
desc: "TLD",
fqdn: "com",
expected: []string{"com"},
},
{
desc: "2 levels",
fqdn: "example.com",
expected: []string{"example.com", "com"},
},
{
desc: "3 levels",
fqdn: "foo.example.com",
expected: []string{"foo.example.com", "example.com", "com"},
},
}
for _, test := range testCases {
for name, suffix := range map[string]string{"": "", " FQDN": "."} { //nolint:gocritic
t.Run(test.desc+name, func(t *testing.T) {
t.Parallel()
actual := slices.Collect(UnFqdnDomainsSeq(test.fqdn + suffix))
assert.Equal(t, test.expected, actual)
})
}
}
}
func TestDomainsSeq(t *testing.T) {
testCases := []struct {
desc string
fqdn string
expected []string
}{
{
desc: "empty",
fqdn: "",
expected: nil,
},
{
desc: "empty FQDN",
fqdn: ".",
expected: nil,
},
{
desc: "TLD FQDN",
fqdn: "com",
expected: []string{"com"},
},
{
desc: "TLD",
fqdn: "com.",
expected: []string{"com."},
},
{
desc: "2 levels",
fqdn: "example.com",
expected: []string{"example.com", "com"},
},
{
desc: "2 levels FQDN",
fqdn: "example.com.",
expected: []string{"example.com.", "com."},
},
{
desc: "3 levels",
fqdn: "foo.example.com",
expected: []string{"foo.example.com", "example.com", "com"},
},
{
desc: "3 levels FQDN",
fqdn: "foo.example.com.",
expected: []string{"foo.example.com.", "example.com.", "com."},
},
}
for _, test := range testCases {
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
actual := slices.Collect(DomainsSeq(test.fqdn))
assert.Equal(t, test.expected, actual)
})
}
}

View File

@@ -175,10 +175,7 @@ func fetchSoaByFqdn(fqdn string, nameservers []string) (*soaCacheEntry, error) {
var err error
var r *dns.Msg
labelIndexes := dns.Split(fqdn)
for _, index := range labelIndexes {
domain := fqdn[index:]
for domain := range DomainsSeq(fqdn) {
r, err = dnsQuery(domain, dns.TypeSOA, nameservers, true)
if err != nil {
continue

View File

@@ -58,7 +58,7 @@ type errWriter struct {
err error
}
func (ew *errWriter) writeln(a ...interface{}) {
func (ew *errWriter) writeln(a ...any) {
if ew.err != nil {
return
}
@@ -66,7 +66,7 @@ func (ew *errWriter) writeln(a ...interface{}) {
_, ew.err = fmt.Fprintln(ew.w, a...)
}
func (ew *errWriter) writef(format string, a ...interface{}) {
func (ew *errWriter) writef(format string, a ...any) {
if ew.err != nil {
return
}

View File

@@ -3,6 +3,7 @@ package loader
import (
"bufio"
"bytes"
"context"
"crypto/tls"
"errors"
"fmt"
@@ -16,6 +17,7 @@ import (
"time"
"github.com/go-acme/lego/v4/platform/wait"
"github.com/ldez/grignotin/goenv"
)
const (
@@ -311,8 +313,13 @@ func goTool() (string, error) {
exeSuffix = ".exe"
}
path := filepath.Join(runtime.GOROOT(), "bin", "go"+exeSuffix)
if _, err := os.Stat(path); err == nil {
goRoot, err := goenv.GetOne(context.Background(), goenv.GOROOT)
if err != nil {
return "", fmt.Errorf("cannot find go root: %w", err)
}
path := filepath.Join(goRoot, "bin", "go"+exeSuffix)
if _, err = os.Stat(path); err == nil {
return path, nil
}

3
go.mod
View File

@@ -1,6 +1,6 @@
module github.com/go-acme/lego/v4
go 1.23.0
go 1.24.0
require (
cloud.google.com/go/compute/metadata v0.6.0
@@ -44,6 +44,7 @@ require (
github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df
github.com/infobloxopen/infoblox-go-client/v2 v2.9.0
github.com/labbsr0x/bindman-dns-webhook v1.0.2
github.com/ldez/grignotin v0.9.0
github.com/linode/linodego v1.48.1
github.com/liquidweb/liquidweb-go v1.6.4
github.com/mattn/go-isatty v0.0.20

2
go.sum
View File

@@ -597,6 +597,8 @@ github.com/labbsr0x/bindman-dns-webhook v1.0.2 h1:I7ITbmQPAVwrDdhd6dHKi+MYJTJqPC
github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA=
github.com/labbsr0x/goh v1.0.1 h1:97aBJkDjpyBZGPbQuOK5/gHcSFbcr5aRsq3RSRJFpPk=
github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w=
github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow=
github.com/ldez/grignotin v0.9.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk=
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
github.com/linode/linodego v1.48.1 h1:Ojw1S+K5jJr1dggO8/H6r4FINxXnJbOU5GkbpaTfmhU=

View File

@@ -96,7 +96,7 @@ func generateCLIHelp(models *descriptors.Providers) error {
b := &bytes.Buffer{}
err = template.Must(
template.New(filepath.Base(cliTemplate)).Funcs(map[string]interface{}{
template.New(filepath.Base(cliTemplate)).Funcs(map[string]any{
"safe": func(src string) string {
return strings.ReplaceAll(src, "`", "'")
},

View File

@@ -47,7 +47,7 @@ func generate() error {
b := &bytes.Buffer{}
err = template.Must(
template.New("").Funcs(map[string]interface{}{
template.New("").Funcs(map[string]any{
"cleanName": func(src string) string {
return strings.ReplaceAll(src, "-", "")
},

View File

@@ -33,7 +33,7 @@ type Generator struct {
targetFile string
}
func NewGenerator(templatePath string, targetFile string) *Generator {
func NewGenerator(templatePath, targetFile string) *Generator {
return &Generator{templatePath: templatePath, targetFile: targetFile}
}

View File

@@ -10,50 +10,50 @@ var Logger StdLogger = log.New(os.Stderr, "", log.LstdFlags)
// StdLogger interface for Standard Logger.
type StdLogger interface {
Fatal(args ...interface{})
Fatalln(args ...interface{})
Fatalf(format string, args ...interface{})
Print(args ...interface{})
Println(args ...interface{})
Printf(format string, args ...interface{})
Fatal(args ...any)
Fatalln(args ...any)
Fatalf(format string, args ...any)
Print(args ...any)
Println(args ...any)
Printf(format string, args ...any)
}
// Fatal writes a log entry.
// It uses Logger if not nil, otherwise it uses the default log.Logger.
func Fatal(args ...interface{}) {
func Fatal(args ...any) {
Logger.Fatal(args...)
}
// Fatalf writes a log entry.
// It uses Logger if not nil, otherwise it uses the default log.Logger.
func Fatalf(format string, args ...interface{}) {
func Fatalf(format string, args ...any) {
Logger.Fatalf(format, args...)
}
// Print writes a log entry.
// It uses Logger if not nil, otherwise it uses the default log.Logger.
func Print(args ...interface{}) {
func Print(args ...any) {
Logger.Print(args...)
}
// Println writes a log entry.
// It uses Logger if not nil, otherwise it uses the default log.Logger.
func Println(args ...interface{}) {
func Println(args ...any) {
Logger.Println(args...)
}
// Printf writes a log entry.
// It uses Logger if not nil, otherwise it uses the default log.Logger.
func Printf(format string, args ...interface{}) {
func Printf(format string, args ...any) {
Logger.Printf(format, args...)
}
// Warnf writes a log entry.
func Warnf(format string, args ...interface{}) {
func Warnf(format string, args ...any) {
Printf("[WARN] "+format, args...)
}
// Infof writes a log entry.
func Infof(format string, args ...interface{}) {
func Infof(format string, args ...any) {
Printf("[INFO] "+format, args...)
}

View File

@@ -107,7 +107,7 @@ func getOneWithFallback(main string, names ...string) (string, string) {
// GetOrDefaultString returns the given environment variable value as a string.
// Returns the default if the env var cannot be found.
func GetOrDefaultString(envVar string, defaultValue string) string {
func GetOrDefaultString(envVar, defaultValue string) string {
return getOrDefault(envVar, defaultValue, ParseString)
}
@@ -184,3 +184,20 @@ func ParseString(s string) (string, error) {
return s, nil
}
// ParsePairs parses a raw string of comma-separated key-value pairs into a map.
// Keys and values are separated by a colon and are trimmed of whitespace.
func ParsePairs(raw string) (map[string]string, error) {
result := make(map[string]string)
for pair := range strings.SplitSeq(strings.TrimSuffix(raw, ","), ",") {
data := strings.Split(pair, ":")
if len(data) != 2 {
return nil, fmt.Errorf("incorrect pair: %s", pair)
}
result[strings.TrimSpace(data[0])] = strings.TrimSpace(data[1])
}
return result, nil
}

View File

@@ -408,3 +408,77 @@ func TestGetOrFile_PrefersEnvVars(t *testing.T) {
assert.Equal(t, "lego_env", value)
}
func TestParsePairs(t *testing.T) {
testCases := []struct {
desc string
value string
expected map[string]string
}{
{
desc: "one pair",
value: "foo:bar",
expected: map[string]string{"foo": "bar"},
},
{
desc: "multiple pairs",
value: "foo:bar,a:b,c:d",
expected: map[string]string{"a": "b", "c": "d", "foo": "bar"},
},
{
desc: "multiple pairs with spaces",
value: "foo:bar, a:b , c: d",
expected: map[string]string{"a": "b", "c": "d", "foo": "bar"},
},
{
desc: "empty value pair",
value: "foo:",
expected: map[string]string{"foo": ""},
},
{
desc: "empty key pair",
value: ":bar",
expected: map[string]string{"": "bar"},
},
}
for _, test := range testCases {
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
pairs, err := ParsePairs(test.value)
require.NoError(t, err)
assert.Equal(t, test.expected, pairs)
})
}
}
func TestParsePairs_error(t *testing.T) {
testCases := []struct {
desc string
value string
}{
{
desc: "empty value",
value: "",
},
{
desc: "multiple colons",
value: "foo:bar:bir",
},
{
desc: "valid pair and multiple colons",
value: "a:b,foo:bar:bir",
},
}
for _, test := range testCases {
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
_, err := ParsePairs(test.value)
require.Error(t, err)
})
}
}

View File

@@ -52,7 +52,7 @@ func SetupFakeAPI(t *testing.T) (*http.ServeMux, string) {
}
// WriteJSONResponse marshals the body as JSON and writes it to the response.
func WriteJSONResponse(w http.ResponseWriter, body interface{}) error {
func WriteJSONResponse(w http.ResponseWriter, body any) error {
bs, err := json.Marshal(body)
if err != nil {
return err

View File

@@ -1,7 +1,6 @@
package acmedns
import (
"context"
"net/http"
"net/http/httptest"
"testing"
@@ -133,7 +132,7 @@ func TestRegister(t *testing.T) {
p.storage = test.Storage
}
acc, err := p.register(context.Background(), egDomain, egFQDN)
acc, err := p.register(t.Context(), egDomain, egFQDN)
if test.ExpectedError != nil {
assert.Equal(t, test.ExpectedError, err)
} else {
@@ -242,7 +241,7 @@ func TestRegister_httpStorage(t *testing.T) {
w.WriteHeader(test.StatusCode)
})
acc, err := p.register(context.Background(), egDomain, egFQDN)
acc, err := p.register(t.Context(), egDomain, egFQDN)
if test.ExpectedError != nil {
assert.Equal(t, test.ExpectedError, err)
} else {

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"io"
"net/http"
"net/http/httptest"
@@ -54,7 +53,7 @@ func setupTest(t *testing.T, pattern, filename string, statusCode int) *HTTPStor
func TestHTTPStorage_Fetch(t *testing.T) {
storage := setupTest(t, "GET /example.com", "fetch.json", http.StatusOK)
account, err := storage.Fetch(context.Background(), "example.com")
account, err := storage.Fetch(t.Context(), "example.com")
require.NoError(t, err)
expected := goacmedns.Account{
@@ -71,14 +70,14 @@ func TestHTTPStorage_Fetch(t *testing.T) {
func TestHTTPStorage_Fetch_error(t *testing.T) {
storage := setupTest(t, "GET /example.com", "error.json", http.StatusInternalServerError)
_, err := storage.Fetch(context.Background(), "example.com")
_, err := storage.Fetch(t.Context(), "example.com")
require.Error(t, err)
}
func TestHTTPStorage_FetchAll(t *testing.T) {
storage := setupTest(t, "GET /", "fetch-all.json", http.StatusOK)
account, err := storage.FetchAll(context.Background())
account, err := storage.FetchAll(t.Context())
require.NoError(t, err)
expected := map[string]goacmedns.Account{
@@ -104,7 +103,7 @@ func TestHTTPStorage_FetchAll(t *testing.T) {
func TestHTTPStorage_FetchAll_error(t *testing.T) {
storage := setupTest(t, "GET /", "error.json", http.StatusInternalServerError)
_, err := storage.FetchAll(context.Background())
_, err := storage.FetchAll(t.Context())
require.Error(t, err)
}
@@ -119,7 +118,7 @@ func TestHTTPStorage_Put(t *testing.T) {
ServerURL: "https://example.com",
}
err := storage.Put(context.Background(), "example.com", account)
err := storage.Put(t.Context(), "example.com", account)
require.NoError(t, err)
}
@@ -134,7 +133,7 @@ func TestHTTPStorage_Put_error(t *testing.T) {
ServerURL: "https://example.com",
}
err := storage.Put(context.Background(), "example.com", account)
err := storage.Put(t.Context(), "example.com", account)
require.Error(t, err)
}
@@ -149,6 +148,6 @@ func TestHTTPStorage_Put_CNAME_created(t *testing.T) {
ServerURL: "https://example.com",
}
err := storage.Put(context.Background(), "example.com", account)
err := storage.Put(t.Context(), "example.com", account)
require.ErrorIs(t, err, ErrCNAMEAlreadyCreated)
}

View File

@@ -23,7 +23,7 @@ func TestClient_GetDNSSettings(t *testing.T) {
client := NewClient("user")
client.baseURL = server.URL
records, err := client.GetDNSSettings(mockContext(), "example.com", "")
records, err := client.GetDNSSettings(mockContext(t), "example.com", "")
require.NoError(t, err)
expected := []ReturnInfo{
@@ -112,7 +112,7 @@ func TestClient_AddDNSSettings(t *testing.T) {
RecordData: "abcdefgh",
}
recordID, err := client.AddDNSSettings(mockContext(), record)
recordID, err := client.AddDNSSettings(mockContext(t), record)
require.NoError(t, err)
assert.Equal(t, "57347444", recordID)
@@ -128,7 +128,7 @@ func TestClient_DeleteDNSSettings(t *testing.T) {
client := NewClient("user")
client.baseURL = server.URL
r, err := client.DeleteDNSSettings(mockContext(), "57347450")
r, err := client.DeleteDNSSettings(mockContext(t), "57347450")
require.NoError(t, err)
assert.Equal(t, "TRUE", r)

View File

@@ -29,7 +29,7 @@ type Identifier struct {
}
// NewIdentifier creates a new Identifier.
func NewIdentifier(login string, password string) *Identifier {
func NewIdentifier(login, password string) *Identifier {
return &Identifier{
login: login,
password: password,

View File

@@ -10,8 +10,10 @@ import (
"github.com/stretchr/testify/require"
)
func mockContext() context.Context {
return context.WithValue(context.Background(), tokenKey, "593959ca04f0de9689b586c6a647d15d")
func mockContext(t *testing.T) context.Context {
t.Helper()
return context.WithValue(t.Context(), tokenKey, "593959ca04f0de9689b586c6a647d15d")
}
func TestIdentifier_Authentication(t *testing.T) {
@@ -24,7 +26,7 @@ func TestIdentifier_Authentication(t *testing.T) {
client := NewIdentifier("user", "secret")
client.authEndpoint = server.URL
credentialToken, err := client.Authentication(context.Background(), 60, false)
credentialToken, err := client.Authentication(t.Context(), 60, false)
require.NoError(t, err)
assert.Equal(t, "593959ca04f0de9689b586c6a647d15d", credentialToken)
@@ -40,6 +42,6 @@ func TestIdentifier_Authentication_error(t *testing.T) {
client := NewIdentifier("user", "secret")
client.authEndpoint = server.URL
_, err := client.Authentication(context.Background(), 60, false)
_, err := client.Authentication(t.Context(), 60, false)
require.Error(t, err)
}

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -61,7 +60,7 @@ func TestClient_GetTxtRecord(t *testing.T) {
}
})
_, err := client.GetTxtRecord(context.Background(), domain, "_acme-challenge", "txtxtxt")
_, err := client.GetTxtRecord(t.Context(), domain, "_acme-challenge", "txtxtxt")
require.NoError(t, err)
}
@@ -106,13 +105,13 @@ func TestClient_CreateRecord(t *testing.T) {
TTL: 600,
}
newRecord, err := client.CreateRecord(context.Background(), domain, record)
newRecord, err := client.CreateRecord(t.Context(), domain, record)
require.NoError(t, err)
expected := &DNSRecord{
ID: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
Type: "txt",
Value: map[string]interface{}{"text": "txtxtxt"},
Value: map[string]any{"text": "txtxtxt"},
Name: "_acme-challenge",
TTL: 120,
UpstreamHTTPS: "default",
@@ -147,6 +146,6 @@ func TestClient_DeleteRecord(t *testing.T) {
}
})
err := client.DeleteRecord(context.Background(), domain, recordID)
err := client.DeleteRecord(t.Context(), domain, recordID)
require.NoError(t, err)
}

View File

@@ -31,7 +31,7 @@ type Client struct {
}
// NewClient creates a new Client.
func NewClient(username string, password string, clientContext int) *Client {
func NewClient(username, password string, clientContext int) *Client {
baseURL, _ := url.Parse(DefaultEndpoint)
return &Client{

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -67,7 +66,7 @@ func TestClient_AddTxtRecords(t *testing.T) {
records := []*ResourceRecord{{}}
zone, err := client.AddTxtRecords(context.Background(), "example.com", records)
zone, err := client.AddTxtRecords(t.Context(), "example.com", records)
require.NoError(t, err)
expected := &Zone{
@@ -91,6 +90,6 @@ func TestClient_RemoveTXTRecords(t *testing.T) {
records := []*ResourceRecord{{}}
err := client.RemoveTXTRecords(context.Background(), "example.com", records)
err := client.RemoveTXTRecords(t.Context(), "example.com", records)
require.NoError(t, err)
}

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"io"
"net/http"
"net/http/httptest"
@@ -55,7 +54,7 @@ func setupTest(t *testing.T, pattern string, status int, filename string) *Clien
func TestClient_ListRecords(t *testing.T) {
client := setupTest(t, "GET /dns_list", http.StatusOK, "dns_list.json")
records, err := client.ListRecords(context.Background(), "example.com")
records, err := client.ListRecords(t.Context(), "example.com")
require.NoError(t, err)
expected := []Record{
@@ -71,7 +70,7 @@ func TestClient_ListRecords(t *testing.T) {
func TestClient_ListRecords_error(t *testing.T) {
client := setupTest(t, "GET /dns_list", http.StatusNotFound, "dns_list_error.json")
_, err := client.ListRecords(context.Background(), "example.com")
_, err := client.ListRecords(t.Context(), "example.com")
require.EqualError(t, err, "error: Domain not found (1)")
}
@@ -80,7 +79,7 @@ func TestClient_DeleteRecord(t *testing.T) {
record := Record{ID: "74749"}
err := client.DeleteRecord(context.Background(), "example.com", record)
err := client.DeleteRecord(t.Context(), "example.com", record)
require.NoError(t, err)
}
@@ -89,7 +88,7 @@ func TestClient_DeleteRecord_error(t *testing.T) {
record := Record{ID: "74749"}
err := client.DeleteRecord(context.Background(), "example.com", record)
err := client.DeleteRecord(t.Context(), "example.com", record)
require.EqualError(t, err, "error: Domain not found (1)")
}
@@ -98,7 +97,7 @@ func TestClient_AddRecord(t *testing.T) {
record := Record{ID: "74749"}
err := client.AddRecord(context.Background(), "example.com", record)
err := client.AddRecord(t.Context(), "example.com", record)
require.NoError(t, err)
}
@@ -107,6 +106,6 @@ func TestClient_AddRecord_error(t *testing.T) {
record := Record{ID: "74749"}
err := client.AddRecord(context.Background(), "example.com", record)
err := client.AddRecord(t.Context(), "example.com", record)
require.EqualError(t, err, "error: Domain not found (1)")
}

View File

@@ -12,7 +12,6 @@ import (
"github.com/aziontech/azionapi-go-sdk/idns"
"github.com/go-acme/lego/v4/challenge/dns01"
"github.com/go-acme/lego/v4/platform/config/env"
"github.com/miekg/dns"
)
// Environment variables names.
@@ -247,11 +246,7 @@ func (d *DNSProvider) findZone(ctx context.Context, fqdn string) (*idns.Zone, er
return nil, errors.New("get zones: no results")
}
labelIndexes := dns.Split(fqdn)
for _, index := range labelIndexes {
domain := dns01.UnFqdn(fqdn[index:])
for domain := range dns01.UnFqdnDomainsSeq(fqdn) {
for _, zone := range resp.GetResults() {
if zone.GetDomain() == domain {
return &zone, nil

View File

@@ -36,7 +36,7 @@ type Client struct {
HTTPClient *http.Client
}
func NewClient(baseURL string, username, password string) *Client {
func NewClient(baseURL, username, password string) *Client {
bu, _ := url.Parse(baseURL)
return &Client{

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"encoding/json"
"net/http"
"net/http/httptest"
@@ -35,7 +34,7 @@ func TestClient_LookupParentZoneID(t *testing.T) {
http.Error(rw, "{}", http.StatusOK)
})
parentID, name, err := client.LookupParentZoneID(context.Background(), 2, "foo.example.com")
parentID, name, err := client.LookupParentZoneID(t.Context(), 2, "foo.example.com")
require.NoError(t, err)
assert.EqualValues(t, 2, parentID)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"net/http"
"net/http/httptest"
@@ -48,7 +47,7 @@ func TestClient_CreateAuthenticatedContext(t *testing.T) {
}
})
ctx, err := client.CreateAuthenticatedContext(context.Background())
ctx, err := client.CreateAuthenticatedContext(t.Context())
require.NoError(t, err)
at := getToken(ctx)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -62,7 +61,7 @@ func TestClient_AddRecord(t *testing.T) {
Value: "test",
}
err := client.AddRecord(context.Background(), record)
err := client.AddRecord(t.Context(), record)
require.NoError(t, err)
}
@@ -76,7 +75,7 @@ func TestClient_AddRecord_error(t *testing.T) {
Value: "test",
}
err := client.AddRecord(context.Background(), record)
err := client.AddRecord(t.Context(), record)
require.Error(t, err)
require.EqualError(t, err, "unexpected response: notfqdn: Host _acme-challenge.sub.example.com. malformed / vhn")
@@ -92,7 +91,7 @@ func TestClient_RemoveRecord(t *testing.T) {
Value: "test",
}
err := client.RemoveRecord(context.Background(), record)
err := client.RemoveRecord(t.Context(), record)
require.NoError(t, err)
}
@@ -106,7 +105,7 @@ func TestClient_RemoveRecord_error(t *testing.T) {
Value: "test",
}
err := client.RemoveRecord(context.Background(), record)
err := client.RemoveRecord(t.Context(), record)
require.Error(t, err)
require.EqualError(t, err, "unexpected response: notfqdn: Host _acme-challenge.sub.example.com. malformed / vhn")

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"io"
"net/http"
"net/http/httptest"
@@ -46,7 +45,7 @@ func setupTest(t *testing.T, filename string) *Client {
func TestClient_StatusDomain(t *testing.T) {
client := setupTest(t, "status-domain.json")
domain, err := client.StatusDomain(context.Background(), "example.com")
domain, err := client.StatusDomain(t.Context(), "example.com")
require.NoError(t, err)
expected := &StatusResponse{
@@ -82,14 +81,14 @@ func TestClient_StatusDomain(t *testing.T) {
func TestClient_StatusDomain_error(t *testing.T) {
client := setupTest(t, "error.json")
_, err := client.StatusDomain(context.Background(), "example.com")
_, err := client.StatusDomain(t.Context(), "example.com")
require.ErrorIs(t, err, APIError{Code: 402, Status: "error", Message: "Invalid user."})
}
func TestClient_ListRecords(t *testing.T) {
client := setupTest(t, "list-records.json")
resp, err := client.ListRecords(context.Background(), "example", "example.com")
resp, err := client.ListRecords(t.Context(), "example", "example.com")
require.NoError(t, err)
expected := &ListRecordsResponse{
@@ -108,7 +107,7 @@ func TestClient_ListRecords(t *testing.T) {
func TestClient_ListRecords_error(t *testing.T) {
client := setupTest(t, "error.json")
_, err := client.ListRecords(context.Background(), "example", "example.com")
_, err := client.ListRecords(t.Context(), "example", "example.com")
require.ErrorIs(t, err, APIError{Code: 402, Status: "error", Message: "Invalid user."})
}
@@ -122,7 +121,7 @@ func TestClient_AddRecord(t *testing.T) {
Content: "txttxttxt",
TTL: 600,
}
resp, err := client.AddRecord(context.Background(), "example.com", "test", "2565", testRecord)
resp, err := client.AddRecord(t.Context(), "example.com", "test", "2565", testRecord)
require.NoError(t, err)
expected := &AddRecord{
@@ -150,20 +149,20 @@ func TestClient_AddRecord_error(t *testing.T) {
TTL: 600,
}
_, err := client.AddRecord(context.Background(), "example.com", "test", "2565", testRecord)
_, err := client.AddRecord(t.Context(), "example.com", "test", "2565", testRecord)
require.ErrorIs(t, err, APIError{Code: 402, Status: "error", Message: "Invalid user."})
}
func TestClient_DeleteRecord(t *testing.T) {
client := setupTest(t, "delete-record.json")
err := client.DeleteRecord(context.Background(), "example.com", "test", "example.com 600 IN TXT txttxttxt", "2374")
err := client.DeleteRecord(t.Context(), "example.com", "test", "example.com 600 IN TXT txttxttxt", "2374")
require.NoError(t, err)
}
func TestClient_DeleteRecord_error(t *testing.T) {
client := setupTest(t, "error.json")
err := client.DeleteRecord(context.Background(), "example.com", "test", "example.com 600 IN TXT txttxttxt", "2374")
err := client.DeleteRecord(t.Context(), "example.com", "test", "example.com 600 IN TXT txttxttxt", "2374")
require.ErrorIs(t, err, APIError{Code: 402, Status: "error", Message: "Invalid user."})
}

View File

@@ -12,7 +12,6 @@ import (
"github.com/go-acme/lego/v4/challenge/dns01"
"github.com/go-acme/lego/v4/platform/config/env"
"github.com/go-acme/lego/v4/providers/dns/internal/ptr"
"github.com/miekg/dns"
"github.com/nrdcg/bunny-go"
"golang.org/x/net/publicsuffix"
)
@@ -200,16 +199,14 @@ func findZone(zones *bunny.DNSZones, domain string) *bunny.DNSZone {
func possibleDomains(domain string) []string {
var domains []string
labelIndexes := dns.Split(domain)
for _, index := range labelIndexes {
tld, _ := publicsuffix.PublicSuffix(domain)
if tld == domain[index:] {
tld, _ := publicsuffix.PublicSuffix(domain)
for d := range dns01.DomainsSeq(domain) {
if tld == d {
// skip the TLD
break
}
domains = append(domains, dns01.UnFqdn(domain[index:]))
domains = append(domains, dns01.UnFqdn(d))
}
return domains

View File

@@ -2,7 +2,6 @@ package internal
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
@@ -67,7 +66,7 @@ func TestClient_GetDomainIDByName(t *testing.T) {
}
})
id, err := client.GetDomainIDByName(context.Background(), "test.com")
id, err := client.GetDomainIDByName(t.Context(), "test.com")
require.NoError(t, err)
assert.Equal(t, 1, id)
@@ -103,7 +102,7 @@ func TestClient_CheckNameservers(t *testing.T) {
}
})
err := client.CheckNameservers(context.Background(), 1)
err := client.CheckNameservers(t.Context(), 1)
require.NoError(t, err)
}
@@ -141,7 +140,7 @@ func TestClient_CreateRecord(t *testing.T) {
Value: "value",
}
err := client.CreateRecord(context.Background(), 1, record)
err := client.CreateRecord(t.Context(), 1, record)
require.NoError(t, err)
}
@@ -256,6 +255,6 @@ func TestClient_DeleteTXTRecord(t *testing.T) {
})
info := dns01.GetChallengeInfo(domainName, "abc")
err := client.DeleteTXTRecord(context.Background(), 1, info.EffectiveFQDN, recordValue)
err := client.DeleteTXTRecord(t.Context(), 1, info.EffectiveFQDN, recordValue)
require.NoError(t, err)
}

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"encoding/json"
"net/http"
"net/http/httptest"
@@ -62,7 +61,7 @@ func TestClient_AddRecord(t *testing.T) {
}
})
err := client.AddRecord(context.Background(), "example.com", "_acme-challenge.example.com", "txt")
err := client.AddRecord(t.Context(), "example.com", "_acme-challenge.example.com", "txt")
require.NoError(t, err)
}
@@ -124,7 +123,7 @@ func TestClient_DeleteRecord(t *testing.T) {
}
})
ctx, err := client.CreateAuthenticatedContext(context.Background())
ctx, err := client.CreateAuthenticatedContext(t.Context())
require.NoError(t, err)
err = client.DeleteRecord(ctx, "example.com", "_acme-challenge.example.com")

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"encoding/json"
"net/http"
"testing"
@@ -35,7 +34,7 @@ func TestClient_CreateAuthenticatedContext(t *testing.T) {
}
})
ctx, err := client.CreateAuthenticatedContext(context.Background())
ctx, err := client.CreateAuthenticatedContext(t.Context())
require.NoError(t, err)
at := getAccessToken(ctx)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"net/http"
"net/http/httptest"
@@ -134,7 +133,7 @@ func TestClient_GetZone(t *testing.T) {
t.Run(test.desc, func(t *testing.T) {
client := setupTest(t, "", handlerMock(http.MethodGet, []byte(test.apiResponse)))
zone, err := client.GetZone(context.Background(), test.authFQDN)
zone, err := client.GetZone(t.Context(), test.authFQDN)
if test.expected.errorMsg != "" {
require.EqualError(t, err, test.expected.errorMsg)
@@ -241,7 +240,7 @@ func TestClient_FindTxtRecord(t *testing.T) {
t.Run(test.desc, func(t *testing.T) {
client := setupTest(t, "", handlerMock(http.MethodGet, []byte(test.apiResponse)))
txtRecord, err := client.FindTxtRecord(context.Background(), test.zoneName, test.authFQDN)
txtRecord, err := client.FindTxtRecord(t.Context(), test.zoneName, test.authFQDN)
if test.expected.errorMsg != "" {
require.EqualError(t, err, test.expected.errorMsg)
@@ -350,7 +349,7 @@ func TestClient_ListTxtRecord(t *testing.T) {
t.Run(test.desc, func(t *testing.T) {
client := setupTest(t, "", handlerMock(http.MethodGet, []byte(test.apiResponse)))
txtRecords, err := client.ListTxtRecords(context.Background(), test.zoneName, test.authFQDN)
txtRecords, err := client.ListTxtRecords(t.Context(), test.zoneName, test.authFQDN)
if test.expected.errorMsg != "" {
require.EqualError(t, err, test.expected.errorMsg)
@@ -455,7 +454,7 @@ func TestClient_AddTxtRecord(t *testing.T) {
handlerMock(http.MethodPost, []byte(test.apiResponse))(rw, req)
})
err := client.AddTxtRecord(context.Background(), test.zoneName, test.authFQDN, test.value, test.ttl)
err := client.AddTxtRecord(t.Context(), test.zoneName, test.authFQDN, test.value, test.ttl)
if test.expected.errorMsg != "" {
require.EqualError(t, err, test.expected.errorMsg)
@@ -528,7 +527,7 @@ func TestClient_RemoveTxtRecord(t *testing.T) {
client.BaseURL, _ = url.Parse(server.URL)
err = client.RemoveTxtRecord(context.Background(), test.id, test.zoneName)
err = client.RemoveTxtRecord(t.Context(), test.id, test.zoneName)
if test.expected.errorMsg != "" {
require.EqualError(t, err, test.expected.errorMsg)
@@ -598,7 +597,7 @@ func TestClient_GetUpdateStatus(t *testing.T) {
client.BaseURL, _ = url.Parse(server.URL)
syncProgress, err := client.GetUpdateStatus(context.Background(), test.zoneName)
syncProgress, err := client.GetUpdateStatus(t.Context(), test.zoneName)
if test.expected.errorMsg != "" {
require.EqualError(t, err, test.expected.errorMsg)

View File

@@ -58,7 +58,7 @@ func writeFixtureHandler(method, filename string) http.HandlerFunc {
func TestClient_GetZones(t *testing.T) {
client := setupTest(t, "/zones", writeFixtureHandler(http.MethodGet, "zones.json"))
ctx := mockContext()
ctx := mockContext(t)
zones, err := client.GetZones(ctx, "xxx")
require.NoError(t, err)
@@ -80,7 +80,7 @@ func TestClient_GetZones(t *testing.T) {
func TestClient_GetRecords(t *testing.T) {
client := setupTest(t, "/zones/zzz/records", writeFixtureHandler(http.MethodGet, "records.json"))
ctx := mockContext()
ctx := mockContext(t)
records, err := client.GetRecords(ctx, "zzz")
require.NoError(t, err)
@@ -124,7 +124,7 @@ func TestClient_GetRecords(t *testing.T) {
func TestClient_CreateRecord(t *testing.T) {
client := setupTest(t, "/zones/zzz/records", writeFixtureHandler(http.MethodPost, "record.json"))
ctx := mockContext()
ctx := mockContext(t)
recordReq := Record{
Name: "www.example.com.",
@@ -152,7 +152,7 @@ func TestClient_CreateRecord(t *testing.T) {
func TestClient_DeleteRecord(t *testing.T) {
client := setupTest(t, "/zones/zzz/records/example.com/TXT", writeFixtureHandler(http.MethodDelete, "record.json"))
ctx := mockContext()
ctx := mockContext(t)
err := client.DeleteRecord(ctx, "zzz", "example.com", "TXT")
require.NoError(t, err)

View File

@@ -13,8 +13,10 @@ import (
"github.com/stretchr/testify/require"
)
func mockContext() context.Context {
return context.WithValue(context.Background(), tokenKey, &Token{AccessToken: "xxx"})
func mockContext(t *testing.T) context.Context {
t.Helper()
return context.WithValue(t.Context(), tokenKey, &Token{AccessToken: "xxx"})
}
func tokenHandler(rw http.ResponseWriter, req *http.Request) {
@@ -60,7 +62,7 @@ func TestClient_obtainToken(t *testing.T) {
assert.Nil(t, client.token)
tok, err := client.obtainToken(context.Background())
tok, err := client.obtainToken(t.Context())
require.NoError(t, err)
assert.NotNil(t, tok)
@@ -81,7 +83,7 @@ func TestClient_CreateAuthenticatedContext(t *testing.T) {
assert.Nil(t, client.token)
ctx, err := client.CreateAuthenticatedContext(context.Background())
ctx, err := client.CreateAuthenticatedContext(t.Context())
require.NoError(t, err)
tok := getToken(ctx)

View File

@@ -25,7 +25,7 @@ type Client struct {
}
// NewClient returns a client instance logged into the ConoHa service.
func NewClient(region string, token string) (*Client, error) {
func NewClient(region, token string) (*Client, error) {
baseURL, err := url.Parse(fmt.Sprintf(dnsServiceBaseURL, region))
if err != nil {
return nil, err

View File

@@ -2,7 +2,6 @@ package internal
import (
"bytes"
"context"
"fmt"
"io"
"net/http"
@@ -106,7 +105,7 @@ func TestClient_GetDomainID(t *testing.T) {
mux.Handle("/v1/domains", test.handler)
domainID, err := client.GetDomainID(context.Background(), test.domainName)
domainID, err := client.GetDomainID(t.Context(), test.domainName)
if test.expected.error {
require.Error(t, err)
@@ -177,7 +176,7 @@ func TestClient_CreateRecord(t *testing.T) {
TTL: 300,
}
err := client.CreateRecord(context.Background(), domainID, record)
err := client.CreateRecord(t.Context(), domainID, record)
test.assert(t, err)
})
}
@@ -189,7 +188,7 @@ func TestClient_GetRecordID(t *testing.T) {
mux.HandleFunc("/v1/domains/89acac79-38e7-497d-807c-a011e1310438/records",
writeFixtureHandler(http.MethodGet, "domains-records_GET.json"))
recordID, err := client.GetRecordID(context.Background(), "89acac79-38e7-497d-807c-a011e1310438", "www.example.com.", "A", "15.185.172.153")
recordID, err := client.GetRecordID(t.Context(), "89acac79-38e7-497d-807c-a011e1310438", "www.example.com.", "A", "15.185.172.153")
require.NoError(t, err)
assert.Equal(t, "2e32e609-3a4f-45ba-bdef-e50eacd345ad", recordID)
@@ -207,6 +206,6 @@ func TestClient_DeleteRecord(t *testing.T) {
rw.WriteHeader(http.StatusOK)
})
err := client.DeleteRecord(context.Background(), "89acac79-38e7-497d-807c-a011e1310438", "2e32e609-3a4f-45ba-bdef-e50eacd345ad")
err := client.DeleteRecord(t.Context(), "89acac79-38e7-497d-807c-a011e1310438", "2e32e609-3a4f-45ba-bdef-e50eacd345ad")
require.NoError(t, err)
}

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"net/http"
"net/http/httptest"
"net/url"
@@ -32,7 +31,7 @@ func TestNewClient(t *testing.T) {
},
}
token, err := identifier.GetToken(context.Background(), auth)
token, err := identifier.GetToken(t.Context(), auth)
require.NoError(t, err)
expected := &IdentityResponse{Access: Access{Token: Token{ID: "sample00d88246078f2bexample788f7"}}}

View File

@@ -25,7 +25,7 @@ type Client struct {
}
// NewClient returns a client instance logged into the ConoHa service.
func NewClient(region string, token string) (*Client, error) {
func NewClient(region, token string) (*Client, error) {
baseURL, err := url.Parse(fmt.Sprintf(dnsServiceBaseURL, region))
if err != nil {
return nil, err

View File

@@ -2,7 +2,6 @@ package internal
import (
"bytes"
"context"
"fmt"
"io"
"net/http"
@@ -106,7 +105,7 @@ func TestClient_GetDomainID(t *testing.T) {
mux.Handle("/v1/domains", test.handler)
domainID, err := client.GetDomainID(context.Background(), test.domainName)
domainID, err := client.GetDomainID(t.Context(), test.domainName)
if test.expected.error {
require.Error(t, err)
@@ -177,7 +176,7 @@ func TestClient_CreateRecord(t *testing.T) {
TTL: 300,
}
err := client.CreateRecord(context.Background(), domainID, record)
err := client.CreateRecord(t.Context(), domainID, record)
test.assert(t, err)
})
}
@@ -189,7 +188,7 @@ func TestClient_GetRecordID(t *testing.T) {
mux.HandleFunc("/v1/domains/89acac79-38e7-497d-807c-a011e1310438/records",
writeFixtureHandler(http.MethodGet, "domains-records_GET.json"))
recordID, err := client.GetRecordID(context.Background(), "89acac79-38e7-497d-807c-a011e1310438", "www.example.com.", "A", "15.185.172.153")
recordID, err := client.GetRecordID(t.Context(), "89acac79-38e7-497d-807c-a011e1310438", "www.example.com.", "A", "15.185.172.153")
require.NoError(t, err)
assert.Equal(t, "2e32e609-3a4f-45ba-bdef-e50eacd345ad", recordID)
@@ -207,6 +206,6 @@ func TestClient_DeleteRecord(t *testing.T) {
rw.WriteHeader(http.StatusOK)
})
err := client.DeleteRecord(context.Background(), "89acac79-38e7-497d-807c-a011e1310438", "2e32e609-3a4f-45ba-bdef-e50eacd345ad")
err := client.DeleteRecord(t.Context(), "89acac79-38e7-497d-807c-a011e1310438", "2e32e609-3a4f-45ba-bdef-e50eacd345ad")
require.NoError(t, err)
}

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"net/http"
"net/http/httptest"
"net/url"
@@ -45,7 +44,7 @@ func TestGetToken_HeaderToken(t *testing.T) {
},
}
token, err := identifier.GetToken(context.Background(), auth)
token, err := identifier.GetToken(t.Context(), auth)
require.NoError(t, err)
assert.Equal(t, "sample-header-token-123", token)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"io"
"net/http"
"net/http/httptest"
@@ -48,7 +47,7 @@ func TestDomainService_GetAll(t *testing.T) {
}
})
data, err := client.Domains.GetAll(context.Background(), nil)
data, err := client.Domains.GetAll(t.Context(), nil)
require.NoError(t, err)
expected := []Domain{
@@ -84,7 +83,7 @@ func TestDomainService_Search(t *testing.T) {
}
})
data, err := client.Domains.Search(context.Background(), Exact, "lego.wtf")
data, err := client.Domains.Search(t.Context(), Exact, "lego.wtf")
require.NoError(t, err)
expected := []Domain{

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"encoding/json"
"io"
"net/http"
@@ -35,7 +34,7 @@ func TestTxtRecordService_Create(t *testing.T) {
}
})
records, err := client.TxtRecords.Create(context.Background(), 12345, RecordRequest{})
records, err := client.TxtRecords.Create(t.Context(), 12345, RecordRequest{})
require.NoError(t, err)
recordsJSON, err := json.Marshal(records)
@@ -70,7 +69,7 @@ func TestTxtRecordService_GetAll(t *testing.T) {
}
})
records, err := client.TxtRecords.GetAll(context.Background(), 12345)
records, err := client.TxtRecords.GetAll(t.Context(), 12345)
require.NoError(t, err)
recordsJSON, err := json.Marshal(records)
@@ -105,7 +104,7 @@ func TestTxtRecordService_Get(t *testing.T) {
}
})
record, err := client.TxtRecords.Get(context.Background(), 12345, 6789)
record, err := client.TxtRecords.Get(t.Context(), 12345, 6789)
require.NoError(t, err)
expected := &Record{
@@ -146,7 +145,7 @@ func TestTxtRecordService_Update(t *testing.T) {
}
})
msg, err := client.TxtRecords.Update(context.Background(), 12345, 6789, RecordRequest{})
msg, err := client.TxtRecords.Update(t.Context(), 12345, 6789, RecordRequest{})
require.NoError(t, err)
expected := &SuccessMessage{Success: "Record updated successfully"}
@@ -169,7 +168,7 @@ func TestTxtRecordService_Delete(t *testing.T) {
}
})
msg, err := client.TxtRecords.Delete(context.Background(), 12345, 6789)
msg, err := client.TxtRecords.Delete(t.Context(), 12345, 6789)
require.NoError(t, err)
expected := &SuccessMessage{Success: "Record deleted successfully"}
@@ -199,7 +198,7 @@ func TestTxtRecordService_Search(t *testing.T) {
}
})
records, err := client.TxtRecords.Search(context.Background(), 12345, Exact, "test")
records, err := client.TxtRecords.Search(t.Context(), 12345, Exact, "test")
require.NoError(t, err)
recordsJSON, err := json.Marshal(records)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -92,7 +91,7 @@ func TestClient_CreateAuthenticationToken(t *testing.T) {
mux.HandleFunc("/auth/token", testHandlerAuth(http.MethodPost, http.StatusOK, "auth.json"))
ctx := context.Background()
ctx := t.Context()
token, err := client.CreateAuthenticationToken(ctx)
require.NoError(t, err)
@@ -109,7 +108,7 @@ func TestClient_ListZone(t *testing.T) {
mux.HandleFunc("/dnszones/", testHandler(http.MethodGet, http.StatusOK, "ListZone.json"))
ctx := context.Background()
ctx := t.Context()
zones, err := client.ListZone(ctx)
require.NoError(t, err)
@@ -127,7 +126,7 @@ func TestClient_GetZoneDetails(t *testing.T) {
mux.HandleFunc("/dnszones/example.com", testHandler(http.MethodGet, http.StatusOK, "GetZoneDetails.json"))
ctx := context.Background()
ctx := t.Context()
zone, err := client.GetZoneDetails(ctx, "example.com")
require.NoError(t, err)
@@ -147,7 +146,7 @@ func TestClient_ListRecords(t *testing.T) {
mux.HandleFunc("/dnszones/example.com/records/", testHandler(http.MethodGet, http.StatusOK, "ListRecords.json"))
ctx := context.Background()
ctx := t.Context()
records, err := client.ListRecords(ctx, "example.com")
require.NoError(t, err)
@@ -181,7 +180,7 @@ func TestClient_AddRecord(t *testing.T) {
mux.HandleFunc("/dnszones/example.com/records/", testHandler(http.MethodPost, http.StatusNoContent, ""))
ctx := context.Background()
ctx := t.Context()
record := Record{Name: "www", TTL: 3600, Type: "A", Data: "127.0.0.1"}
@@ -194,7 +193,7 @@ func TestClient_DeleteRecords(t *testing.T) {
mux.HandleFunc("/dnszones/example.com/records/delete", testHandler(http.MethodPost, http.StatusNoContent, ""))
ctx := context.Background()
ctx := t.Context()
record := Record{Name: "www", Type: "A", Data: "127.0.0.1"}
@@ -207,7 +206,7 @@ func TestClient_CommitRecords(t *testing.T) {
mux.HandleFunc("/dnszones/example.com/records/commit", testHandler(http.MethodPost, http.StatusNoContent, ""))
ctx := context.Background()
ctx := t.Context()
err := client.CommitRecords(ctx, "example.com")
require.NoError(t, err)

View File

@@ -24,7 +24,7 @@ type Client struct {
HTTPClient *http.Client
}
func NewClient(baseURL string, username string, token string) (*Client, error) {
func NewClient(baseURL, username, token string) (*Client, error) {
apiEndpoint, err := url.Parse(baseURL)
if err != nil {
return nil, err

View File

@@ -1,7 +1,6 @@
package cpanel
import (
"context"
"fmt"
"io"
"net/http"
@@ -15,7 +14,7 @@ import (
"github.com/stretchr/testify/require"
)
func setupTest(t *testing.T, pattern string, filename string) *Client {
func setupTest(t *testing.T, pattern, filename string) *Client {
t.Helper()
mux := http.NewServeMux()
@@ -55,7 +54,7 @@ func setupTest(t *testing.T, pattern string, filename string) *Client {
func TestClient_FetchZoneInformation(t *testing.T) {
client := setupTest(t, "/execute/DNS/parse_zone", "zone-info.json")
zoneInfo, err := client.FetchZoneInformation(context.Background(), "example.com")
zoneInfo, err := client.FetchZoneInformation(t.Context(), "example.com")
require.NoError(t, err)
expected := []shared.ZoneRecord{{
@@ -73,7 +72,7 @@ func TestClient_FetchZoneInformation(t *testing.T) {
func TestClient_FetchZoneInformation_error(t *testing.T) {
client := setupTest(t, "/execute/DNS/parse_zone", "zone-info_error.json")
zoneInfo, err := client.FetchZoneInformation(context.Background(), "example.com")
zoneInfo, err := client.FetchZoneInformation(t.Context(), "example.com")
require.Error(t, err)
assert.Nil(t, zoneInfo)
@@ -89,7 +88,7 @@ func TestClient_AddRecord(t *testing.T) {
Data: []string{"string1", "string2"},
}
zoneSerial, err := client.AddRecord(context.Background(), 123456, "example.com", record)
zoneSerial, err := client.AddRecord(t.Context(), 123456, "example.com", record)
require.NoError(t, err)
expected := &shared.ZoneSerial{NewSerial: "2021031903"}
@@ -107,7 +106,7 @@ func TestClient_AddRecord_error(t *testing.T) {
Data: []string{"string1", "string2"},
}
zoneSerial, err := client.AddRecord(context.Background(), 123456, "example.com", record)
zoneSerial, err := client.AddRecord(t.Context(), 123456, "example.com", record)
require.Error(t, err)
assert.Nil(t, zoneSerial)
@@ -124,7 +123,7 @@ func TestClient_EditRecord(t *testing.T) {
Data: []string{"string1", "string2"},
}
zoneSerial, err := client.EditRecord(context.Background(), 123456, "example.com", record)
zoneSerial, err := client.EditRecord(t.Context(), 123456, "example.com", record)
require.NoError(t, err)
expected := &shared.ZoneSerial{NewSerial: "2021031903"}
@@ -143,7 +142,7 @@ func TestClient_EditRecord_error(t *testing.T) {
Data: []string{"string1", "string2"},
}
zoneSerial, err := client.EditRecord(context.Background(), 123456, "example.com", record)
zoneSerial, err := client.EditRecord(t.Context(), 123456, "example.com", record)
require.Error(t, err)
assert.Nil(t, zoneSerial)
@@ -152,7 +151,7 @@ func TestClient_EditRecord_error(t *testing.T) {
func TestClient_DeleteRecord(t *testing.T) {
client := setupTest(t, "/execute/DNS/mass_edit_zone", "update-zone.json")
zoneSerial, err := client.DeleteRecord(context.Background(), 123456, "example.com", 0)
zoneSerial, err := client.DeleteRecord(t.Context(), 123456, "example.com", 0)
require.NoError(t, err)
expected := &shared.ZoneSerial{NewSerial: "2021031903"}
@@ -163,7 +162,7 @@ func TestClient_DeleteRecord(t *testing.T) {
func TestClient_DeleteRecord_error(t *testing.T) {
client := setupTest(t, "/execute/DNS/mass_edit_zone", "update-zone_error.json")
zoneSerial, err := client.DeleteRecord(context.Background(), 123456, "example.com", 0)
zoneSerial, err := client.DeleteRecord(t.Context(), 123456, "example.com", 0)
require.Error(t, err)
assert.Nil(t, zoneSerial)

View File

@@ -24,7 +24,7 @@ type Client struct {
HTTPClient *http.Client
}
func NewClient(baseURL string, username string, token string) (*Client, error) {
func NewClient(baseURL, username, token string) (*Client, error) {
apiEndpoint, err := url.Parse(baseURL)
if err != nil {
return nil, err

View File

@@ -1,7 +1,6 @@
package whm
import (
"context"
"fmt"
"io"
"net/http"
@@ -15,7 +14,7 @@ import (
"github.com/stretchr/testify/require"
)
func setupTest(t *testing.T, pattern string, filename string) *Client {
func setupTest(t *testing.T, pattern, filename string) *Client {
t.Helper()
mux := http.NewServeMux()
@@ -55,7 +54,7 @@ func setupTest(t *testing.T, pattern string, filename string) *Client {
func TestClient_FetchZoneInformation(t *testing.T) {
client := setupTest(t, "/json-api/parse_dns_zone", "zone-info.json")
zoneInfo, err := client.FetchZoneInformation(context.Background(), "example.com")
zoneInfo, err := client.FetchZoneInformation(t.Context(), "example.com")
require.NoError(t, err)
expected := []shared.ZoneRecord{{
@@ -73,7 +72,7 @@ func TestClient_FetchZoneInformation(t *testing.T) {
func TestClient_FetchZoneInformation_error(t *testing.T) {
client := setupTest(t, "/json-api/parse_dns_zone", "zone-info_error.json")
zoneInfo, err := client.FetchZoneInformation(context.Background(), "example.com")
zoneInfo, err := client.FetchZoneInformation(t.Context(), "example.com")
require.Error(t, err)
assert.Nil(t, zoneInfo)
@@ -89,7 +88,7 @@ func TestClient_AddRecord(t *testing.T) {
Data: []string{"string1", "string2"},
}
zoneSerial, err := client.AddRecord(context.Background(), 123456, "example.com", record)
zoneSerial, err := client.AddRecord(t.Context(), 123456, "example.com", record)
require.NoError(t, err)
expected := &shared.ZoneSerial{NewSerial: "2021031903"}
@@ -107,7 +106,7 @@ func TestClient_AddRecord_error(t *testing.T) {
Data: []string{"string1", "string2"},
}
zoneSerial, err := client.AddRecord(context.Background(), 123456, "example.com", record)
zoneSerial, err := client.AddRecord(t.Context(), 123456, "example.com", record)
require.Error(t, err)
assert.Nil(t, zoneSerial)
@@ -124,7 +123,7 @@ func TestClient_EditRecord(t *testing.T) {
Data: []string{"string1", "string2"},
}
zoneSerial, err := client.EditRecord(context.Background(), 123456, "example.com", record)
zoneSerial, err := client.EditRecord(t.Context(), 123456, "example.com", record)
require.NoError(t, err)
expected := &shared.ZoneSerial{NewSerial: "2021031903"}
@@ -143,7 +142,7 @@ func TestClient_EditRecord_error(t *testing.T) {
Data: []string{"string1", "string2"},
}
zoneSerial, err := client.EditRecord(context.Background(), 123456, "example.com", record)
zoneSerial, err := client.EditRecord(t.Context(), 123456, "example.com", record)
require.Error(t, err)
assert.Nil(t, zoneSerial)
@@ -152,7 +151,7 @@ func TestClient_EditRecord_error(t *testing.T) {
func TestClient_DeleteRecord(t *testing.T) {
client := setupTest(t, "/json-api/mass_edit_dns_zone", "update-zone.json")
zoneSerial, err := client.DeleteRecord(context.Background(), 123456, "example.com", 0)
zoneSerial, err := client.DeleteRecord(t.Context(), 123456, "example.com", 0)
require.NoError(t, err)
expected := &shared.ZoneSerial{NewSerial: "2021031903"}
@@ -163,7 +162,7 @@ func TestClient_DeleteRecord(t *testing.T) {
func TestClient_DeleteRecord_error(t *testing.T) {
client := setupTest(t, "/json-api/mass_edit_dns_zone", "update-zone_error.json")
zoneSerial, err := client.DeleteRecord(context.Background(), 123456, "example.com", 0)
zoneSerial, err := client.DeleteRecord(t.Context(), 123456, "example.com", 0)
require.Error(t, err)
assert.Nil(t, zoneSerial)

View File

@@ -61,7 +61,7 @@ func (c Client) GetRecords(ctx context.Context, zoneID string, params *GetRecord
}
// GetRecord gets a record by ID.
func (c Client) GetRecord(ctx context.Context, zoneID string, recordID string) (*Record, error) {
func (c Client) GetRecord(ctx context.Context, zoneID, recordID string) (*Record, error) {
endpoint := c.baseURL.JoinPath("zones", zoneID, "dnsrecords", recordID)
req, err := newJSONRequest(ctx, http.MethodGet, endpoint, nil)
@@ -97,7 +97,7 @@ func (c Client) CreateRecord(ctx context.Context, zoneID string, record Record)
}
// EditRecord edits an existing record.
func (c Client) EditRecord(ctx context.Context, zoneID string, recordID string, record Record) (*Record, error) {
func (c Client) EditRecord(ctx context.Context, zoneID, recordID string, record Record) (*Record, error) {
endpoint := c.baseURL.JoinPath("zones", zoneID, "dnsrecords", recordID)
req, err := newJSONRequest(ctx, http.MethodPatch, endpoint, record)
@@ -115,7 +115,7 @@ func (c Client) EditRecord(ctx context.Context, zoneID string, recordID string,
}
// DeleteRecord deletes an existing record.
func (c Client) DeleteRecord(ctx context.Context, zoneID string, recordID string) error {
func (c Client) DeleteRecord(ctx context.Context, zoneID, recordID string) error {
endpoint := c.baseURL.JoinPath("zones", zoneID, "dnsrecords", recordID)
req, err := newJSONRequest(ctx, http.MethodDelete, endpoint, nil)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -77,7 +76,7 @@ func TestGetRecords(t *testing.T) {
mux.HandleFunc("/zones/47c0ecf6c91243308c649ad1d2d618dd/dnsrecords",
testHandler(http.MethodGet, http.StatusOK, "records-GET.json"))
records, err := client.GetRecords(context.Background(), "47c0ecf6c91243308c649ad1d2d618dd", &GetRecordsParameters{DNSType: "TXT", Content: `"test"'`})
records, err := client.GetRecords(t.Context(), "47c0ecf6c91243308c649ad1d2d618dd", &GetRecordsParameters{DNSType: "TXT", Content: `"test"'`})
require.NoError(t, err)
excepted := &GetRecordsResponse{Data: []Record{
@@ -140,7 +139,7 @@ func TestGetRecords_error(t *testing.T) {
mux.HandleFunc("/zones/47c0ecf6c91243308c649ad1d2d618dd/dnsrecords",
testHandler(http.MethodGet, http.StatusUnauthorized, "error.json"))
_, err := client.GetRecords(context.Background(), "47c0ecf6c91243308c649ad1d2d618dd", &GetRecordsParameters{DNSType: "TXT", Content: `"test"'`})
_, err := client.GetRecords(t.Context(), "47c0ecf6c91243308c649ad1d2d618dd", &GetRecordsParameters{DNSType: "TXT", Content: `"test"'`})
require.Error(t, err)
}
@@ -150,7 +149,7 @@ func TestGetRecord(t *testing.T) {
mux.HandleFunc("/zones/47c0ecf6c91243308c649ad1d2d618dd/dnsrecords/812bee17a0b440b0bd5ee099a78b839c",
testHandler(http.MethodGet, http.StatusOK, "record-GET.json"))
record, err := client.GetRecord(context.Background(), "47c0ecf6c91243308c649ad1d2d618dd", "812bee17a0b440b0bd5ee099a78b839c")
record, err := client.GetRecord(t.Context(), "47c0ecf6c91243308c649ad1d2d618dd", "812bee17a0b440b0bd5ee099a78b839c")
require.NoError(t, err)
excepted := &Record{
@@ -169,7 +168,7 @@ func TestGetRecord_error(t *testing.T) {
mux.HandleFunc("/zones/47c0ecf6c91243308c649ad1d2d618dd/dnsrecords/812bee17a0b440b0bd5ee099a78b839c",
testHandler(http.MethodGet, http.StatusUnauthorized, "error.json"))
_, err := client.GetRecord(context.Background(), "47c0ecf6c91243308c649ad1d2d618dd", "812bee17a0b440b0bd5ee099a78b839c")
_, err := client.GetRecord(t.Context(), "47c0ecf6c91243308c649ad1d2d618dd", "812bee17a0b440b0bd5ee099a78b839c")
require.Error(t, err)
}
@@ -186,7 +185,7 @@ func TestCreateRecord(t *testing.T) {
TTL: 120,
}
record, err := client.CreateRecord(context.Background(), "47c0ecf6c91243308c649ad1d2d618dd", r)
record, err := client.CreateRecord(t.Context(), "47c0ecf6c91243308c649ad1d2d618dd", r)
require.NoError(t, err)
excepted := &Record{
@@ -212,7 +211,7 @@ func TestCreateRecord_error(t *testing.T) {
TTL: 120,
}
_, err := client.CreateRecord(context.Background(), "47c0ecf6c91243308c649ad1d2d618dd", r)
_, err := client.CreateRecord(t.Context(), "47c0ecf6c91243308c649ad1d2d618dd", r)
require.Error(t, err)
}
@@ -222,7 +221,7 @@ func TestEditRecord(t *testing.T) {
mux.HandleFunc("/zones/47c0ecf6c91243308c649ad1d2d618dd/dnsrecords/eebc813de2f94d67b09d91e10e2d65c2",
testHandler(http.MethodPatch, http.StatusOK, "record-PATCH.json"))
record, err := client.EditRecord(context.Background(), "47c0ecf6c91243308c649ad1d2d618dd", "eebc813de2f94d67b09d91e10e2d65c2", Record{
record, err := client.EditRecord(t.Context(), "47c0ecf6c91243308c649ad1d2d618dd", "eebc813de2f94d67b09d91e10e2d65c2", Record{
Content: "foo",
})
require.NoError(t, err)
@@ -243,7 +242,7 @@ func TestEditRecord_error(t *testing.T) {
mux.HandleFunc("/zones/47c0ecf6c91243308c649ad1d2d618dd/dnsrecords/eebc813de2f94d67b09d91e10e2d65c2",
testHandler(http.MethodPatch, http.StatusUnauthorized, "error.json"))
_, err := client.EditRecord(context.Background(), "47c0ecf6c91243308c649ad1d2d618dd", "eebc813de2f94d67b09d91e10e2d65c2", Record{
_, err := client.EditRecord(t.Context(), "47c0ecf6c91243308c649ad1d2d618dd", "eebc813de2f94d67b09d91e10e2d65c2", Record{
Content: "foo",
})
require.Error(t, err)
@@ -255,7 +254,7 @@ func TestDeleteRecord(t *testing.T) {
mux.HandleFunc("/zones/47c0ecf6c91243308c649ad1d2d618dd/dnsrecords/653464211b7447a1bee6b8fcb9fb86df",
testHandler(http.MethodDelete, http.StatusOK, "record-DELETE.json"))
err := client.DeleteRecord(context.Background(), "47c0ecf6c91243308c649ad1d2d618dd", "653464211b7447a1bee6b8fcb9fb86df")
err := client.DeleteRecord(t.Context(), "47c0ecf6c91243308c649ad1d2d618dd", "653464211b7447a1bee6b8fcb9fb86df")
require.NoError(t, err)
}
@@ -265,7 +264,7 @@ func TestDeleteRecord_error(t *testing.T) {
mux.HandleFunc("/zones/47c0ecf6c91243308c649ad1d2d618dd/dnsrecords/653464211b7447a1bee6b8fcb9fb86df",
testHandler(http.MethodDelete, http.StatusUnauthorized, "error.json"))
err := client.DeleteRecord(context.Background(), "47c0ecf6c91243308c649ad1d2d618dd", "653464211b7447a1bee6b8fcb9fb86df")
err := client.DeleteRecord(t.Context(), "47c0ecf6c91243308c649ad1d2d618dd", "653464211b7447a1bee6b8fcb9fb86df")
require.Error(t, err)
}
@@ -274,7 +273,7 @@ func TestGetZones(t *testing.T) {
mux.HandleFunc("/", testHandler(http.MethodGet, http.StatusOK, "service-cdn-zones.json"))
zones, err := client.GetZones(context.Background())
zones, err := client.GetZones(t.Context())
require.NoError(t, err)
excepted := []Zone{{
@@ -307,6 +306,6 @@ func TestGetZones_error(t *testing.T) {
mux.HandleFunc("/", testHandler(http.MethodGet, http.StatusUnauthorized, "error.json"))
_, err := client.GetZones(context.Background())
_, err := client.GetZones(t.Context())
require.Error(t, err)
}

View File

@@ -2,7 +2,6 @@ package internal
import (
"bytes"
"context"
"fmt"
"io"
"net/http"
@@ -98,7 +97,7 @@ func TestClient_AddTxtRecord(t *testing.T) {
TTL: 30,
}
newRecord, err := client.AddTxtRecord(context.Background(), "example.com", record)
newRecord, err := client.AddTxtRecord(t.Context(), "example.com", record)
require.NoError(t, err)
expected := &TxtRecordResponse{DomainRecord: Record{
@@ -134,6 +133,6 @@ func TestClient_RemoveTxtRecord(t *testing.T) {
rw.WriteHeader(http.StatusNoContent)
})
err := client.RemoveTxtRecord(context.Background(), "example.com", 1234567)
err := client.RemoveTxtRecord(t.Context(), "example.com", 1234567)
require.NoError(t, err)
}

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"encoding/json"
"fmt"
"io"
@@ -92,7 +91,7 @@ func TestClient_SetRecord(t *testing.T) {
TTL: 123,
}
err := client.SetRecord(context.Background(), "example.com", record)
err := client.SetRecord(t.Context(), "example.com", record)
require.NoError(t, err)
}
@@ -110,7 +109,7 @@ func TestClient_SetRecord_error(t *testing.T) {
TTL: 123,
}
err := client.SetRecord(context.Background(), "example.com", record)
err := client.SetRecord(t.Context(), "example.com", record)
require.EqualError(t, err, "[status code 500] Cannot View Dns Record: OOPS")
}
@@ -133,7 +132,7 @@ func TestClient_DeleteRecord(t *testing.T) {
Value: "txtTXTtxt",
}
err := client.DeleteRecord(context.Background(), "example.com", record)
err := client.DeleteRecord(t.Context(), "example.com", record)
require.NoError(t, err)
}
@@ -150,6 +149,6 @@ func TestClient_DeleteRecord_error(t *testing.T) {
Value: "txtTXTtxt",
}
err := client.DeleteRecord(context.Background(), "example.com", record)
err := client.DeleteRecord(t.Context(), "example.com", record)
require.EqualError(t, err, "[status code 500] Cannot View Dns Record: OOPS")
}

View File

@@ -6,7 +6,6 @@ import (
"errors"
"fmt"
"net/http"
"strings"
"time"
"github.com/go-acme/lego/v4/challenge/dns01"
@@ -62,9 +61,9 @@ func NewDNSProvider() (*DNSProvider, error) {
return nil, fmt.Errorf("dnshomede: %w", err)
}
credentials, err := parseCredentials(values[EnvCredentials])
credentials, err := env.ParsePairs(values[EnvCredentials])
if err != nil {
return nil, fmt.Errorf("dnshomede: %w", err)
return nil, fmt.Errorf("dnshomede: credentials: %w", err)
}
config.Credentials = credentials
@@ -131,19 +130,3 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
func (d *DNSProvider) Sequential() time.Duration {
return d.config.SequenceInterval
}
func parseCredentials(raw string) (map[string]string, error) {
credentials := make(map[string]string)
credStrings := strings.Split(strings.TrimSuffix(raw, ","), ",")
for _, credPair := range credStrings {
data := strings.Split(credPair, ":")
if len(data) != 2 {
return nil, fmt.Errorf("invalid credential pair: %q", credPair)
}
credentials[strings.TrimSpace(data[0])] = strings.TrimSpace(data[1])
}
return credentials, nil
}

View File

@@ -34,7 +34,7 @@ func TestNewDNSProvider(t *testing.T) {
envVars: map[string]string{
EnvCredentials: ",",
},
expected: `dnshomede: invalid credential pair: ""`,
expected: `dnshomede: credentials: incorrect pair: `,
},
{
desc: "missing password",
@@ -55,7 +55,7 @@ func TestNewDNSProvider(t *testing.T) {
envVars: map[string]string{
EnvCredentials: "example.org:123,example.net",
},
expected: `dnshomede: invalid credential pair: "example.net"`,
expected: "dnshomede: credentials: incorrect pair: example.net",
},
{
desc: "missing credentials",

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"net/http"
"net/http/httptest"
@@ -31,7 +30,7 @@ func TestClient_Add(t *testing.T) {
client := setupTest(t, map[string]string{"example.org": "secret"}, handlerMock(addAction, txtValue))
err := client.Add(context.Background(), "example.org", txtValue)
err := client.Add(t.Context(), "example.org", txtValue)
require.NoError(t, err)
}
@@ -40,7 +39,7 @@ func TestClient_Add_error(t *testing.T) {
client := setupTest(t, map[string]string{"example.com": "secret"}, handlerMock(addAction, txtValue))
err := client.Add(context.Background(), "example.org", txtValue)
err := client.Add(t.Context(), "example.org", txtValue)
require.Error(t, err)
}
@@ -49,7 +48,7 @@ func TestClient_Remove(t *testing.T) {
client := setupTest(t, map[string]string{"example.org": "secret"}, handlerMock(removeAction, txtValue))
err := client.Remove(context.Background(), "example.org", txtValue)
err := client.Remove(t.Context(), "example.org", txtValue)
require.NoError(t, err)
}
@@ -58,7 +57,7 @@ func TestClient_Remove_error(t *testing.T) {
client := setupTest(t, map[string]string{"example.com": "secret"}, handlerMock(removeAction, txtValue))
err := client.Remove(context.Background(), "example.org", txtValue)
err := client.Remove(t.Context(), "example.org", txtValue)
require.Error(t, err)
}

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -81,13 +80,13 @@ func setupTest(t *testing.T, method, pattern string, status int, file string) *C
func TestClient_UpdateTxtRecord(t *testing.T) {
client := setupTest(t, http.MethodGet, "/letsencrypt", http.StatusOK, "success.json")
err := client.UpdateTxtRecord(context.Background(), "example.com.", "value", false)
err := client.UpdateTxtRecord(t.Context(), "example.com.", "value", false)
require.NoError(t, err)
}
func TestClient_UpdateTxtRecord_clear(t *testing.T) {
client := setupTest(t, http.MethodGet, "/letsencrypt", http.StatusOK, "success.json")
err := client.UpdateTxtRecord(context.Background(), "example.com.", "value", true)
err := client.UpdateTxtRecord(t.Context(), "example.com.", "value", true)
require.NoError(t, err)
}

View File

@@ -72,7 +72,7 @@ func (c *Client) GetDomainByName(ctx context.Context, domain string) (*Domain, e
// CreateTXTRecord creates a TXT record with the provided host (subdomain) and data.
// https://api.domeneshop.no/docs/#tag/dns/paths/~1domains~1{domainId}~1dns/post
func (c *Client) CreateTXTRecord(ctx context.Context, domain *Domain, host string, data string) error {
func (c *Client) CreateTXTRecord(ctx context.Context, domain *Domain, host, data string) error {
endpoint := c.baseURL.JoinPath("domains", strconv.Itoa(domain.ID), "dns")
record := DNSRecord{
@@ -92,7 +92,7 @@ func (c *Client) CreateTXTRecord(ctx context.Context, domain *Domain, host strin
// DeleteTXTRecord deletes the DNS record matching the provided host and data.
// https://api.domeneshop.no/docs/#tag/dns/paths/~1domains~1{domainId}~1dns~1{recordId}/delete
func (c *Client) DeleteTXTRecord(ctx context.Context, domain *Domain, host string, data string) error {
func (c *Client) DeleteTXTRecord(ctx context.Context, domain *Domain, host, data string) error {
record, err := c.getDNSRecordByHostData(ctx, *domain, host, data)
if err != nil {
return err
@@ -110,7 +110,7 @@ func (c *Client) DeleteTXTRecord(ctx context.Context, domain *Domain, host strin
// getDNSRecordByHostData finds the first matching DNS record with the provided host and data.
// https://api.domeneshop.no/docs/#operation/getDnsRecords
func (c *Client) getDNSRecordByHostData(ctx context.Context, domain Domain, host string, data string) (*DNSRecord, error) {
func (c *Client) getDNSRecordByHostData(ctx context.Context, domain Domain, host, data string) (*DNSRecord, error) {
endpoint := c.baseURL.JoinPath("domains", strconv.Itoa(domain.ID), "dns")
req, err := newJSONRequest(ctx, http.MethodGet, endpoint, nil)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"net/http"
"net/http/httptest"
"net/url"
@@ -45,7 +44,7 @@ func TestClient_CreateTXTRecord(t *testing.T) {
_, _ = rw.Write([]byte(`{"id": 1}`))
})
err := client.CreateTXTRecord(context.Background(), &Domain{ID: 1}, "example", "txtTXTtxt")
err := client.CreateTXTRecord(t.Context(), &Domain{ID: 1}, "example", "txtTXTtxt")
require.NoError(t, err)
}
@@ -88,7 +87,7 @@ func TestClient_DeleteTXTRecord(t *testing.T) {
}
})
err := client.DeleteTXTRecord(context.Background(), &Domain{ID: 1}, "example.com", "txtTXTtxt")
err := client.DeleteTXTRecord(t.Context(), &Domain{ID: 1}, "example.com", "txtTXTtxt")
require.NoError(t, err)
}
@@ -118,7 +117,7 @@ func TestClient_getDNSRecordByHostData(t *testing.T) {
]`))
})
record, err := client.getDNSRecordByHostData(context.Background(), Domain{ID: 1}, "example.com", "txtTXTtxt")
record, err := client.getDNSRecordByHostData(t.Context(), Domain{ID: 1}, "example.com", "txtTXTtxt")
require.NoError(t, err)
expected := &DNSRecord{
@@ -171,7 +170,7 @@ func TestClient_GetDomainByName(t *testing.T) {
]`))
})
domain, err := client.GetDomainByName(context.Background(), "example.com")
domain, err := client.GetDomainByName(t.Context(), "example.com")
require.NoError(t, err)
expected := &Domain{

View File

@@ -28,7 +28,7 @@ type Client struct {
}
// NewClient Creates a new Client.
func NewClient(customerName string, username string, password string) *Client {
func NewClient(customerName, username, password string) *Client {
baseURL, _ := url.Parse(defaultBaseURL)
return &Client{

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -103,20 +102,20 @@ func unauthenticatedHandler(method string, status int, file string) http.Handler
func TestClient_Publish(t *testing.T) {
client := setupTest(t, "/Zone/example.com", unauthenticatedHandler(http.MethodPut, http.StatusOK, "publish.json"))
err := client.Publish(context.Background(), "example.com", "my message")
err := client.Publish(t.Context(), "example.com", "my message")
require.NoError(t, err)
}
func TestClient_AddTXTRecord(t *testing.T) {
client := setupTest(t, "/TXTRecord/example.com/example.com.", unauthenticatedHandler(http.MethodPost, http.StatusCreated, "create-txt-record.json"))
err := client.AddTXTRecord(context.Background(), "example.com", "example.com.", "txt", 120)
err := client.AddTXTRecord(t.Context(), "example.com", "example.com.", "txt", 120)
require.NoError(t, err)
}
func TestClient_RemoveTXTRecord(t *testing.T) {
client := setupTest(t, "/TXTRecord/example.com/example.com.", unauthenticatedHandler(http.MethodDelete, http.StatusOK, ""))
err := client.RemoveTXTRecord(context.Background(), "example.com", "example.com.")
err := client.RemoveTXTRecord(t.Context(), "example.com", "example.com.")
require.NoError(t, err)
}

View File

@@ -9,14 +9,16 @@ import (
"github.com/stretchr/testify/require"
)
func mockContext() context.Context {
return context.WithValue(context.Background(), tokenKey, "tok")
func mockContext(t *testing.T) context.Context {
t.Helper()
return context.WithValue(t.Context(), tokenKey, "tok")
}
func TestClient_login(t *testing.T) {
client := setupTest(t, "/Session", unauthenticatedHandler(http.MethodPost, http.StatusOK, "login.json"))
sess, err := client.login(context.Background())
sess, err := client.login(t.Context())
require.NoError(t, err)
expected := session{Token: "tok", Version: "456"}
@@ -27,14 +29,14 @@ func TestClient_login(t *testing.T) {
func TestClient_Logout(t *testing.T) {
client := setupTest(t, "/Session", authenticatedHandler(http.MethodDelete, http.StatusOK, ""))
err := client.Logout(mockContext())
err := client.Logout(mockContext(t))
require.NoError(t, err)
}
func TestClient_CreateAuthenticatedContext(t *testing.T) {
client := setupTest(t, "/Session", unauthenticatedHandler(http.MethodPost, http.StatusOK, "login.json"))
ctx, err := client.CreateAuthenticatedContext(context.Background())
ctx, err := client.CreateAuthenticatedContext(t.Context())
require.NoError(t, err)
at := getToken(ctx)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"net/http"
"net/http/httptest"
"testing"
@@ -46,13 +45,13 @@ func setupTest(t *testing.T, message string) *Client {
func TestAddTXTRecord(t *testing.T) {
client := setupTest(t, "success")
err := client.AddTXTRecord(context.Background(), "example.com", "sub.example.com", "value")
err := client.AddTXTRecord(t.Context(), "example.com", "sub.example.com", "value")
require.NoError(t, err)
}
func TestAddTXTRecord_error(t *testing.T) {
client := setupTest(t, "error: authentification failed")
err := client.AddTXTRecord(context.Background(), "example.com", "sub.example.com", "value")
err := client.AddTXTRecord(t.Context(), "example.com", "sub.example.com", "value")
require.EqualError(t, err, "error: authentification failed")
}

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -97,7 +96,7 @@ func TestGetRootDomain(t *testing.T) {
client := setupTest(t, http.MethodGet, test.pattern, test.status, test.file)
domain, err := client.GetRootDomain(context.Background(), "test.lego.freeddns.org")
domain, err := client.GetRootDomain(t.Context(), "test.lego.freeddns.org")
if test.expected.error != "" {
assert.EqualError(t, err, test.expected.error)
@@ -185,7 +184,7 @@ func TestGetRecords(t *testing.T) {
client := setupTest(t, http.MethodGet, test.pattern, test.status, test.file)
records, err := client.GetRecords(context.Background(), "_acme-challenge.lego.freeddns.org", "TXT")
records, err := client.GetRecords(t.Context(), "_acme-challenge.lego.freeddns.org", "TXT")
if test.expected.error != "" {
assert.EqualError(t, err, test.expected.error)
@@ -245,7 +244,7 @@ func TestAddNewRecord(t *testing.T) {
TTL: 300,
}
err := client.AddNewRecord(context.Background(), 9007481, record)
err := client.AddNewRecord(t.Context(), 9007481, record)
if test.expected.error != "" {
assert.EqualError(t, err, test.expected.error)
@@ -292,7 +291,7 @@ func TestDeleteRecord(t *testing.T) {
client := setupTest(t, http.MethodDelete, test.pattern, test.status, test.file)
err := client.DeleteRecord(context.Background(), 9007481, 6041418)
err := client.DeleteRecord(t.Context(), 9007481, 6041418)
if test.expected.error != "" {
assert.EqualError(t, err, test.expected.error)

View File

@@ -26,7 +26,7 @@ type Client struct {
}
// NewClient Creates a new Client.
func NewClient(token string, key string) *Client {
func NewClient(token, key string) *Client {
baseURL, _ := url.Parse(DefaultBaseURL)
return &Client{

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -70,7 +69,7 @@ func setupTest(t *testing.T, method, pattern string, status int, file string) *C
func TestClient_ListZones(t *testing.T) {
client := setupTest(t, http.MethodGet, "/zones/records/all/example.com", http.StatusOK, "list-zone.json")
zones, err := client.ListZones(context.Background(), "example.com")
zones, err := client.ListZones(t.Context(), "example.com")
require.NoError(t, err)
expected := []ZoneRecord{{
@@ -90,7 +89,7 @@ func TestClient_ListZones(t *testing.T) {
func TestClient_ListZones_error(t *testing.T) {
client := setupTest(t, http.MethodGet, "/zones/records/all/example.com", http.StatusOK, "error1.json")
_, err := client.ListZones(context.Background(), "example.com")
_, err := client.ListZones(t.Context(), "example.com")
require.EqualError(t, err, "code 420: Enhance Your Calm. Rate limit exceeded (too many requests) OR you did NOT provide any credentials with your request!")
}
@@ -106,7 +105,7 @@ func TestClient_AddRecord(t *testing.T) {
Priority: "0",
}
recordID, err := client.AddRecord(context.Background(), "example.com", record)
recordID, err := client.AddRecord(t.Context(), "example.com", record)
require.NoError(t, err)
assert.Equal(t, "xxx", recordID)
@@ -124,13 +123,13 @@ func TestClient_AddRecord_error(t *testing.T) {
Priority: "0",
}
_, err := client.AddRecord(context.Background(), "example.com", record)
_, err := client.AddRecord(t.Context(), "example.com", record)
require.EqualError(t, err, "code 420: Enhance Your Calm. Rate limit exceeded (too many requests) OR you did NOT provide any credentials with your request!")
}
func TestClient_DeleteRecord(t *testing.T) {
client := setupTest(t, http.MethodDelete, "/zones/records/example.com/xxx", http.StatusOK, "")
err := client.DeleteRecord(context.Background(), "example.com", "xxx")
err := client.DeleteRecord(t.Context(), "example.com", "xxx")
require.NoError(t, err)
}

View File

@@ -22,7 +22,7 @@ type Client struct {
password string
}
func NewClient(hostname string, username string, password string) *Client {
func NewClient(hostname, username, password string) *Client {
baseURL, _ := url.Parse(fmt.Sprintf("https://%s/rest/", hostname))
return &Client{

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -72,7 +71,7 @@ func setupTest(t *testing.T, method, pattern string, status int, file string) *C
func TestListRecords(t *testing.T) {
client := setupTest(t, http.MethodGet, "/dns_rr_list", http.StatusOK, "dns_rr_list.json")
ctx := context.Background()
ctx := t.Context()
records, err := client.ListRecords(ctx)
require.NoError(t, err)
@@ -339,7 +338,7 @@ func TestListRecords(t *testing.T) {
func TestGetRecord(t *testing.T) {
client := setupTest(t, http.MethodGet, "/dns_rr_info", http.StatusOK, "dns_rr_info.json")
ctx := context.Background()
ctx := t.Context()
record, err := client.GetRecord(ctx, "239")
require.NoError(t, err)
@@ -386,7 +385,7 @@ func TestGetRecord(t *testing.T) {
func TestAddRecord(t *testing.T) {
client := setupTest(t, http.MethodPost, "/dns_rr_add", http.StatusCreated, "dns_rr_add.json")
ctx := context.Background()
ctx := t.Context()
r := ResourceRecord{
RRName: "test.example.com",
@@ -407,7 +406,7 @@ func TestAddRecord(t *testing.T) {
func TestDeleteRecord(t *testing.T) {
client := setupTest(t, http.MethodDelete, "/dns_rr_delete", http.StatusOK, "dns_rr_delete.json")
ctx := context.Background()
ctx := t.Context()
resp, err := client.DeleteRecord(ctx, DeleteInputParameters{RRID: "251"})
require.NoError(t, err)
@@ -420,7 +419,7 @@ func TestDeleteRecord(t *testing.T) {
func TestDeleteRecord_error(t *testing.T) {
client := setupTest(t, http.MethodDelete, "/dns_rr_delete", http.StatusBadRequest, "dns_rr_delete-error.json")
ctx := context.Background()
ctx := t.Context()
_, err := client.DeleteRecord(ctx, DeleteInputParameters{RRID: "251"})
require.ErrorAs(t, err, &APIError{})

View File

@@ -77,7 +77,7 @@ func (c Client) CreateHostRecord(ctx context.Context, domain string, record Reco
// RemoveHostRecord removes a record for a domain.
// https://docs.userapi.epik.com/v2/#/DNS%20Host%20Records/removeHostRecord
func (c Client) RemoveHostRecord(ctx context.Context, domain string, recordID string) (*Data, error) {
func (c Client) RemoveHostRecord(ctx context.Context, domain, recordID string) (*Data, error) {
params := url.Values{}
params.Set("ID", recordID)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -34,7 +33,7 @@ func TestClient_GetDNSRecords(t *testing.T) {
mux.HandleFunc("/domains/example.com/records", testHandler(http.MethodGet, http.StatusOK, "getDnsRecord.json"))
records, err := client.GetDNSRecords(context.Background(), "example.com")
records, err := client.GetDNSRecords(t.Context(), "example.com")
require.NoError(t, err)
expected := []Record{
@@ -93,7 +92,7 @@ func TestClient_GetDNSRecords_error(t *testing.T) {
mux.HandleFunc("/domains/example.com/records", testHandler(http.MethodGet, http.StatusUnauthorized, "error.json"))
_, err := client.GetDNSRecords(context.Background(), "example.com")
_, err := client.GetDNSRecords(t.Context(), "example.com")
require.Error(t, err)
}
@@ -110,7 +109,7 @@ func TestClient_CreateHostRecord(t *testing.T) {
TTL: 300,
}
data, err := client.CreateHostRecord(context.Background(), "example.com", record)
data, err := client.CreateHostRecord(t.Context(), "example.com", record)
require.NoError(t, err)
expected := &Data{
@@ -134,7 +133,7 @@ func TestClient_CreateHostRecord_error(t *testing.T) {
TTL: 300,
}
_, err := client.CreateHostRecord(context.Background(), "example.com", record)
_, err := client.CreateHostRecord(t.Context(), "example.com", record)
require.Error(t, err)
}
@@ -143,7 +142,7 @@ func TestClient_RemoveHostRecord(t *testing.T) {
mux.HandleFunc("/domains/example.com/records", testHandler(http.MethodDelete, http.StatusOK, "removeHostRecord.json"))
data, err := client.RemoveHostRecord(context.Background(), "example.com", "abc123")
data, err := client.RemoveHostRecord(t.Context(), "example.com", "abc123")
require.NoError(t, err)
expected := &Data{
@@ -159,7 +158,7 @@ func TestClient_RemoveHostRecord_error(t *testing.T) {
mux.HandleFunc("/domains/example.com/records", testHandler(http.MethodDelete, http.StatusUnauthorized, "error.json"))
_, err := client.RemoveHostRecord(context.Background(), "example.com", "abc123")
_, err := client.RemoveHostRecord(t.Context(), "example.com", "abc123")
require.Error(t, err)
}

View File

@@ -6,26 +6,26 @@ type LogRecorder struct {
mock.Mock
}
func (*LogRecorder) Fatal(args ...interface{}) {
func (*LogRecorder) Fatal(args ...any) {
panic("implement me")
}
func (*LogRecorder) Fatalln(args ...interface{}) {
func (*LogRecorder) Fatalln(args ...any) {
panic("implement me")
}
func (*LogRecorder) Fatalf(format string, args ...interface{}) {
func (*LogRecorder) Fatalf(format string, args ...any) {
panic("implement me")
}
func (*LogRecorder) Print(args ...interface{}) {
func (*LogRecorder) Print(args ...any) {
panic("implement me")
}
func (l *LogRecorder) Println(args ...interface{}) {
func (l *LogRecorder) Println(args ...any) {
l.Called(args...)
}
func (*LogRecorder) Printf(format string, args ...interface{}) {
func (*LogRecorder) Printf(format string, args ...any) {
panic("implement me")
}

View File

@@ -207,7 +207,7 @@ func (d *DNSProvider) findExistingZone(zoneName string) (*egoscale.DNSDomain, er
// findExistingRecordID Query Exoscale to find an existing record for this name.
// Returns empty result if no record could be found.
func (d *DNSProvider) findExistingRecordID(zoneID egoscale.UUID, recordName string, value string) (egoscale.UUID, error) {
func (d *DNSProvider) findExistingRecordID(zoneID egoscale.UUID, recordName, value string) (egoscale.UUID, error) {
ctx := context.Background()
records, err := d.client.ListDNSDomainRecords(ctx, zoneID)

View File

@@ -27,7 +27,7 @@ type Client struct {
}
// NewClient creates a new Client.
func NewClient(apiToken string, tenantName string) (*Client, error) {
func NewClient(apiToken, tenantName string) (*Client, error) {
if apiToken == "" {
return nil, errors.New("credentials missing")
}

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"io"
"net/http"
"net/http/httptest"
@@ -64,7 +63,7 @@ func TestClient_Create(t *testing.T) {
},
}
result, err := client.CreateRRSet(context.Background(), "example.com", "groupA", rrSet)
result, err := client.CreateRRSet(t.Context(), "example.com", "groupA", rrSet)
require.NoError(t, err)
expected := &APIRRSet{
@@ -94,14 +93,14 @@ func TestClient_Create_error(t *testing.T) {
},
}
_, err := client.CreateRRSet(context.Background(), "example.com", "groupA", rrSet)
_, err := client.CreateRRSet(t.Context(), "example.com", "groupA", rrSet)
require.Error(t, err)
}
func TestClient_Get(t *testing.T) {
client := setupTest(t, "GET /api/config/dns/namespaces/system/dns_zones/example.com/rrsets/groupA/www/TXT", http.StatusOK, "get.json")
result, err := client.GetRRSet(context.Background(), "example.com", "groupA", "www", "TXT")
result, err := client.GetRRSet(t.Context(), "example.com", "groupA", "www", "TXT")
require.NoError(t, err)
expected := &APIRRSet{
@@ -125,7 +124,7 @@ func TestClient_Get(t *testing.T) {
func TestClient_Get_not_found(t *testing.T) {
client := setupTest(t, "GET /api/config/dns/namespaces/system/dns_zones/example.com/rrsets/groupA/www/TXT", http.StatusNotFound, "error_404.json")
result, err := client.GetRRSet(context.Background(), "example.com", "groupA", "www", "TXT")
result, err := client.GetRRSet(t.Context(), "example.com", "groupA", "www", "TXT")
require.NoError(t, err)
assert.Nil(t, result)
@@ -134,14 +133,14 @@ func TestClient_Get_not_found(t *testing.T) {
func TestClient_Get_error(t *testing.T) {
client := setupTest(t, "GET /api/config/dns/namespaces/system/dns_zones/example.com/rrsets/groupA/www/TXT", http.StatusBadRequest, "")
_, err := client.GetRRSet(context.Background(), "example.com", "groupA", "www", "TXT")
_, err := client.GetRRSet(t.Context(), "example.com", "groupA", "www", "TXT")
require.Error(t, err)
}
func TestClient_Delete(t *testing.T) {
client := setupTest(t, "DELETE /api/config/dns/namespaces/system/dns_zones/example.com/rrsets/groupA/www/TXT", http.StatusOK, "get.json")
result, err := client.DeleteRRSet(context.Background(), "example.com", "groupA", "www", "TXT")
result, err := client.DeleteRRSet(t.Context(), "example.com", "groupA", "www", "TXT")
require.NoError(t, err)
expected := &APIRRSet{
@@ -165,7 +164,7 @@ func TestClient_Delete(t *testing.T) {
func TestClient_Delete_error(t *testing.T) {
client := setupTest(t, "DELETE /api/config/dns/namespaces/system/dns_zones/example.com/rrsets/groupA/www/TXT", http.StatusBadRequest, "")
_, err := client.DeleteRRSet(context.Background(), "example.com", "groupA", "www", "TXT")
_, err := client.DeleteRRSet(t.Context(), "example.com", "groupA", "www", "TXT")
require.Error(t, err)
}
@@ -181,7 +180,7 @@ func TestClient_Replace(t *testing.T) {
},
}
result, err := client.ReplaceRRSet(context.Background(), "example.com", "groupA", "www", "TXT", rrSet)
result, err := client.ReplaceRRSet(t.Context(), "example.com", "groupA", "www", "TXT", rrSet)
require.NoError(t, err)
expected := &APIRRSet{
@@ -214,6 +213,6 @@ func TestClient_Replace_error(t *testing.T) {
},
}
_, err := client.ReplaceRRSet(context.Background(), "example.com", "groupA", "www", "TXT", rrSet)
_, err := client.ReplaceRRSet(t.Context(), "example.com", "groupA", "www", "TXT", rrSet)
require.Error(t, err)
}

View File

@@ -1,6 +1,7 @@
package gcloud
import (
"context"
"encoding/json"
"fmt"
"net/http"
@@ -11,7 +12,6 @@ import (
"github.com/go-acme/lego/v4/platform/tester"
"github.com/stretchr/testify/require"
"golang.org/x/net/context"
"golang.org/x/oauth2/google"
"google.golang.org/api/dns/v1"
)

View File

@@ -116,7 +116,7 @@ func (c *Client) updateRRSet(ctx context.Context, zone, name string, record RRSe
return c.doRequest(ctx, http.MethodPut, endpoint, record, nil)
}
func (c *Client) doRequest(ctx context.Context, method string, endpoint *url.URL, bodyParams any, result any) error {
func (c *Client) doRequest(ctx context.Context, method string, endpoint *url.URL, bodyParams, result any) error {
req, err := newJSONRequest(ctx, method, endpoint, bodyParams)
if err != nil {
return fmt.Errorf("new request: %w", err)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"encoding/json"
"fmt"
"net/http"
@@ -44,7 +43,7 @@ func TestClient_GetZone(t *testing.T) {
next: handleJSONResponse(expected),
})
zone, err := client.GetZone(context.Background(), "example.com")
zone, err := client.GetZone(t.Context(), "example.com")
require.NoError(t, err)
assert.Equal(t, expected, zone)
@@ -58,7 +57,7 @@ func TestClient_GetZone_error(t *testing.T) {
next: handleAPIError(),
})
_, err := client.GetZone(context.Background(), "example.com")
_, err := client.GetZone(t.Context(), "example.com")
require.Error(t, err)
}
@@ -77,7 +76,7 @@ func TestClient_GetRRSet(t *testing.T) {
next: handleJSONResponse(expected),
})
rrSet, err := client.GetRRSet(context.Background(), "example.com", "foo.example.com")
rrSet, err := client.GetRRSet(t.Context(), "example.com", "foo.example.com")
require.NoError(t, err)
assert.Equal(t, expected, rrSet)
@@ -91,7 +90,7 @@ func TestClient_GetRRSet_error(t *testing.T) {
next: handleAPIError(),
})
_, err := client.GetRRSet(context.Background(), "example.com", "foo.example.com")
_, err := client.GetRRSet(t.Context(), "example.com", "foo.example.com")
require.Error(t, err)
}
@@ -101,7 +100,7 @@ func TestClient_DeleteRRSet(t *testing.T) {
mux.Handle("/v2/zones/test.example.com/my.test.example.com/"+txtRecordType,
validationHandler{method: http.MethodDelete})
err := client.DeleteRRSet(context.Background(), "test.example.com", "my.test.example.com.")
err := client.DeleteRRSet(t.Context(), "test.example.com", "my.test.example.com.")
require.NoError(t, err)
}
@@ -113,7 +112,7 @@ func TestClient_DeleteRRSet_error(t *testing.T) {
next: handleAPIError(),
})
err := client.DeleteRRSet(context.Background(), "test.example.com", "my.test.example.com.")
err := client.DeleteRRSet(t.Context(), "test.example.com", "my.test.example.com.")
require.NoError(t, err)
}
@@ -183,7 +182,7 @@ func TestClient_AddRRSet(t *testing.T) {
mux.Handle(pattern, handler)
}
err := cl.AddRRSet(context.Background(), test.zone, test.recordName, test.value, testTTL)
err := cl.AddRRSet(t.Context(), test.zone, test.recordName, test.value, testTTL)
if test.wantErr {
require.Error(t, err)
return
@@ -223,7 +222,7 @@ func handleAPIError() http.HandlerFunc {
}
}
func handleJSONResponse(data interface{}) http.HandlerFunc {
func handleJSONResponse(data any) http.HandlerFunc {
return func(rw http.ResponseWriter, req *http.Request) {
err := json.NewEncoder(rw).Encode(data)
if err != nil {

View File

@@ -24,7 +24,7 @@ type Client struct {
HTTPClient *http.Client
}
func NewClient(apiUser string, apiKey string) *Client {
func NewClient(apiUser, apiKey string) *Client {
baseURL, _ := url.Parse(defaultBaseURL)
return &Client{

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -65,7 +64,7 @@ func setupTest(t *testing.T, method, pattern string, status int, file string) *C
func TestClient_AddTXTRecord(t *testing.T) {
client := setupTest(t, http.MethodPost, "/domain/addrecord", http.StatusOK, "add-record.json")
recordID, err := client.AddTXTRecord(context.Background(), "example.com", "foo", "txt", 120)
recordID, err := client.AddTXTRecord(t.Context(), "example.com", "foo", "txt", 120)
require.NoError(t, err)
assert.Equal(t, 123, recordID)
@@ -74,6 +73,6 @@ func TestClient_AddTXTRecord(t *testing.T) {
func TestClient_DeleteTXTRecord(t *testing.T) {
client := setupTest(t, http.MethodPost, "/domain/deleterecord", http.StatusOK, "delete-record.json")
err := client.DeleteTXTRecord(context.Background(), 123)
err := client.DeleteTXTRecord(t.Context(), 123)
require.NoError(t, err)
}

View File

@@ -26,7 +26,7 @@ type Client struct {
HTTPClient *http.Client
}
func NewClient(apiKey string, apiSecret string) *Client {
func NewClient(apiKey, apiSecret string) *Client {
baseURL, _ := url.Parse(DefaultBaseURL)
return &Client{

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -34,7 +33,7 @@ func TestClient_GetRecords(t *testing.T) {
mux.HandleFunc("/v1/domains/example.com/records/TXT/", testHandler(http.MethodGet, http.StatusOK, "getrecords.json"))
records, err := client.GetRecords(context.Background(), "example.com", "TXT", "")
records, err := client.GetRecords(t.Context(), "example.com", "TXT", "")
require.NoError(t, err)
expected := []DNSRecord{
@@ -54,7 +53,7 @@ func TestClient_GetRecords_errors(t *testing.T) {
mux.HandleFunc("/v1/domains/example.com/records/TXT/", testHandler(http.MethodGet, http.StatusUnprocessableEntity, "errors.json"))
records, err := client.GetRecords(context.Background(), "example.com", "TXT", "")
records, err := client.GetRecords(t.Context(), "example.com", "TXT", "")
require.EqualError(t, err, "[status code: 422] INVALID_BODY: Request body doesn't fulfill schema, see details in `fields`")
assert.Nil(t, records)
}
@@ -84,7 +83,7 @@ func TestClient_UpdateTxtRecords(t *testing.T) {
{Name: "_acme-challenge.lego", Type: "TXT", Data: "acme", TTL: 600},
}
err := client.UpdateTxtRecords(context.Background(), records, "example.com", "lego")
err := client.UpdateTxtRecords(t.Context(), records, "example.com", "lego")
require.NoError(t, err)
}
@@ -103,7 +102,7 @@ func TestClient_UpdateTxtRecords_errors(t *testing.T) {
{Name: "_acme-challenge.lego", Type: "TXT", Data: "acme", TTL: 600},
}
err := client.UpdateTxtRecords(context.Background(), records, "example.com", "lego")
err := client.UpdateTxtRecords(t.Context(), records, "example.com", "lego")
require.EqualError(t, err, "[status code: 422] INVALID_BODY: Request body doesn't fulfill schema, see details in `fields`")
}
@@ -112,7 +111,7 @@ func TestClient_DeleteTxtRecords(t *testing.T) {
mux.HandleFunc("/v1/domains/example.com/records/TXT/foo", testHandler(http.MethodDelete, http.StatusNoContent, ""))
err := client.DeleteTxtRecords(context.Background(), "example.com", "foo")
err := client.DeleteTxtRecords(t.Context(), "example.com", "foo")
require.NoError(t, err)
}
@@ -121,7 +120,7 @@ func TestClient_DeleteTxtRecords_errors(t *testing.T) {
mux.HandleFunc("/v1/domains/example.com/records/TXT/foo", testHandler(http.MethodDelete, http.StatusConflict, "error-extended.json"))
err := client.DeleteTxtRecords(context.Background(), "example.com", "foo")
err := client.DeleteTxtRecords(t.Context(), "example.com", "foo")
require.EqualError(t, err, "[status code: 409] ACCESS_DENIED: Authenticated user is not allowed access [test: content (path=/foo) (pathRelated=/bar)]")
}

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -66,7 +65,7 @@ func TestClient_GetTxtRecord(t *testing.T) {
}
})
record, err := client.GetTxtRecord(context.Background(), "test1", "txttxttxt", zoneID)
record, err := client.GetTxtRecord(t.Context(), "test1", "txttxttxt", zoneID)
require.NoError(t, err)
fmt.Println(record)
@@ -112,7 +111,7 @@ func TestClient_CreateRecord(t *testing.T) {
ZoneID: zoneID,
}
err := client.CreateRecord(context.Background(), record)
err := client.CreateRecord(t.Context(), record)
require.NoError(t, err)
}
@@ -134,7 +133,7 @@ func TestClient_DeleteRecord(t *testing.T) {
}
})
err := client.DeleteRecord(context.Background(), "recordID")
err := client.DeleteRecord(t.Context(), "recordID")
require.NoError(t, err)
}
@@ -169,7 +168,7 @@ func TestClient_GetZoneID(t *testing.T) {
}
})
zoneID, err := client.GetZoneID(context.Background(), "example.com")
zoneID, err := client.GetZoneID(t.Context(), "example.com")
require.NoError(t, err)
assert.Equal(t, "zoneA", zoneID)

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"io"
"net/http"
@@ -20,7 +19,7 @@ const testAPIKey = "secret"
func TestClient_GetZones(t *testing.T) {
client := setupTest(t, "/user/v1/zones", testHandler(http.MethodGet, http.StatusOK, "zones.json"))
zones, err := client.GetZones(context.Background(), "", 100, 0)
zones, err := client.GetZones(t.Context(), "", 100, 0)
require.NoError(t, err)
expected := []Zone{
@@ -41,14 +40,14 @@ func TestClient_GetZones(t *testing.T) {
func TestClient_GetZones_error(t *testing.T) {
client := setupTest(t, "/user/v1/zones", testHandler(http.MethodGet, http.StatusUnauthorized, "error.json"))
_, err := client.GetZones(context.Background(), "", 100, 0)
_, err := client.GetZones(t.Context(), "", 100, 0)
require.Error(t, err)
}
func TestClient_GetZone(t *testing.T) {
client := setupTest(t, "/user/v1/zones/123", testHandler(http.MethodGet, http.StatusOK, "zone.json"))
zone, err := client.GetZone(context.Background(), "123")
zone, err := client.GetZone(t.Context(), "123")
require.NoError(t, err)
expected := &Zone{
@@ -67,14 +66,14 @@ func TestClient_GetZone(t *testing.T) {
func TestClient_GetZone_error(t *testing.T) {
client := setupTest(t, "/user/v1/zones/123", testHandler(http.MethodGet, http.StatusUnauthorized, "error.json"))
_, err := client.GetZone(context.Background(), "123")
_, err := client.GetZone(t.Context(), "123")
require.Error(t, err)
}
func TestClient_GetRecords(t *testing.T) {
client := setupTest(t, "/user/v1/zones/123/records", testHandler(http.MethodGet, http.StatusOK, "records.json"))
records, err := client.GetRecords(context.Background(), "123", "TXT")
records, err := client.GetRecords(t.Context(), "123", "TXT")
require.NoError(t, err)
expected := []Record{
@@ -154,7 +153,7 @@ func TestClient_GetRecords(t *testing.T) {
func TestClient_GetRecords_error(t *testing.T) {
client := setupTest(t, "/user/v1/zones/123/records", testHandler(http.MethodGet, http.StatusUnauthorized, "error.json"))
_, err := client.GetRecords(context.Background(), "123", "TXT")
_, err := client.GetRecords(t.Context(), "123", "TXT")
require.Error(t, err)
}
@@ -169,7 +168,7 @@ func TestClient_AddRecord(t *testing.T) {
Comment: "example",
}
newRecord, err := client.AddRecord(context.Background(), "123", record)
newRecord, err := client.AddRecord(t.Context(), "123", record)
require.NoError(t, err)
expected := &Record{
@@ -195,21 +194,21 @@ func TestClient_AddRecord_error(t *testing.T) {
Comment: "example",
}
_, err := client.AddRecord(context.Background(), "123", record)
_, err := client.AddRecord(t.Context(), "123", record)
require.Error(t, err)
}
func TestClient_DeleteRecord(t *testing.T) {
client := setupTest(t, "/user/v1/zones/123/records/6", testHandler(http.MethodDelete, http.StatusUnauthorized, "error.json"))
err := client.DeleteRecord(context.Background(), "123", "6")
err := client.DeleteRecord(t.Context(), "123", "6")
require.Error(t, err)
}
func TestClient_DeleteRecord_error(t *testing.T) {
client := setupTest(t, "/user/v1/zones/123/records/6", testHandler(http.MethodDelete, http.StatusNoContent, ""))
err := client.DeleteRecord(context.Background(), "123", "6")
err := client.DeleteRecord(t.Context(), "123", "6")
require.NoError(t, err)
}

View File

@@ -5,7 +5,6 @@ import (
"errors"
"fmt"
"net/http"
"strings"
"time"
"github.com/go-acme/lego/v4/challenge"
@@ -63,9 +62,9 @@ func NewDNSProvider() (*DNSProvider, error) {
return nil, fmt.Errorf("hurricane: %w", err)
}
credentials, err := parseCredentials(values[EnvTokens])
credentials, err := env.ParsePairs(values[EnvTokens])
if err != nil {
return nil, fmt.Errorf("hurricane: %w", err)
return nil, fmt.Errorf("hurricane: credentials: %w", err)
}
config.Credentials = credentials
@@ -122,19 +121,3 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
func (d *DNSProvider) Sequential() time.Duration {
return d.config.SequenceInterval
}
func parseCredentials(raw string) (map[string]string, error) {
credentials := make(map[string]string)
credStrings := strings.Split(strings.TrimSuffix(raw, ","), ",")
for _, credPair := range credStrings {
data := strings.Split(credPair, ":")
if len(data) != 2 {
return nil, fmt.Errorf("incorrect credential pair: %s", credPair)
}
credentials[strings.TrimSpace(data[0])] = strings.TrimSpace(data[1])
}
return credentials, nil
}

View File

@@ -34,14 +34,14 @@ func TestNewDNSProvider(t *testing.T) {
envVars: map[string]string{
EnvTokens: ",",
},
expected: "hurricane: incorrect credential pair: ",
expected: "hurricane: credentials: incorrect pair: ",
},
{
desc: "invalid credentials, partial",
envVars: map[string]string{
EnvTokens: "example.org:123,example.net",
},
expected: "hurricane: incorrect credential pair: example.net",
expected: "hurricane: credentials: incorrect pair: example.net",
},
{
desc: "missing credentials",

View File

@@ -52,7 +52,7 @@ func NewClient(credentials map[string]string) *Client {
}
// UpdateTxtRecord updates a TXT record.
func (c *Client) UpdateTxtRecord(ctx context.Context, hostname string, txt string) error {
func (c *Client) UpdateTxtRecord(ctx context.Context, hostname, txt string) error {
domain := strings.TrimPrefix(hostname, "_acme-challenge.")
c.credMu.Lock()
@@ -101,7 +101,7 @@ func (c *Client) UpdateTxtRecord(ctx context.Context, hostname string, txt strin
return evaluateBody(string(bytes.TrimSpace(raw)), hostname)
}
func evaluateBody(body string, hostname string) error {
func evaluateBody(body, hostname string) error {
code, _, _ := strings.Cut(body, " ")
switch code {

View File

@@ -1,7 +1,6 @@
package internal
import (
"context"
"fmt"
"net/http"
"net/http/httptest"
@@ -75,7 +74,7 @@ func TestClient_UpdateTxtRecord(t *testing.T) {
client.baseURL = server.URL
client.HTTPClient = server.Client()
err := client.UpdateTxtRecord(context.Background(), "_acme-challenge.example.com", "foo")
err := client.UpdateTxtRecord(t.Context(), "_acme-challenge.example.com", "foo")
test.expected(t, err)
})
}

View File

@@ -132,7 +132,7 @@ func (c *Client) CreateRecordset(ctx context.Context, zoneID, recordType, name,
// DeleteRecordset deletes a recordset.
// https://api.hyperone.com/v2/docs#operation/dns_project_zone_recordset_delete
func (c *Client) DeleteRecordset(ctx context.Context, zoneID string, recordsetID string) error {
func (c *Client) DeleteRecordset(ctx context.Context, zoneID, recordsetID string) error {
// https://api.hyperone.com/v2/dns/{locationId}/project/{projectId}/zone/{zoneId}/recordset/{recordsetId}
endpoint := c.baseURL.JoinPath("zone", zoneID, "recordset", recordsetID)
@@ -146,7 +146,7 @@ func (c *Client) DeleteRecordset(ctx context.Context, zoneID string, recordsetID
// GetRecords gets all records within specified recordset.
// https://api.hyperone.com/v2/docs#operation/dns_project_zone_recordset_record_list
func (c *Client) GetRecords(ctx context.Context, zoneID string, recordsetID string) ([]Record, error) {
func (c *Client) GetRecords(ctx context.Context, zoneID, recordsetID string) ([]Record, error) {
// https://api.hyperone.com/v2/dns/{locationId}/project/{projectId}/zone/{zoneId}/recordset/{recordsetId}/record
endpoint := c.baseURL.JoinPath("zone", zoneID, "recordset", recordsetID, "record")

View File

@@ -2,7 +2,6 @@ package internal
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
@@ -25,7 +24,7 @@ func (s signerMock) GetJWT() (string, error) {
func TestClient_FindRecordset(t *testing.T) {
client := setupTest(t, http.MethodGet, "/dns/loc123/project/proj123/zone/zone321/recordset", respFromFile("recordset.json"))
recordset, err := client.FindRecordset(context.Background(), "zone321", "SOA", "example.com.")
recordset, err := client.FindRecordset(t.Context(), "zone321", "SOA", "example.com.")
require.NoError(t, err)
expected := &Recordset{
@@ -49,7 +48,7 @@ func TestClient_CreateRecordset(t *testing.T) {
client := setupTest(t, http.MethodPost, "/dns/loc123/project/proj123/zone/zone123/recordset",
hasReqBody(expectedReqBody), respFromFile("createRecordset.json"))
rs, err := client.CreateRecordset(context.Background(), "zone123", "TXT", "test.example.com.", "value", 3600)
rs, err := client.CreateRecordset(t.Context(), "zone123", "TXT", "test.example.com.", "value", 3600)
require.NoError(t, err)
expected := &Recordset{RecordType: "TXT", Name: "test.example.com.", TTL: 3600, ID: "1234567890qwertyuiop"}
@@ -59,14 +58,14 @@ func TestClient_CreateRecordset(t *testing.T) {
func TestClient_DeleteRecordset(t *testing.T) {
client := setupTest(t, http.MethodDelete, "/dns/loc123/project/proj123/zone/zone321/recordset/rs322")
err := client.DeleteRecordset(context.Background(), "zone321", "rs322")
err := client.DeleteRecordset(t.Context(), "zone321", "rs322")
require.NoError(t, err)
}
func TestClient_GetRecords(t *testing.T) {
client := setupTest(t, http.MethodGet, "/dns/loc123/project/proj123/zone/321/recordset/322/record", respFromFile("record.json"))
records, err := client.GetRecords(context.Background(), "321", "322")
records, err := client.GetRecords(t.Context(), "321", "322")
require.NoError(t, err)
expected := []Record{
@@ -88,7 +87,7 @@ func TestClient_CreateRecord(t *testing.T) {
client := setupTest(t, http.MethodPost, "/dns/loc123/project/proj123/zone/z123/recordset/rs325/record",
hasReqBody(expectedReqBody), respFromFile("createRecord.json"))
rs, err := client.CreateRecord(context.Background(), "z123", "rs325", "value")
rs, err := client.CreateRecord(t.Context(), "z123", "rs325", "value")
require.NoError(t, err)
expected := &Record{ID: "123321qwerqwewqerq", Content: "value", Enabled: true}
@@ -98,14 +97,14 @@ func TestClient_CreateRecord(t *testing.T) {
func TestClient_DeleteRecord(t *testing.T) {
client := setupTest(t, http.MethodDelete, "/dns/loc123/project/proj123/zone/321/recordset/322/record/323")
err := client.DeleteRecord(context.Background(), "321", "322", "323")
err := client.DeleteRecord(t.Context(), "321", "322", "323")
require.NoError(t, err)
}
func TestClient_FindZone(t *testing.T) {
client := setupTest(t, http.MethodGet, "/dns/loc123/project/proj123/zone", respFromFile("zones.json"))
zone, err := client.FindZone(context.Background(), "example.com")
zone, err := client.FindZone(t.Context(), "example.com")
require.NoError(t, err)
expected := &Zone{
@@ -122,7 +121,7 @@ func TestClient_FindZone(t *testing.T) {
func TestClient_GetZones(t *testing.T) {
client := setupTest(t, http.MethodGet, "/dns/loc123/project/proj123/zone", respFromFile("zones.json"))
zones, err := client.GetZones(context.Background())
zones, err := client.GetZones(t.Context())
require.NoError(t, err)
expected := []Zone{
@@ -183,7 +182,7 @@ func setupTest(t *testing.T, method, path string, handlers ...assertHandler) *Cl
type assertHandler func(http.ResponseWriter, *http.Request) (int, error)
func hasReqBody(v interface{}) assertHandler {
func hasReqBody(v any) assertHandler {
return func(rw http.ResponseWriter, req *http.Request) (int, error) {
reqBody, err := io.ReadAll(req.Body)
if err != nil {

View File

@@ -6,7 +6,6 @@ import (
"fmt"
"slices"
"strconv"
"strings"
"time"
"github.com/go-acme/lego/v4/challenge"
@@ -14,6 +13,7 @@ import (
"github.com/go-acme/lego/v4/platform/config/env"
"github.com/iij/doapi"
"github.com/iij/doapi/protocol"
"github.com/miekg/dns"
)
// Environment variables names.
@@ -226,26 +226,20 @@ func (d *DNSProvider) listZones() ([]string, error) {
}
func splitDomain(domain string, zones []string) (string, string, error) {
parts := strings.Split(strings.Trim(domain, "."), ".")
base := dns01.UnFqdn(domain)
var owner string
var zone string
for _, index := range dns.Split(base) {
zone := base[index:]
for i := range len(parts) - 1 {
zone = strings.Join(parts[i:], ".")
if slices.Contains(zones, zone) {
baseOwner := strings.Join(parts[0:i], ".")
baseOwner := base[:index]
if baseOwner != "" {
baseOwner = "." + baseOwner
}
owner = "_acme-challenge" + baseOwner
break
return "_acme-challenge" + dns01.UnFqdn(baseOwner), zone, nil
}
}
if owner == "" {
return "", "", fmt.Errorf("%s not found", domain)
}
return owner, zone, nil
return "", "", fmt.Errorf("%s not found", domain)
}

View File

@@ -161,31 +161,31 @@ func TestSplitDomain(t *testing.T) {
}{
{
desc: "domain equals zone",
domain: "domain.com",
zones: []string{"domain.com"},
domain: "example.com",
zones: []string{"example.com"},
expectedOwner: "_acme-challenge",
expectedZone: "domain.com",
expectedZone: "example.com",
},
{
desc: "with a subdomain",
domain: "my.domain.com",
zones: []string{"domain.com"},
domain: "my.example.com",
zones: []string{"example.com"},
expectedOwner: "_acme-challenge.my",
expectedZone: "domain.com",
expectedZone: "example.com",
},
{
desc: "with a subdomain in a zone",
domain: "my.sub.domain.com",
zones: []string{"sub.domain.com", "domain.com"},
domain: "my.sub.example.com",
zones: []string{"sub.example.com", "example.com"},
expectedOwner: "_acme-challenge.my",
expectedZone: "sub.domain.com",
expectedZone: "sub.example.com",
},
{
desc: "with a sub-subdomain",
domain: "my.sub.domain.com",
zones: []string{"domain1.com", "domain.com"},
domain: "my.sub.example.com",
zones: []string{"domain1.com", "example.com"},
expectedOwner: "_acme-challenge.my.sub",
expectedZone: "domain.com",
expectedZone: "example.com",
},
}
@@ -202,6 +202,36 @@ func TestSplitDomain(t *testing.T) {
}
}
func TestSplitDomain_error(t *testing.T) {
testCases := []struct {
desc string
domain string
zones []string
expectedOwner string
expectedZone string
}{
{
desc: "no zone",
domain: "example.com",
zones: nil,
},
{
desc: "domain does not contain zone",
domain: "example.com",
zones: []string{"example.org"},
},
}
for _, test := range testCases {
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
_, _, err := splitDomain(test.domain, test.zones)
require.Error(t, err)
})
}
}
func TestLivePresent(t *testing.T) {
if !envTest.IsLiveTest() {
t.Skip("skipping live test")

View File

@@ -2,7 +2,6 @@ package internal
import (
"bytes"
"context"
"fmt"
"io"
"net/http"
@@ -73,7 +72,7 @@ func TestClient_CreateDNSRecord(t *testing.T) {
TTL: 60,
}
recordID, err := client.CreateDNSRecord(context.Background(), domain, record)
recordID, err := client.CreateDNSRecord(t.Context(), domain, record)
require.NoError(t, err)
assert.Equal(t, "123", recordID)
@@ -128,7 +127,7 @@ func TestClient_GetDomainByName(t *testing.T) {
}
})
domain, err := client.GetDomainByName(context.Background(), "one.two.three.example.com.")
domain, err := client.GetDomainByName(t.Context(), "one.two.three.example.com.")
require.NoError(t, err)
expected := &DNSDomain{ID: 123, CustomerName: "two.three.example.com"}
@@ -156,6 +155,6 @@ func TestClient_DeleteDNSRecord(t *testing.T) {
}
})
err := client.DeleteDNSRecord(context.Background(), 123, "456")
err := client.DeleteDNSRecord(t.Context(), 123, "456")
require.NoError(t, err)
}

View File

@@ -1,7 +1,6 @@
package active24
import (
"context"
"io"
"net/http"
"net/http/httptest"
@@ -56,7 +55,7 @@ func setupTest(t *testing.T, pattern string, status int, filename string) *Clien
func TestClient_GetServices(t *testing.T) {
client := setupTest(t, "GET /v1/user/self/service", http.StatusOK, "services.json")
services, err := client.GetServices(context.Background())
services, err := client.GetServices(t.Context())
require.NoError(t, err)
expected := []Service{
@@ -86,7 +85,7 @@ func TestClient_GetServices(t *testing.T) {
func TestClient_GetServices_errors(t *testing.T) {
client := setupTest(t, "GET /v1/user/self/service", http.StatusUnauthorized, "error_v1.json")
_, err := client.GetServices(context.Background())
_, err := client.GetServices(t.Context())
require.EqualError(t, err, "401: No username or password.")
}
@@ -99,7 +98,7 @@ func TestClient_GetRecords(t *testing.T) {
Content: "txt",
}
records, err := client.GetRecords(context.Background(), "aaa", filter)
records, err := client.GetRecords(t.Context(), "aaa", filter)
require.NoError(t, err)
expected := []Record{{
@@ -124,35 +123,35 @@ func TestClient_GetRecords_errors(t *testing.T) {
Content: "txt",
}
_, err := client.GetRecords(context.Background(), "aaa", filter)
_, err := client.GetRecords(t.Context(), "aaa", filter)
require.EqualError(t, err, "403: /errors/httpException: This action is unauthorized.")
}
func TestClient_CreateRecord(t *testing.T) {
client := setupTest(t, "POST /v2/service/aaa/dns/record", http.StatusNoContent, "")
err := client.CreateRecord(context.Background(), "aaa", Record{})
err := client.CreateRecord(t.Context(), "aaa", Record{})
require.NoError(t, err)
}
func TestClient_CreateRecord_errors(t *testing.T) {
client := setupTest(t, "POST /v2/service/aaa/dns/record", http.StatusForbidden, "error_403.json")
err := client.CreateRecord(context.Background(), "aaa", Record{})
err := client.CreateRecord(t.Context(), "aaa", Record{})
require.EqualError(t, err, "403: /errors/httpException: This action is unauthorized.")
}
func TestClient_DeleteRecord(t *testing.T) {
client := setupTest(t, "DELETE /v2/service/aaa/dns/record/123", http.StatusNoContent, "")
err := client.DeleteRecord(context.Background(), "aaa", "123")
err := client.DeleteRecord(t.Context(), "aaa", "123")
require.NoError(t, err)
}
func TestClient_DeleteRecord_error(t *testing.T) {
client := setupTest(t, "DELETE /v2/service/aaa/dns/record/123", http.StatusForbidden, "error_403.json")
err := client.DeleteRecord(context.Background(), "aaa", "123")
err := client.DeleteRecord(t.Context(), "aaa", "123")
require.EqualError(t, err, "403: /errors/httpException: This action is unauthorized.")
}

View File

@@ -2,7 +2,6 @@ package hostingde
import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
@@ -72,7 +71,7 @@ func TestClient_ListZoneConfigs(t *testing.T) {
Page: 1,
}
zoneResponse, err := client.ListZoneConfigs(context.Background(), zonesFind)
zoneResponse, err := client.ListZoneConfigs(t.Context(), zonesFind)
require.NoError(t, err)
expected := &ZoneResponse{
@@ -124,7 +123,7 @@ func TestClient_ListZoneConfigs_error(t *testing.T) {
Page: 1,
}
_, err := client.ListZoneConfigs(context.Background(), zonesFind)
_, err := client.ListZoneConfigs(t.Context(), zonesFind)
require.Error(t, err)
}
@@ -179,7 +178,7 @@ func TestClient_UpdateZone(t *testing.T) {
}},
}
response, err := client.UpdateZone(context.Background(), request)
response, err := client.UpdateZone(t.Context(), request)
require.NoError(t, err)
expected := &Zone{
@@ -259,6 +258,6 @@ func TestClient_UpdateZone_error(t *testing.T) {
}},
}
_, err := client.UpdateZone(context.Background(), request)
_, err := client.UpdateZone(t.Context(), request)
require.Error(t, err)
}

View File

@@ -1,7 +1,6 @@
package rimuhosting
import (
"context"
"encoding/xml"
"fmt"
"io"
@@ -99,7 +98,7 @@ func TestClient_FindTXTRecords(t *testing.T) {
for _, test := range testCases {
t.Run(test.desc, func(t *testing.T) {
records, err := client.FindTXTRecords(context.Background(), test.domain)
records, err := client.FindTXTRecords(t.Context(), test.domain)
require.NoError(t, err)
assert.Equal(t, test.expected, records)
@@ -291,7 +290,7 @@ func TestClient_DoActions(t *testing.T) {
}
})
resp, err := client.DoActions(context.Background(), test.actions...)
resp, err := client.DoActions(t.Context(), test.actions...)
if test.expected.Error != "" {
require.EqualError(t, err, test.expected.Error)
return

Some files were not shown because too many files have changed in this diff Show More