=== RUN   TestSecretManagerIntegration
=== RUN   TestSecretManagerIntegration/01_Initialize
=== RUN   TestSecretManagerIntegration/02_ListVaults
=== RUN   TestSecretManagerIntegration/03_CreateVault
=== RUN   TestSecretManagerIntegration/04_ImportMnemonic
=== RUN   TestSecretManagerIntegration/05_AddSecret
=== RUN   TestSecretManagerIntegration/06_GetSecret
=== RUN   TestSecretManagerIntegration/07_AddSecretVersion
=== RUN   TestSecretManagerIntegration/08_ListVersions
=== RUN   TestSecretManagerIntegration/09_GetSpecificVersion
=== RUN   TestSecretManagerIntegration/10_PromoteVersion
=== RUN   TestSecretManagerIntegration/11_ListSecrets
    integration_test.go:710: JSON output: {
          "secrets": [
            {
              "created_at": "2025-06-09T04:52:08.170719-07:00",
              "name": "api/key",
              "updated_at": "2025-06-09T04:52:08.170719-07:00"
            },
            {
              "created_at": "2025-06-09T04:52:08.170725-07:00",
              "name": "config/database.yaml",
              "updated_at": "2025-06-09T04:52:08.170725-07:00"
            },
            {
              "created_at": "2025-06-09T04:52:08.170731-07:00",
              "name": "database/password",
              "updated_at": "2025-06-09T04:52:08.170731-07:00"
            }
          ]
        }
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/api/keys/production
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/config.yaml
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/ssh_private_key
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/deeply/nested/path/to/secret
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/test-with-dash
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/test.with.dots
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/test_with_underscore
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/mixed/test.name_format-123
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/invalid_empty
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/invalid_UPPERCASE
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/invalid_with_space_space
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/invalid_with@symbol
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/invalid_with#hash
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/invalid_with$dollar
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/invalid__slash_leading-slash
    integration_test.go:854: add '/leading-slash' result: err=<nil>, output=
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/invalid_trailing-slash_slash_
    integration_test.go:854: add 'trailing-slash/' result: err=<nil>, output=
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/invalid_double_slash__slash_slash
    integration_test.go:854: add 'double//slash' result: err=<nil>, output=
=== RUN   TestSecretManagerIntegration/12_SecretNameFormats/invalid_.hidden
    integration_test.go:854: add '.hidden' result: err=<nil>, output=
=== RUN   TestSecretManagerIntegration/13_UnlockerManagement
    integration_test.go:883: Error adding passphrase unlocker: exit status 1, output: Error: failed to unlock vault: failed to get long-term key: failed to get unlocker identity: failed to decrypt unlocker private key: failed to create decryptor: no identity matched any of the recipients
        Usage:
          secret unlockers add <type> [flags]
        
        Flags:
          -h, --help           help for add
              --keyid string   GPG key ID for PGP unlockers
        
    integration_test.go:885: 
        	Error Trace:	/Users/user/dev/secret/internal/cli/integration_test.go:885
        	Error:      	Received unexpected error:
        	            	exit status 1
        	Test:       	TestSecretManagerIntegration/13_UnlockerManagement
        	Messages:   	add passphrase unlocker should succeed
=== RUN   TestSecretManagerIntegration/14_SwitchVault
=== RUN   TestSecretManagerIntegration/15_VaultIsolation
=== RUN   TestSecretManagerIntegration/16_GenerateSecret
=== RUN   TestSecretManagerIntegration/17_ImportFromFile
=== RUN   TestSecretManagerIntegration/18_AgeKeyOperations
=== RUN   TestSecretManagerIntegration/19_DisasterRecovery
    integration_test.go:1233: Long-term public key from vault: age1gel0je3w796uqpp7k47w65agnrhe85ee3xz550us6kdpgy5nr3rq7mkfqs
    integration_test.go:1239: Note: Long-term private key can be derived from mnemonic
    integration_test.go:1259: === Disaster Recovery Chain ===
    integration_test.go:1260: 1. Secret value is encrypted to version public key: /var/folders/w9/_481zfb94wx2yq562f5h68vw0000gn/T/TestSecretManagerIntegration3789343214/001/vaults.d/default/secrets.d/test%disaster-recovery/versions/20250609.001/pub.age
    integration_test.go:1261: 2. Version private key is encrypted to long-term public key: /var/folders/w9/_481zfb94wx2yq562f5h68vw0000gn/T/TestSecretManagerIntegration3789343214/001/vaults.d/default/pub.age
    integration_test.go:1262: 3. Long-term private key is derived from mnemonic
    integration_test.go:1282: === Disaster Recovery Test Complete ===
    integration_test.go:1283: The vault structure is compatible with standard age encryption.
    integration_test.go:1284: In a real disaster scenario:
    integration_test.go:1285: 1. Derive long-term private key from mnemonic using BIP32/BIP39
    integration_test.go:1286: 2. Use 'age -d' to decrypt version private keys
    integration_test.go:1287: 3. Use 'age -d' to decrypt secret values
    integration_test.go:1288: No proprietary tools needed - just mnemonic + age CLI
=== RUN   TestSecretManagerIntegration/20_VersionTimestamps
=== RUN   TestSecretManagerIntegration/21_MaxVersionsPerDay
    integration_test.go:1353: Skipping max versions test - would take too long
=== RUN   TestSecretManagerIntegration/22_JSONOutput
    integration_test.go:1380: JSON output formats verified for vault list, secret list, and unlockers list
=== RUN   TestSecretManagerIntegration/23_ErrorHandling
=== RUN   TestSecretManagerIntegration/24_EnvironmentVariables
=== RUN   TestSecretManagerIntegration/25_ConcurrentOperations
=== RUN   TestSecretManagerIntegration/26_LargeSecrets
=== RUN   TestSecretManagerIntegration/27_SpecialCharacters
=== RUN   TestSecretManagerIntegration/28_VaultMetadata
    integration_test.go:1700: 
        	Error Trace:	/Users/user/dev/secret/internal/cli/integration_test.go:1700
        	Error:      	Not equal: 
        	            	expected: "992552b00b3879dfae461fab9a084b47784a032771c7a9accaebdde05ec7a7d1"
        	            	actual  : "e34a2f500e395d8934a90a99ee9311edcfffd68cb701079575e50cbac7bb9417"
        	            	
        	            	Diff:
        	            	--- Expected
        	            	+++ Actual
        	            	@@ -1 +1 @@
        	            	-992552b00b3879dfae461fab9a084b47784a032771c7a9accaebdde05ec7a7d1
        	            	+e34a2f500e395d8934a90a99ee9311edcfffd68cb701079575e50cbac7bb9417
        	Test:       	TestSecretManagerIntegration/28_VaultMetadata
        	Messages:   	vaults from same mnemonic should have same public_key_hash
=== RUN   TestSecretManagerIntegration/29_SymlinkHandling
=== RUN   TestSecretManagerIntegration/30_BackupRestore
    integration_test.go:1838: 
        	Error Trace:	/Users/user/dev/secret/internal/cli/integration_test.go:1838
        	Error:      	Received unexpected error:
        	            	exit status 1
        	Test:       	TestSecretManagerIntegration/30_BackupRestore
        	Messages:   	get restored secret should succeed
--- FAIL: TestSecretManagerIntegration (4.96s)
    --- PASS: TestSecretManagerIntegration/01_Initialize (0.79s)
    --- PASS: TestSecretManagerIntegration/02_ListVaults (0.02s)
    --- PASS: TestSecretManagerIntegration/03_CreateVault (0.02s)
    --- PASS: TestSecretManagerIntegration/04_ImportMnemonic (0.75s)
    --- PASS: TestSecretManagerIntegration/05_AddSecret (0.04s)
    --- PASS: TestSecretManagerIntegration/06_GetSecret (0.04s)
    --- PASS: TestSecretManagerIntegration/07_AddSecretVersion (0.06s)
    --- PASS: TestSecretManagerIntegration/08_ListVersions (0.03s)
    --- PASS: TestSecretManagerIntegration/09_GetSpecificVersion (0.06s)
    --- PASS: TestSecretManagerIntegration/10_PromoteVersion (0.04s)
    --- PASS: TestSecretManagerIntegration/11_ListSecrets (0.06s)
    --- PASS: TestSecretManagerIntegration/12_SecretNameFormats (0.37s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/api/keys/production (0.03s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/config.yaml (0.03s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/ssh_private_key (0.03s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/deeply/nested/path/to/secret (0.03s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/test-with-dash (0.03s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/test.with.dots (0.03s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/test_with_underscore (0.03s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/mixed/test.name_format-123 (0.03s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/invalid_empty (0.01s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/invalid_UPPERCASE (0.01s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/invalid_with_space_space (0.01s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/invalid_with@symbol (0.01s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/invalid_with#hash (0.01s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/invalid_with$dollar (0.01s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/invalid__slash_leading-slash (0.01s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/invalid_trailing-slash_slash_ (0.01s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/invalid_double_slash__slash_slash (0.01s)
        --- PASS: TestSecretManagerIntegration/12_SecretNameFormats/invalid_.hidden (0.01s)
    --- FAIL: TestSecretManagerIntegration/13_UnlockerManagement (0.75s)
    --- PASS: TestSecretManagerIntegration/14_SwitchVault (0.03s)
    --- PASS: TestSecretManagerIntegration/15_VaultIsolation (0.08s)
    --- PASS: TestSecretManagerIntegration/16_GenerateSecret (0.10s)
    --- PASS: TestSecretManagerIntegration/17_ImportFromFile (0.06s)
    --- PASS: TestSecretManagerIntegration/18_AgeKeyOperations (0.09s)
    --- PASS: TestSecretManagerIntegration/19_DisasterRecovery (0.04s)
    --- PASS: TestSecretManagerIntegration/20_VersionTimestamps (0.17s)
    --- SKIP: TestSecretManagerIntegration/21_MaxVersionsPerDay (0.00s)
    --- PASS: TestSecretManagerIntegration/22_JSONOutput (0.02s)
    --- PASS: TestSecretManagerIntegration/23_ErrorHandling (0.06s)
    --- PASS: TestSecretManagerIntegration/24_EnvironmentVariables (0.79s)
    --- PASS: TestSecretManagerIntegration/25_ConcurrentOperations (0.03s)
    --- PASS: TestSecretManagerIntegration/26_LargeSecrets (0.07s)
    --- PASS: TestSecretManagerIntegration/27_SpecialCharacters (0.10s)
    --- FAIL: TestSecretManagerIntegration/28_VaultMetadata (0.00s)
    --- PASS: TestSecretManagerIntegration/29_SymlinkHandling (0.03s)
    --- FAIL: TestSecretManagerIntegration/30_BackupRestore (0.18s)
FAIL
FAIL	git.eeqj.de/sneak/secret/internal/cli	5.283s
FAIL