presets_test.go 2.5 KB

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