github.com/k0marov/go-socnet@v0.0.0-20220715154813-90d07867c782/core/general/image_decoder/image_decoder_test.go (about) 1 package image_decoder_test 2 3 import ( 4 "fmt" 5 "github.com/k0marov/go-socnet/core/general/image_decoder" 6 . "github.com/k0marov/go-socnet/core/helpers/test_helpers" 7 "io" 8 "os" 9 "path/filepath" 10 "testing" 11 ) 12 13 func TestImageDecoderImpl(t *testing.T) { 14 readFixture := func(fileName string) []byte { 15 file, err := os.Open(filepath.Join("testdata", fileName)) 16 if err != nil { 17 t.Fatalf(fmt.Sprintf("error while opening fixture file: %v", err)) 18 } 19 defer file.Close() 20 contents, _ := io.ReadAll(file) 21 return contents 22 } 23 24 cases := []struct { 25 fixtureName string 26 wantImg image_decoder.Image 27 shouldErr bool 28 }{ 29 {"test_avatar.png", image_decoder.Image{Width: 640, Height: 640}, false}, 30 {"test_non_square_avatar.png", image_decoder.Image{Width: 640, Height: 480}, false}, 31 {"test_js_injection.js", image_decoder.Image{}, true}, 32 {"test_text.txt", image_decoder.Image{}, true}, 33 } 34 for _, c := range cases { 35 t.Run(c.fixtureName, func(t *testing.T) { 36 fileData := readFixture(c.fixtureName) 37 img, err := image_decoder.ImageDecoderImpl(fileData) 38 Assert(t, img, c.wantImg, "returned image") 39 if c.shouldErr { 40 AssertSomeError(t, err) 41 } else { 42 AssertNoError(t, err) 43 } 44 }) 45 } 46 }