logging_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package config
  2. import (
  3. "errors"
  4. "testing"
  5. )
  6. func TestLoggingValid(t *testing.T) {
  7. for _, tt := range []struct {
  8. name string
  9. input *Logging
  10. want error
  11. }{
  12. {
  13. name: "simple happy",
  14. input: (Logging{}).Default(),
  15. },
  16. {
  17. name: "default file config",
  18. input: &Logging{
  19. Sink: LogSinkFile,
  20. Parameters: (&LoggingFileConfig{}).Default(),
  21. },
  22. },
  23. {
  24. name: "invalid sink",
  25. input: &Logging{
  26. Sink: "taco invalid",
  27. },
  28. want: ErrInvalidLoggingSink,
  29. },
  30. {
  31. name: "missing parameters",
  32. input: &Logging{
  33. Sink: LogSinkFile,
  34. },
  35. want: ErrMissingLoggingFileConfig,
  36. },
  37. {
  38. name: "invalid parameters",
  39. input: &Logging{
  40. Sink: LogSinkFile,
  41. Parameters: &LoggingFileConfig{},
  42. },
  43. want: ErrInvalidLoggingFileConfig,
  44. },
  45. {
  46. name: "file sink with no filename",
  47. input: &Logging{
  48. Sink: LogSinkFile,
  49. Parameters: &LoggingFileConfig{
  50. Filename: "",
  51. MaxBackups: 3,
  52. MaxBytes: 104857600, // 100 Mi
  53. MaxAge: 7, // 7 days
  54. Compress: true,
  55. UseLocalTime: false,
  56. },
  57. },
  58. want: ErrMissingValue,
  59. },
  60. {
  61. name: "file sink with negative max backups",
  62. input: &Logging{
  63. Sink: LogSinkFile,
  64. Parameters: &LoggingFileConfig{
  65. Filename: "./var/anubis.log",
  66. MaxBackups: -3,
  67. MaxBytes: 104857600, // 100 Mi
  68. MaxAge: 7, // 7 days
  69. Compress: true,
  70. UseLocalTime: false,
  71. },
  72. },
  73. want: ErrOutOfRange,
  74. },
  75. {
  76. name: "file sink with negative max age",
  77. input: &Logging{
  78. Sink: LogSinkFile,
  79. Parameters: &LoggingFileConfig{
  80. Filename: "./var/anubis.log",
  81. MaxBackups: 3,
  82. MaxBytes: 104857600, // 100 Mi
  83. MaxAge: -7, // 7 days
  84. Compress: true,
  85. UseLocalTime: false,
  86. },
  87. },
  88. want: ErrOutOfRange,
  89. },
  90. } {
  91. t.Run(tt.name, func(t *testing.T) {
  92. err := tt.input.Valid()
  93. if !errors.Is(err, tt.want) {
  94. t.Logf("wanted error: %v", tt.want)
  95. t.Logf(" got error: %v", err)
  96. t.Fatal("got wrong error")
  97. }
  98. })
  99. }
  100. }