From d8e34f8743f3196da868711e83ccae26bd0c6b68 Mon Sep 17 00:00:00 2001 From: Albin Kerouanton Date: Tue, 4 Mar 2025 11:43:16 +0100 Subject: [PATCH] osxkeychain: tests: uncleaned paths are preserved Signed-off-by: Albin Kerouanton --- osxkeychain/osxkeychain_test.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/osxkeychain/osxkeychain_test.go b/osxkeychain/osxkeychain_test.go index 7764ecb..095d50f 100644 --- a/osxkeychain/osxkeychain_test.go +++ b/osxkeychain/osxkeychain_test.go @@ -141,6 +141,39 @@ func TestOSXKeychainHelperRetrieveAliases(t *testing.T) { } } +func TestOSXKeychainHelperStoreWithUncleanPath(t *testing.T) { + helper := Osxkeychain{} + creds := &credentials.Credentials{ + ServerURL: "https://::1:8080//////location/../../hello", + Username: "testuser", + Secret: "testsecret", + } + + // Clean store before and after the test. + defer helper.Delete(creds.ServerURL) + if err := helper.Delete(creds.ServerURL); err != nil && !credentials.IsErrCredentialsNotFound(err) { + t.Errorf("prepare: failed to delete '%s': %v", creds.ServerURL, err) + } + + // Store the credentials + if err := helper.Add(creds); err != nil { + t.Fatalf("Error: failed to store credentials with unclean path %q: %s", creds.ServerURL, err) + } + + // Retrieve and verify credentials + username, secret, err := helper.Get(creds.ServerURL) + if err != nil { + t.Fatalf("Error: failed to retrieve credentials with unclean path %q: %s", creds.ServerURL, err) + } + + if username != creds.Username { + t.Errorf("Error: expected username %s, got %s", creds.Username, username) + } + if secret != creds.Secret { + t.Errorf("Error: expected secret %s, got %s", creds.Secret, secret) + } +} + // TestOSXKeychainHelperRetrieveStrict verifies that only matching secrets are // returned. func TestOSXKeychainHelperRetrieveStrict(t *testing.T) {