config_test.go 2.5 KB

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