remotes_test.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package main
  2. import (
  3. "net/smtp"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. )
  7. func AssertRemoteUrlEquals(t *testing.T, expected *Remote, remotUrl string) {
  8. actual, err := ParseRemote(remotUrl)
  9. assert.Nil(t, err)
  10. assert.NotNil(t, actual)
  11. assert.Equal(t, expected.Scheme, actual.Scheme, "Scheme %s", remotUrl)
  12. assert.Equal(t, expected.Addr, actual.Addr, "Addr %s", remotUrl)
  13. assert.Equal(t, expected.Hostname, actual.Hostname, "Hostname %s", remotUrl)
  14. assert.Equal(t, expected.Port, actual.Port, "Port %s", remotUrl)
  15. assert.Equal(t, expected.Sender, actual.Sender, "Sender %s", remotUrl)
  16. assert.Equal(t, expected.SkipVerify, actual.SkipVerify, "SkipVerify %s", remotUrl)
  17. if expected.Auth != nil || actual.Auth != nil {
  18. assert.NotNil(t, expected, "Auth %s", remotUrl)
  19. assert.NotNil(t, actual, "Auth %s", remotUrl)
  20. assert.IsType(t, expected.Auth, actual.Auth)
  21. }
  22. }
  23. func TestValidRemoteUrls(t *testing.T) {
  24. AssertRemoteUrlEquals(t, &Remote{
  25. Scheme: "smtp",
  26. SkipVerify: false,
  27. Auth: nil,
  28. Hostname: "email.com",
  29. Port: "25",
  30. Addr: "email.com:25",
  31. Sender: "",
  32. }, "smtp://email.com")
  33. AssertRemoteUrlEquals(t, &Remote{
  34. Scheme: "smtp",
  35. SkipVerify: true,
  36. Auth: nil,
  37. Hostname: "email.com",
  38. Port: "25",
  39. Addr: "email.com:25",
  40. Sender: "",
  41. }, "smtp://email.com?skipVerify")
  42. AssertRemoteUrlEquals(t, &Remote{
  43. Scheme: "smtp",
  44. SkipVerify: false,
  45. Auth: smtp.PlainAuth("", "user", "pass", ""),
  46. Hostname: "email.com",
  47. Port: "25",
  48. Addr: "email.com:25",
  49. Sender: "",
  50. }, "smtp://user:[email protected]")
  51. AssertRemoteUrlEquals(t, &Remote{
  52. Scheme: "smtp",
  53. SkipVerify: false,
  54. Auth: LoginAuth("user", "pass"),
  55. Hostname: "email.com",
  56. Port: "25",
  57. Addr: "email.com:25",
  58. Sender: "",
  59. }, "smtp://user:[email protected]?auth=login")
  60. AssertRemoteUrlEquals(t, &Remote{
  61. Scheme: "smtp",
  62. SkipVerify: false,
  63. Auth: LoginAuth("user", "pass"),
  64. Hostname: "email.com",
  65. Port: "25",
  66. Addr: "email.com:25",
  67. Sender: "[email protected]",
  68. }, "smtp://user:[email protected]/[email protected]?auth=login")
  69. AssertRemoteUrlEquals(t, &Remote{
  70. Scheme: "smtps",
  71. SkipVerify: false,
  72. Auth: LoginAuth("user", "pass"),
  73. Hostname: "email.com",
  74. Port: "465",
  75. Addr: "email.com:465",
  76. Sender: "[email protected]",
  77. }, "smtps://user:[email protected]/[email protected]?auth=login")
  78. AssertRemoteUrlEquals(t, &Remote{
  79. Scheme: "smtps",
  80. SkipVerify: true,
  81. Auth: LoginAuth("user", "pass"),
  82. Hostname: "email.com",
  83. Port: "8425",
  84. Addr: "email.com:8425",
  85. Sender: "[email protected]",
  86. }, "smtps://user:[email protected]:8425/[email protected]?auth=login&skipVerify")
  87. AssertRemoteUrlEquals(t, &Remote{
  88. Scheme: "starttls",
  89. SkipVerify: true,
  90. Auth: LoginAuth("user", "pass"),
  91. Hostname: "email.com",
  92. Port: "8425",
  93. Addr: "email.com:8425",
  94. Sender: "[email protected]",
  95. }, "starttls://user:[email protected]:8425/[email protected]?auth=login&skipVerify")
  96. }
  97. func TestMissingScheme(t *testing.T) {
  98. _, err := ParseRemote("http://user:[email protected]:8425/[email protected]")
  99. assert.NotNil(t, err, "Err must be present")
  100. assert.Equal(t, err.Error(), "'http' is not a supported relay scheme")
  101. }