diff --git a/src/Karls.BetterSecretsTool/Tool.cs b/src/Karls.BetterSecretsTool/Tool.cs index d420a59..390c464 100644 --- a/src/Karls.BetterSecretsTool/Tool.cs +++ b/src/Karls.BetterSecretsTool/Tool.cs @@ -214,6 +214,17 @@ private void ShowSecretJson(ISecretsStore secretStore) { private void RemoveSecret(ISecretsStore secretStore) { var key = SelectKey(secretStore, "[grey]Select a secret to delete:[/]"); + + var response = _console.Prompt( + new TextPrompt($"[grey]Are you sure you want to delete [red]{Markup.Escape(key)}[/]? ([green]y[/]/[red]n[/]):[/]") + .AllowEmpty()); + var confirmed = response.Equals("y", StringComparison.OrdinalIgnoreCase) || + response.Equals("yes", StringComparison.OrdinalIgnoreCase); + + if(!confirmed) { + return; + } + secretStore.Remove(key); secretStore.Save(); } diff --git a/test/Karls.BetterSecretsTool.Tests/ConsoleUIIntegrationTests.cs b/test/Karls.BetterSecretsTool.Tests/ConsoleUIIntegrationTests.cs index 34d93f6..830ac2a 100644 --- a/test/Karls.BetterSecretsTool.Tests/ConsoleUIIntegrationTests.cs +++ b/test/Karls.BetterSecretsTool.Tests/ConsoleUIIntegrationTests.cs @@ -113,9 +113,10 @@ public void RemoveSecret_WhenUserRemovesSecret_SecretIsDeleted() { secretsStore.Set("SecretToRemove", "SomeValue"); secretsStore.Save(); - // Simulate: D (delete secret), select the key (Enter to select first), then Q (quit) + // Simulate: D (delete secret), select the key (Enter to select first), confirm (y), then Q (quit) console.Input.PushText("D"); console.Input.PushKey(ConsoleKey.Enter); // Select first (only) item + console.Input.PushTextWithEnter("y"); // Confirm deletion console.Input.PushText("Q"); // Act @@ -165,6 +166,7 @@ public void AddEditRemove_FullWorkflow_SecretsAreManagedCorrectly() { // Step 4: Remove SecondKey (first in sorted list, so just press Enter) console.Input.PushText("D"); console.Input.PushKey(ConsoleKey.Enter); // Select first item (SecondKey) + console.Input.PushTextWithEnter("y"); // Confirm deletion // Step 5: Quit console.Input.PushText("Q"); diff --git a/test/Karls.BetterSecretsTool.Tests/EndToEndIntegrationTests.cs b/test/Karls.BetterSecretsTool.Tests/EndToEndIntegrationTests.cs index d74dec1..dba9edd 100644 --- a/test/Karls.BetterSecretsTool.Tests/EndToEndIntegrationTests.cs +++ b/test/Karls.BetterSecretsTool.Tests/EndToEndIntegrationTests.cs @@ -149,9 +149,10 @@ public void Run_WithProjectDirectory_RemoveSecret_SecretIsDeleted() { console.Interactive(); var tool = CreateRealTool(console); - // Simulate: D (delete secret), select the key (Enter to select first), then Q (quit) + // Simulate: D (delete secret), select the key (Enter to select first), confirm (y), then Q (quit) console.Input.PushText("D"); console.Input.PushKey(ConsoleKey.Enter); // Select first (only) item + console.Input.PushTextWithEnter("y"); // Confirm deletion console.Input.PushText("Q"); // Act @@ -196,6 +197,7 @@ public void Run_WithProjectDirectory_FullWorkflow_SecretsAreManagedCorrectly() { // Step 4: Remove SecondKey (first in sorted list, so just press Enter) console.Input.PushText("D"); console.Input.PushKey(ConsoleKey.Enter); // Select first item (SecondKey) + console.Input.PushTextWithEnter("y"); // Confirm deletion // Step 5: Quit console.Input.PushText("Q");