presets_test.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package options
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/imgproxy/imgproxy/v3/config"
  6. "github.com/stretchr/testify/require"
  7. "github.com/stretchr/testify/suite"
  8. )
  9. type PresetsTestSuite struct{ suite.Suite }
  10. func (s *PresetsTestSuite) SetupTest() {
  11. config.Reset()
  12. // Reset presets
  13. presets = make(map[string]urlOptions)
  14. }
  15. func (s *PresetsTestSuite) TestParsePreset() {
  16. err := parsePreset("test=resize:fit:100:200/sharpen:2")
  17. require.Nil(s.T(), err)
  18. require.Equal(s.T(), urlOptions{
  19. urlOption{Name: "resize", Args: []string{"fit", "100", "200"}},
  20. urlOption{Name: "sharpen", Args: []string{"2"}},
  21. }, presets["test"])
  22. }
  23. func (s *PresetsTestSuite) TestParsePresetInvalidString() {
  24. presetStr := "resize:fit:100:200/sharpen:2"
  25. err := parsePreset(presetStr)
  26. require.Equal(s.T(), fmt.Errorf("Invalid preset string: %s", presetStr), err)
  27. require.Empty(s.T(), presets)
  28. }
  29. func (s *PresetsTestSuite) TestParsePresetEmptyName() {
  30. presetStr := "=resize:fit:100:200/sharpen:2"
  31. err := parsePreset(presetStr)
  32. require.Equal(s.T(), fmt.Errorf("Empty preset name: %s", presetStr), err)
  33. require.Empty(s.T(), presets)
  34. }
  35. func (s *PresetsTestSuite) TestParsePresetEmptyValue() {
  36. presetStr := "test="
  37. err := parsePreset(presetStr)
  38. require.Equal(s.T(), fmt.Errorf("Empty preset value: %s", presetStr), err)
  39. require.Empty(s.T(), presets)
  40. }
  41. func (s *PresetsTestSuite) TestParsePresetInvalidValue() {
  42. presetStr := "test=resize:fit:100:200/sharpen:2/blur"
  43. err := parsePreset(presetStr)
  44. require.Equal(s.T(), fmt.Errorf("Invalid preset value: %s", presetStr), err)
  45. require.Empty(s.T(), presets)
  46. }
  47. func (s *PresetsTestSuite) TestParsePresetEmptyString() {
  48. err := parsePreset(" ")
  49. require.Nil(s.T(), err)
  50. require.Empty(s.T(), presets)
  51. }
  52. func (s *PresetsTestSuite) TestParsePresetComment() {
  53. err := parsePreset("# test=resize:fit:100:200/sharpen:2")
  54. require.Nil(s.T(), err)
  55. require.Empty(s.T(), presets)
  56. }
  57. func (s *PresetsTestSuite) TestValidatePresets() {
  58. presets = map[string]urlOptions{
  59. "test": urlOptions{
  60. urlOption{Name: "resize", Args: []string{"fit", "100", "200"}},
  61. urlOption{Name: "sharpen", Args: []string{"2"}},
  62. },
  63. }
  64. err := ValidatePresets()
  65. require.Nil(s.T(), err)
  66. }
  67. func (s *PresetsTestSuite) TestValidatePresetsInvalid() {
  68. presets = map[string]urlOptions{
  69. "test": urlOptions{
  70. urlOption{Name: "resize", Args: []string{"fit", "-1", "-2"}},
  71. urlOption{Name: "sharpen", Args: []string{"2"}},
  72. },
  73. }
  74. err := ValidatePresets()
  75. require.Error(s.T(), err)
  76. }
  77. func TestPresets(t *testing.T) {
  78. suite.Run(t, new(PresetsTestSuite))
  79. }