1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package svg
- import (
- "os"
- "path/filepath"
- "regexp"
- "testing"
- "github.com/stretchr/testify/suite"
- "github.com/imgproxy/imgproxy/v3/config"
- "github.com/imgproxy/imgproxy/v3/imagedata"
- "github.com/imgproxy/imgproxy/v3/imagetype"
- )
- type SvgTestSuite struct {
- suite.Suite
- }
- func (s *SvgTestSuite) SetupSuite() {
- config.Reset()
- err := imagedata.Init()
- s.Require().NoError(err)
- }
- func (s *SvgTestSuite) readTestFile(name string) *imagedata.ImageData {
- wd, err := os.Getwd()
- s.Require().NoError(err)
- data, err := os.ReadFile(filepath.Join(wd, "..", "testdata", name))
- s.Require().NoError(err)
- return &imagedata.ImageData{
- Type: imagetype.SVG,
- Data: data,
- Headers: map[string]string{
- "Content-Type": "image/svg+xml",
- "Cache-Control": "public, max-age=12345",
- },
- }
- }
- func (s *SvgTestSuite) TestSanitize() {
- origin := s.readTestFile("test1.svg")
- expected := s.readTestFile("test1.sanitized.svg")
- actual, err := Sanitize(origin)
- s.Require().NoError(err)
- s.Require().Equal(string(expected.Data), string(actual.Data))
- s.Require().Equal(origin.Headers, actual.Headers)
- }
- func (s *SvgTestSuite) TestFixUnsupportedDropShadow() {
- origin := s.readTestFile("test1.drop-shadow.svg")
- expected := s.readTestFile("test1.drop-shadow.fixed.svg")
- actual, changed, err := FixUnsupported(origin)
- // `FixUnsupported` generates random IDs, we need to replace them for the test
- re := regexp.MustCompile(`"ds(in|of)-.+?"`)
- actualData := re.ReplaceAllString(string(actual.Data), `"ds$1-test"`)
- s.Require().NoError(err)
- s.Require().True(changed)
- s.Require().Equal(string(expected.Data), actualData)
- s.Require().Equal(origin.Headers, actual.Headers)
- }
- func (s *SvgTestSuite) TestFixUnsupportedNothingChanged() {
- origin := s.readTestFile("test1.svg")
- actual, changed, err := FixUnsupported(origin)
- s.Require().NoError(err)
- s.Require().False(changed)
- s.Require().Equal(origin, actual)
- }
- func TestSvg(t *testing.T) {
- suite.Run(t, new(SvgTestSuite))
- }
|