svg_test.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package svg
  2. import (
  3. "bytes"
  4. "io"
  5. "testing"
  6. "github.com/stretchr/testify/suite"
  7. "github.com/imgproxy/imgproxy/v3/imagedata"
  8. "github.com/imgproxy/imgproxy/v3/imagetype"
  9. "github.com/imgproxy/imgproxy/v3/options"
  10. "github.com/imgproxy/imgproxy/v3/testutil"
  11. )
  12. type SvgTestSuite struct {
  13. suite.Suite
  14. testData *testutil.TestDataProvider
  15. }
  16. func (s *SvgTestSuite) SetupSuite() {
  17. s.testData = testutil.NewTestDataProvider(s.T)
  18. }
  19. func (s *SvgTestSuite) readTestFile(name string) imagedata.ImageData {
  20. data := s.testData.Read(name)
  21. return imagedata.NewFromBytesWithFormat(imagetype.SVG, data)
  22. }
  23. func (s *SvgTestSuite) compare(expected, actual imagedata.ImageData) {
  24. expectedData, err := io.ReadAll(expected.Reader())
  25. s.Require().NoError(err)
  26. actualData, err := io.ReadAll(actual.Reader())
  27. s.Require().NoError(err)
  28. // Trim whitespace to not care about ending newlines in test files
  29. expectedData = bytes.TrimSpace(expectedData)
  30. actualData = bytes.TrimSpace(actualData)
  31. s.Require().Equal(expectedData, actualData)
  32. }
  33. func (s *SvgTestSuite) TestSanitize() {
  34. origin := s.readTestFile("test1.svg")
  35. expected := s.readTestFile("test1.sanitized.svg")
  36. config := NewDefaultConfig()
  37. svg := New(&config)
  38. actual, err := svg.Process(options.New(), origin)
  39. s.Require().NoError(err)
  40. s.compare(expected, actual)
  41. }
  42. func TestSvg(t *testing.T) {
  43. suite.Run(t, new(SvgTestSuite))
  44. }