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  }