feat(BRIDGE-116): add command-line switches to enable/disable keychain check on macOS.

This commit is contained in:
Xavier Michelon
2024-08-08 10:54:11 +02:00
parent 84c0b907d7
commit 3d53bf7477
13 changed files with 355 additions and 51 deletions

View File

@ -31,15 +31,20 @@ const (
MacOSKeychain = "macos-keychain"
)
func listHelpers() (Helpers, string) {
func listHelpers(skipKeychainTest bool) (Helpers, string) {
helpers := make(Helpers)
// MacOS always provides a keychain.
if isUsable(newMacOSHelper("")) {
if skipKeychainTest {
logrus.WithField("pkg", "keychain").Info("Skipping macOS keychain test")
helpers[MacOSKeychain] = newMacOSHelper
logrus.WithField("keychain", "MacOSKeychain").Info("Keychain is usable.")
} else {
logrus.WithField("keychain", "MacOSKeychain").Debug("Keychain is not available.")
if isUsable(newMacOSHelper("")) {
helpers[MacOSKeychain] = newMacOSHelper
logrus.WithField("keychain", "MacOSKeychain").Info("Keychain is usable.")
} else {
logrus.WithField("keychain", "MacOSKeychain").Debug("Keychain is not available.")
}
}
// Use MacOSKeychain by default.

View File

@ -31,7 +31,7 @@ const (
SecretServiceDBus = "secret-service-dbus"
)
func listHelpers() (Helpers, string) {
func listHelpers(_ bool) (Helpers, string) {
helpers := make(Helpers)
if isUsable(newDBusHelper("")) {

View File

@ -25,7 +25,7 @@ import (
const WindowsCredentials = "windows-credentials"
func listHelpers() (Helpers, string) {
func listHelpers(_ bool) (Helpers, string) {
helpers := make(Helpers)
// Windows always provides a keychain.
if isUsable(newWinCredHelper("")) {

View File

@ -62,9 +62,9 @@ type List struct {
// NewList checks availability of every keychains detected on the User Operating System
// This will ask the user to unlock keychain(s) to check their usability.
// This should only be called once.
func NewList() *List {
func NewList(skipKeychainTest bool) *List {
var list = List{locker: &sync.Mutex{}}
list.helpers, list.defaultHelper = listHelpers()
list.helpers, list.defaultHelper = listHelpers(skipKeychainTest)
return &list
}

View File

@ -117,7 +117,7 @@ func TestInsertReadRemove(t *testing.T) {
func TestIsErrKeychainNoItem(t *testing.T) {
r := require.New(t)
helpers := NewList().GetHelpers()
helpers := NewList(false).GetHelpers()
for helperName := range helpers {
kc, err := NewKeychain(helperName, "bridge-test", helpers, helperName)