71 lines
1.3 KiB
Go
71 lines
1.3 KiB
Go
|
package certificate
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
type TomatoError struct{}
|
||
|
|
||
|
func (t TomatoError) Error() string {
|
||
|
return "tomato"
|
||
|
}
|
||
|
|
||
|
type CarrotError struct{}
|
||
|
|
||
|
func (t CarrotError) Error() string {
|
||
|
return "carrot"
|
||
|
}
|
||
|
|
||
|
func Test_obtainError_Join(t *testing.T) {
|
||
|
failures := newObtainError()
|
||
|
|
||
|
failures.Add("example.com", &TomatoError{})
|
||
|
|
||
|
err := failures.Join()
|
||
|
|
||
|
to := &TomatoError{}
|
||
|
assert.ErrorAs(t, err, &to)
|
||
|
}
|
||
|
|
||
|
func Test_obtainError_Join_multiple_domains(t *testing.T) {
|
||
|
failures := newObtainError()
|
||
|
|
||
|
failures.Add("example.com", &TomatoError{})
|
||
|
failures.Add("example.org", &CarrotError{})
|
||
|
|
||
|
err := failures.Join()
|
||
|
|
||
|
to := &TomatoError{}
|
||
|
assert.ErrorAs(t, err, &to)
|
||
|
|
||
|
ca := &CarrotError{}
|
||
|
assert.ErrorAs(t, err, &ca)
|
||
|
}
|
||
|
|
||
|
func Test_obtainError_Join_no_error(t *testing.T) {
|
||
|
failures := newObtainError()
|
||
|
|
||
|
assert.NoError(t, failures.Join())
|
||
|
}
|
||
|
|
||
|
func Test_obtainError_Join_same_domain(t *testing.T) {
|
||
|
failures := newObtainError()
|
||
|
|
||
|
failures.Add("example.com", &TomatoError{})
|
||
|
failures.Add("example.com", &CarrotError{})
|
||
|
|
||
|
err := failures.Join()
|
||
|
|
||
|
to := &TomatoError{}
|
||
|
if errors.As(err, &to) {
|
||
|
require.Fail(t, "TomatoError should be overridden by CarrotError")
|
||
|
}
|
||
|
|
||
|
ca := &CarrotError{}
|
||
|
assert.ErrorAs(t, err, &ca)
|
||
|
}
|