From ba89d92f86436f9c769aa235010e1111e7591e75 Mon Sep 17 00:00:00 2001 From: Christopher Puschmann Date: Wed, 6 Sep 2023 09:39:45 +0200 Subject: [PATCH] Mirror changes from afeeccd into root directory --- error.go | 2 ++ error_test.go | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/error.go b/error.go index b9d6452..3c2559e 100644 --- a/error.go +++ b/error.go @@ -192,6 +192,8 @@ func (e *Error) Error() string { return fmt.Sprintf("LDAP Result Code %d %q: %s", e.ResultCode, LDAPResultCodeMap[e.ResultCode], e.Err.Error()) } +func (e *Error) Unwrap() error { return e.Err } + // GetLDAPError creates an Error out of a BER packet representing a LDAPResult // The return is an error object. It can be casted to a Error structure. // This function returns nil if resultCode in the LDAPResult sequence is success(0). diff --git a/error_test.go b/error_test.go index 63018ee..c115e00 100644 --- a/error_test.go +++ b/error_test.go @@ -2,6 +2,7 @@ package ldap import ( "errors" + "io" "net" "strings" "testing" @@ -103,6 +104,24 @@ func TestGetLDAPErrorInvalidResponse(t *testing.T) { } } +func TestErrorIs(t *testing.T) { + err := NewError(ErrorNetwork, io.EOF) + if !errors.Is(err, io.EOF) { + t.Errorf("Expected an io.EOF error: %v", err) + } +} + +func TestErrorAs(t *testing.T) { + var netErr net.InvalidAddrError = "invalid addr" + err := NewError(ErrorNetwork, netErr) + + var target net.InvalidAddrError + ok := errors.As(err, &target) + if !ok { + t.Error("Expected an InvalidAddrError") + } +} + // TestGetLDAPErrorSuccess tests parsing of a result with no error (resultCode == 0). func TestGetLDAPErrorSuccess(t *testing.T) { bindResponse := ber.Encode(ber.ClassApplication, ber.TypeConstructed, ApplicationBindResponse, nil, "Bind Response")