package main import ( "os" "path/filepath" "testing" "github.com/stretchr/testify/require" ) func TestDurableReplacementKeepsPrivateCompleteContents(t *testing.T) { path := filepath.Join(t.TempDir(), "state.json") require.NoError(t, writeFileDurable(path, []byte("first\n"))) require.NoError(t, writeFileDurable(path, []byte("second\n"))) data, err := os.ReadFile(path) require.NoError(t, err) require.Equal(t, "second\n", string(data)) info, err := os.Stat(path) require.NoError(t, err) require.Equal(t, os.FileMode(0o600), info.Mode().Perm()) entries, err := os.ReadDir(filepath.Dir(path)) require.NoError(t, err) require.Len(t, entries, 1) } func TestDurableReplacementReportsFailuresAndRemovesTemporaryFiles(t *testing.T) { directory := t.TempDir() path := filepath.Join(directory, "state.json") require.NoError(t, os.Mkdir(path, 0o700)) require.ErrorContains(t, writeFileDurable(path, []byte("data")), "publish durable file") entries, err := os.ReadDir(directory) require.NoError(t, err) require.Len(t, entries, 1) require.True(t, entries[0].IsDir()) require.ErrorContains(t, writeFileDurable(filepath.Join(directory, "missing", "state"), nil), "create durable temporary file") }