config_test.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package config
  2. import (
  3. "testing"
  4. "git.sr.ht/~blallo/papero/worker"
  5. "github.com/google/go-cmp/cmp"
  6. )
  7. func TestParseConfig(t *testing.T) {
  8. expected := &MemConfig{
  9. Default: "First Account",
  10. Accounts: map[string]*AccountData{
  11. "First Account": {
  12. Host: "mx.example.com",
  13. Port: 993,
  14. Username: "first@example.com",
  15. Password: "123qweasdzxc",
  16. ExcludedFolders: []string{"Draft", "Junk"},
  17. MailboxPath: "/opt",
  18. Messages: 30,
  19. },
  20. "Other Account": {
  21. Host: "mail.personal.me",
  22. Port: 666,
  23. Username: "h4x0R@personal.me",
  24. Password: "mySup3r5ekre7p4ssw0rd123",
  25. ExcludedFolders: []string{},
  26. MailboxPath: "../base/mailbox/Other Account",
  27. Messages: 50,
  28. },
  29. },
  30. Workers: map[string]*worker.Worker{
  31. "First Account": {},
  32. "Other Account": {},
  33. },
  34. }
  35. file := writeToTempFile(t, "papero.*.toml", testConfig)
  36. fileConfig, err := parseFile(file.Name())
  37. if err != nil {
  38. t.Fatal(err)
  39. }
  40. result, errs := parseConfig(fileConfig)
  41. if !errs.Check() {
  42. t.Fatal(errs)
  43. }
  44. if result.Default != expected.Default {
  45. t.Errorf("Default account does not match. Expected: %s\tResult:\t%s\n", expected.Default, result.Default)
  46. }
  47. if !cmp.Equal(result.Accounts, expected.Accounts) {
  48. t.Errorf("Result and expected result differ: %+v\n", cmp.Diff(result.Accounts, expected.Accounts))
  49. }
  50. }