package cli //nolint:testpackage // sets the unexported rootFlags directly import ( "bytes" "errors" "io" "os" "strings" "testing" "sneak.berlin/go/vaultik/internal/vaultik" ) // TestDatabaseDeleteDeclinedIsError checks that answering anything but // "yes" keeps the database and returns ErrNotConfirmed, so the command // exits non-zero. // //nolint:paralleltest // mutates the process-global rootFlags func TestDatabaseDeleteDeclinedIsError(t *testing.T) { dir := t.TempDir() dbPath, cfgPath := seedDatabaseDeleteConfig(t, dir) setRootFlags(t, RootFlags{ConfigPath: cfgPath}) var out bytes.Buffer cmd := newDatabaseDeleteCommand() cmd.SetOut(&out) cmd.SetErr(io.Discard) cmd.SetIn(strings.NewReader("no\n")) cmd.SetArgs(nil) err := cmd.Execute() if !errors.Is(err, vaultik.ErrNotConfirmed) { t.Errorf("declined database delete returned %v, want %v", err, vaultik.ErrNotConfirmed) } _, err = os.Stat(dbPath) if err != nil { t.Errorf("declined database delete removed the file: %v", err) } if !strings.Contains(out.String(), "Aborted.") { t.Errorf("declined database delete printed %q, want Aborted.", out.String()) } }