presets_test.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package options
  2. import (
  3. "testing"
  4. "github.com/imgproxy/imgproxy/v3/security"
  5. "github.com/imgproxy/imgproxy/v3/testutil"
  6. "github.com/stretchr/testify/suite"
  7. )
  8. type PresetsTestSuite struct {
  9. testutil.LazySuite
  10. security *security.Checker
  11. }
  12. func (s *PresetsTestSuite) SetupSuite() {
  13. c := security.NewDefaultConfig()
  14. security, err := security.New(&c)
  15. s.Require().NoError(err)
  16. s.security = security
  17. }
  18. func (s *PresetsTestSuite) newFactory(presets ...string) (*Factory, error) {
  19. c := NewDefaultConfig()
  20. c.Presets = presets
  21. return NewFactory(&c, s.security)
  22. }
  23. func (s *PresetsTestSuite) TestParsePreset() {
  24. f, err := s.newFactory("test=resize:fit:100:200/sharpen:2")
  25. s.Require().NoError(err)
  26. s.Require().Equal(urlOptions{
  27. urlOption{Name: "resize", Args: []string{"fit", "100", "200"}},
  28. urlOption{Name: "sharpen", Args: []string{"2"}},
  29. }, f.presets["test"])
  30. }
  31. func (s *PresetsTestSuite) TestParsePresetInvalidString() {
  32. presetStr := "resize:fit:100:200/sharpen:2"
  33. _, err := s.newFactory(presetStr)
  34. s.Require().Error(err, "invalid preset string: %s", presetStr)
  35. }
  36. func (s *PresetsTestSuite) TestParsePresetEmptyName() {
  37. presetStr := "=resize:fit:100:200/sharpen:2"
  38. _, err := s.newFactory(presetStr)
  39. s.Require().Error(err, "empty preset name: %s", presetStr)
  40. }
  41. func (s *PresetsTestSuite) TestParsePresetEmptyValue() {
  42. presetStr := "test="
  43. _, err := s.newFactory(presetStr)
  44. s.Require().Error(err, "empty preset value: %s", presetStr)
  45. }
  46. func (s *PresetsTestSuite) TestParsePresetInvalidValue() {
  47. presetStr := "test=resize:fit:100:200/sharpen:2/blur"
  48. _, err := s.newFactory(presetStr)
  49. s.Require().Error(err, "invalid preset value: %s", presetStr)
  50. }
  51. func (s *PresetsTestSuite) TestParsePresetEmptyString() {
  52. f, err := s.newFactory(" ")
  53. s.Require().NoError(err)
  54. s.Require().Empty(f.presets)
  55. }
  56. func (s *PresetsTestSuite) TestParsePresetComment() {
  57. f, err := s.newFactory("# test=resize:fit:100:200/sharpen:2")
  58. s.Require().NoError(err)
  59. s.Require().Empty(f.presets)
  60. }
  61. func (s *PresetsTestSuite) TestValidatePresets() {
  62. f, err := s.newFactory("test=resize:fit:100:200/sharpen:2")
  63. s.Require().NoError(err)
  64. s.Require().NotEmpty(f.presets)
  65. }
  66. func (s *PresetsTestSuite) TestValidatePresetsInvalid() {
  67. _, err := s.newFactory("test=resize:fit:-1:-2/sharpen:2")
  68. s.Require().Error(err)
  69. }
  70. func TestPresets(t *testing.T) {
  71. suite.Run(t, new(PresetsTestSuite))
  72. }