mirror of
https://github.com/go-acme/lego
synced 2026-03-14 14:35:48 +01:00
feat: allow to Unwrap obtainError (#2874)
This commit is contained in:
parent
7d459b59c5
commit
491dcaad1d
2 changed files with 76 additions and 0 deletions
|
|
@ -3,6 +3,8 @@ package resolver
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"maps"
|
||||
"slices"
|
||||
"sort"
|
||||
)
|
||||
|
||||
|
|
@ -25,3 +27,7 @@ func (e obtainError) Error() string {
|
|||
|
||||
return buffer.String()
|
||||
}
|
||||
|
||||
func (e obtainError) Unwrap() []error {
|
||||
return slices.AppendSeq(make([]error, 0, len(e)), maps.Values(e))
|
||||
}
|
||||
|
|
|
|||
70
challenge/resolver/errors_test.go
Normal file
70
challenge/resolver/errors_test.go
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
package resolver
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"github.com/go-acme/lego/v4/acme"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func Test_obtainError_Error(t *testing.T) {
|
||||
err := obtainError{
|
||||
"a": &acme.ProblemDetails{Type: "001"},
|
||||
"b": errors.New("oops"),
|
||||
"c": errors.New("I did it again"),
|
||||
}
|
||||
|
||||
require.EqualError(t, err, `error: one or more domains had a problem:
|
||||
[a] acme: error: 0 :: 001 ::
|
||||
[b] oops
|
||||
[c] I did it again
|
||||
`)
|
||||
}
|
||||
|
||||
func Test_obtainError_Unwrap(t *testing.T) {
|
||||
testCases := []struct {
|
||||
desc string
|
||||
err obtainError
|
||||
assert assert.BoolAssertionFunc
|
||||
}{
|
||||
{
|
||||
desc: "one ok",
|
||||
err: obtainError{
|
||||
"a": &acme.ProblemDetails{},
|
||||
"b": errors.New("oops"),
|
||||
"c": errors.New("I did it again"),
|
||||
},
|
||||
assert: assert.True,
|
||||
},
|
||||
{
|
||||
desc: "all ok",
|
||||
err: obtainError{
|
||||
"a": &acme.ProblemDetails{Type: "001"},
|
||||
"b": &acme.ProblemDetails{Type: "002"},
|
||||
"c": &acme.ProblemDetails{Type: "002"},
|
||||
},
|
||||
assert: assert.True,
|
||||
},
|
||||
{
|
||||
desc: "nope",
|
||||
err: obtainError{
|
||||
"a": errors.New("hello"),
|
||||
"b": errors.New("oops"),
|
||||
"c": errors.New("I did it again"),
|
||||
},
|
||||
assert: assert.False,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range testCases {
|
||||
t.Run(test.desc, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
var pd *acme.ProblemDetails
|
||||
|
||||
test.assert(t, errors.As(test.err, &pd))
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue