config_test.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package presence
  2. import (
  3. "net"
  4. "path/filepath"
  5. "testing"
  6. "time"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestParseConfig(t *testing.T) {
  10. cases := []struct {
  11. name, file string
  12. config *Config
  13. err string
  14. }{
  15. {
  16. name: "success",
  17. file: "success.yml",
  18. config: &Config{
  19. Interval: 1 * time.Minute,
  20. MACAddresses: []MACAddress{
  21. {net.HardwareAddr{0, 0, 0, 0, 0, 0xa}},
  22. {net.HardwareAddr{0, 0, 0, 0, 0, 0xb}},
  23. },
  24. PingCount: 5,
  25. },
  26. },
  27. {
  28. name: "defaults",
  29. file: "defaults.yml",
  30. config: &Config{
  31. Interval: 30 * time.Second,
  32. MACAddresses: []MACAddress{
  33. {net.HardwareAddr{0, 0, 0, 0, 0, 1}},
  34. {net.HardwareAddr{0, 0, 0, 0, 0, 2}},
  35. },
  36. PingCount: 1,
  37. },
  38. },
  39. {
  40. name: "nonexistent file",
  41. file: "nonexistent.yml",
  42. err: "open tests/nonexistent.yml: no such file or directory",
  43. },
  44. {
  45. name: "wrong MAC encoding",
  46. file: "wrong_mac_encoding.yml",
  47. err: "yaml: unmarshal errors:\n line 2: cannot unmarshal !!seq into string",
  48. },
  49. {
  50. name: "bad MAC encoding",
  51. file: "bad_mac_encoding.yml",
  52. err: "address 00-00-00-00-00-0x: invalid MAC address",
  53. },
  54. }
  55. for _, tc := range cases {
  56. tc := tc
  57. t.Run(tc.name, func(t *testing.T) {
  58. t.Parallel()
  59. assert := assert.New(t)
  60. c, err := ParseConfig(filepath.Join("tests", tc.file))
  61. if tc.err != "" {
  62. assert.ErrorContains(err, tc.err)
  63. } else {
  64. assert.NoError(err)
  65. assert.Equal(tc.config, c)
  66. }
  67. })
  68. }
  69. }