+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")
+}