config_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package responsewriter
  2. import (
  3. "fmt"
  4. "io"
  5. "os"
  6. "testing"
  7. "github.com/imgproxy/imgproxy/v3/config"
  8. "github.com/sirupsen/logrus"
  9. "github.com/stretchr/testify/suite"
  10. )
  11. type ResponseWriterConfigSuite struct {
  12. suite.Suite
  13. }
  14. func (s *ResponseWriterConfigSuite) SetupSuite() {
  15. logrus.SetOutput(io.Discard)
  16. }
  17. func (s *ResponseWriterConfigSuite) TearDownSuite() {
  18. logrus.SetOutput(os.Stdout)
  19. }
  20. func (s *ResponseWriterConfigSuite) TestLoadingVaryValueFromEnv() {
  21. defaultEnv := map[string]string{
  22. "IMGPROXY_AUTO_WEBP": "",
  23. "IMGPROXY_ENFORCE_WEBP": "",
  24. "IMGPROXY_AUTO_AVIF": "",
  25. "IMGPROXY_ENFORCE_AVIF": "",
  26. "IMGPROXY_AUTO_JXL": "",
  27. "IMGPROXY_ENFORCE_JXL": "",
  28. "IMGPROXY_ENABLE_CLIENT_HINTS": "",
  29. }
  30. testCases := []struct {
  31. name string
  32. env map[string]string
  33. expected string
  34. }{
  35. {
  36. name: "AutoWebP",
  37. env: map[string]string{"IMGPROXY_AUTO_WEBP": "true"},
  38. expected: "Accept",
  39. },
  40. {
  41. name: "EnforceWebP",
  42. env: map[string]string{"IMGPROXY_ENFORCE_WEBP": "true"},
  43. expected: "Accept",
  44. },
  45. {
  46. name: "AutoAVIF",
  47. env: map[string]string{"IMGPROXY_AUTO_AVIF": "true"},
  48. expected: "Accept",
  49. },
  50. {
  51. name: "EnforceAVIF",
  52. env: map[string]string{"IMGPROXY_ENFORCE_AVIF": "true"},
  53. expected: "Accept",
  54. },
  55. {
  56. name: "AutoJXL",
  57. env: map[string]string{"IMGPROXY_AUTO_JXL": "true"},
  58. expected: "Accept",
  59. },
  60. {
  61. name: "EnforceJXL",
  62. env: map[string]string{"IMGPROXY_ENFORCE_JXL": "true"},
  63. expected: "Accept",
  64. },
  65. {
  66. name: "EnableClientHints",
  67. env: map[string]string{"IMGPROXY_ENABLE_CLIENT_HINTS": "true"},
  68. expected: "Sec-CH-DPR, DPR, Sec-CH-Width, Width",
  69. },
  70. {
  71. name: "Combined",
  72. env: map[string]string{
  73. "IMGPROXY_AUTO_WEBP": "true",
  74. "IMGPROXY_ENABLE_CLIENT_HINTS": "true",
  75. },
  76. expected: "Accept, Sec-CH-DPR, DPR, Sec-CH-Width, Width",
  77. },
  78. }
  79. for _, tc := range testCases {
  80. s.Run(fmt.Sprintf("%v", tc.env), func() {
  81. // Set default environment variables
  82. for key, value := range defaultEnv {
  83. s.T().Setenv(key, value)
  84. }
  85. // Set environment variables
  86. for key, value := range tc.env {
  87. s.T().Setenv(key, value)
  88. }
  89. // TODO: Remove when we removed global config
  90. config.Reset()
  91. config.Configure()
  92. // Load config
  93. cfg, err := LoadConfigFromEnv(nil)
  94. // Assert expected values
  95. s.Require().NoError(err)
  96. s.Require().Equal(tc.expected, cfg.VaryValue)
  97. })
  98. }
  99. }
  100. func TestResponseWriterConfig(t *testing.T) {
  101. suite.Run(t, new(ResponseWriterConfigSuite))
  102. }