1
0

presets_test.go 2.4 KB

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