watcher_path_test.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package filehelper_test
  2. import (
  3. "path/filepath"
  4. "testing"
  5. "time"
  6. "github.com/OliveTin/OliveTin/internal/configissues"
  7. "github.com/OliveTin/OliveTin/internal/filehelper"
  8. "github.com/stretchr/testify/assert"
  9. "github.com/stretchr/testify/require"
  10. )
  11. func TestWatchDirectoryCreateReportsMissingPath(t *testing.T) {
  12. configissues.Replace(nil)
  13. missing := filepath.Join(t.TempDir(), "missing-watch-dir")
  14. done := make(chan struct{})
  15. go func() {
  16. filehelper.WatchDirectoryCreate(missing, func(string) {}, filehelper.WatchMeta{})
  17. close(done)
  18. }()
  19. select {
  20. case <-done:
  21. case <-time.After(2 * time.Second):
  22. t.Fatal("WatchDirectoryCreate did not return after watcher failure")
  23. }
  24. issues := configissues.List()
  25. require.Len(t, issues, 1)
  26. assert.Equal(t, configissues.CodeWatcherPath, issues[0].Code)
  27. assert.Equal(t, missing, issues[0].Source)
  28. assert.Contains(t, issues[0].Message, missing)
  29. assert.Empty(t, issues[0].ActionID)
  30. }
  31. func TestWatchDirectoryCreateReportsActionMeta(t *testing.T) {
  32. configissues.Replace(nil)
  33. missing := filepath.Join(t.TempDir(), "missing-secret-watch")
  34. done := make(chan struct{})
  35. go func() {
  36. filehelper.WatchDirectoryCreate(missing, func(string) {}, filehelper.WatchMeta{
  37. ActionID: "secret_action",
  38. ActionTitle: "Secret Action",
  39. ConfigFile: "/etc/OliveTin/secret.yaml",
  40. })
  41. close(done)
  42. }()
  43. select {
  44. case <-done:
  45. case <-time.After(2 * time.Second):
  46. t.Fatal("WatchDirectoryCreate did not return after watcher failure")
  47. }
  48. issues := configissues.List()
  49. require.Len(t, issues, 1)
  50. assert.Equal(t, "secret_action", issues[0].ActionID)
  51. assert.Equal(t, "Secret Action", issues[0].ActionTitle)
  52. assert.Equal(t, "/etc/OliveTin/secret.yaml", issues[0].ConfigFile)
  53. }