diff options
Diffstat (limited to 'internal/signer/darwin/keychain/keychain_test.go')
-rw-r--r-- | internal/signer/darwin/keychain/keychain_test.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/internal/signer/darwin/keychain/keychain_test.go b/internal/signer/darwin/keychain/keychain_test.go new file mode 100644 index 0000000..946ba9b --- /dev/null +++ b/internal/signer/darwin/keychain/keychain_test.go @@ -0,0 +1,48 @@ +// Copyright 2022 Google LLC. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build darwin && cgo +// +build darwin,cgo + +package keychain + +import ( + "bytes" + "testing" + "unsafe" +) + +func TestKeychainError(t *testing.T) { + tests := []struct { + e keychainError + want string + }{ + {e: keychainError(0), want: "No error."}, + {e: keychainError(-4), want: "Function or operation not implemented."}, + } + + for i, test := range tests { + if got := test.e.Error(); got != test.want { + t.Errorf("test %d: %#v.Error() = %q, want %q", i, test.e, got, test.want) + } + } +} + +func TestBytesToCFDataRoundTrip(t *testing.T) { + want := []byte("an arbitrary and yet coherent byte slice!") + d := bytesToCFData(want) + defer cfRelease(unsafe.Pointer(d)) + if got := cfDataToBytes(d); !bytes.Equal(got, want) { + t.Errorf("bytesToCFData -> cfDataToBytes\ngot %x\nwant %x", got, want) + } +} |