Skip to content

Commit b21b69c

Browse files
committed
osxkeychain: Delete(): return typed errors
This allows a Delete for non-existing credentials to be handled. Signed-off-by: Sebastiaan van Stijn <[email protected]>
1 parent 7f00c5c commit b21b69c

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

osxkeychain/osxkeychain_darwin.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,16 @@ func (h Osxkeychain) Delete(serverURL string) error {
6666
}
6767
defer freeServer(s)
6868

69-
errMsg := C.keychain_delete(s)
70-
if errMsg != nil {
69+
if errMsg := C.keychain_delete(s); errMsg != nil {
7170
defer C.free(unsafe.Pointer(errMsg))
72-
return errors.New(C.GoString(errMsg))
71+
switch goMsg := C.GoString(errMsg); goMsg {
72+
case errCredentialsNotFound:
73+
return credentials.NewErrCredentialsNotFound()
74+
case errInteractionNotAllowed:
75+
return ErrInteractionNotAllowed
76+
default:
77+
return errors.New(goMsg)
78+
}
7379
}
7480

7581
return nil

osxkeychain/osxkeychain_darwin_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,14 @@ func TestOSXKeychainHelperStoreRetrieve(t *testing.T) {
205205
}
206206

207207
func TestMissingCredentials(t *testing.T) {
208+
const nonExistingCred = "https://adsfasdf.invalid/asdfsdddd"
208209
helper := Osxkeychain{}
209-
_, _, err := helper.Get("https://adsfasdf.wrewerwer.com/asdfsdddd")
210+
_, _, err := helper.Get(nonExistingCred)
210211
if !credentials.IsErrCredentialsNotFound(err) {
211-
t.Fatalf("expected ErrCredentialsNotFound, got %v", err)
212+
t.Errorf("expected ErrCredentialsNotFound, got %v", err)
213+
}
214+
err = helper.Delete(nonExistingCred)
215+
if !credentials.IsErrCredentialsNotFound(err) {
216+
t.Errorf("expected ErrCredentialsNotFound, got %v", err)
212217
}
213218
}

0 commit comments

Comments
 (0)