110 lines
2.6 KiB
Go
110 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"io/fs"
|
|
"os"
|
|
"path/filepath"
|
|
"rawmark/deploy"
|
|
"rawmark/internal/auth"
|
|
"rawmark/internal/store"
|
|
"rawmark/internal/vault"
|
|
"testing"
|
|
)
|
|
|
|
func TestInitializeExamplesOnlyOnce(t *testing.T) {
|
|
data := t.TempDir()
|
|
v, err := vault.Open(filepath.Join(data, "vault"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
st, err := store.Open(filepath.Join(data, "rawmark.db"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := initializeExamples(v, st); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if ready, err := auth.New(st).IsSetUp(); err != nil || ready {
|
|
t.Fatalf("examples must not initialize credentials: %v, %v", ready, err)
|
|
}
|
|
count := 0
|
|
if err := fs.WalkDir(deploy.Examples, "data/vault", func(name string, entry fs.DirEntry, walkErr error) error {
|
|
if walkErr != nil {
|
|
return walkErr
|
|
}
|
|
if entry.IsDir() {
|
|
return nil
|
|
}
|
|
if filepath.Ext(name) != ".md" {
|
|
t.Fatalf("unexpected template file: %s", name)
|
|
}
|
|
count++
|
|
rel, err := filepath.Rel("data/vault", name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if _, err := os.Stat(filepath.Join(v.Root(), rel)); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if count != 7 {
|
|
t.Fatalf("expected seven public sample notes, got %d", count)
|
|
}
|
|
// Deletion before password setup, settings reset, and process restart must not restore examples.
|
|
entries, err := os.ReadDir(v.Root())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, entry := range entries {
|
|
if entry.Name() != ".rawmark" {
|
|
if err := os.RemoveAll(filepath.Join(v.Root(), entry.Name())); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
}
|
|
if err := st.ResetPreferences(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := st.Close(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
st, err = store.Open(filepath.Join(data, "rawmark.db"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer st.Close()
|
|
if err := initializeExamples(v, st); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
entries, err = os.ReadDir(v.Root())
|
|
if err != nil || len(entries) != 1 || entries[0].Name() != ".rawmark" {
|
|
t.Fatalf("deleted examples were restored: %v, %v", entries, err)
|
|
}
|
|
}
|
|
|
|
func TestInitializeExamplesSkipsInitializedEmptyInstance(t *testing.T) {
|
|
data := t.TempDir()
|
|
v, err := vault.Open(filepath.Join(data, "vault"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
st, err := store.Open(filepath.Join(data, "rawmark.db"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer st.Close()
|
|
if err := auth.New(st).Setup("synthetic-test-password"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := initializeExamples(v, st); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
entries, err := os.ReadDir(v.Root())
|
|
if err != nil || len(entries) != 1 || entries[0].Name() != ".rawmark" {
|
|
t.Fatalf("examples were added to an existing account: %v, %v", entries, err)
|
|
}
|
|
}
|