status-im/status-go

View on GitHub
images/identity_test.go

Summary

Maintainability
A
0 mins
Test Coverage
package images

import (
    "encoding/json"
    "errors"
    "testing"

    "github.com/stretchr/testify/require"
)

func TestIdentityImage_GetDataURI(t *testing.T) {
    cs := []struct {
        II    IdentityImage
        URI   string
        Error error
    }{
        {
            IdentityImage{Payload: testJpegBytes},
            "data:image/jpeg;base64,/9j/2wCEAFA3PEY8MlA=",
            nil,
        },
        {
            IdentityImage{Payload: testPngBytes},
            "data:image/png;base64,iVBORw0KGgoAAAANSUg=",
            nil,
        },
        {
            IdentityImage{Payload: testGifBytes},
            "data:image/gif;base64,R0lGODlhAAEAAYQfAP8=",
            nil,
        },
        {
            IdentityImage{Payload: testWebpBytes},
            "data:image/webp;base64,UklGRpBJAABXRUJQVlA=",
            nil,
        },
        {
            IdentityImage{Payload: testAacBytes},
            "",
            errors.New("image format not supported"),
        },
    }

    for _, c := range cs {
        u, err := c.II.GetDataURI()

        if c.Error == nil {
            require.NoError(t, err)
        } else {
            require.EqualError(t, err, c.Error.Error())
        }

        require.Exactly(t, c.URI, u)
    }
}

func TestIdentityImage_MarshalJSON(t *testing.T) {
    ii := IdentityImage{
        Name:         "thumbnail",
        Payload:      testJpegBytes,
        Width:        80,
        Height:       80,
        FileSize:     256,
        ResizeTarget: 80,
    }
    expected := `{"keyUid":"","type":"thumbnail","uri":"data:image/jpeg;base64,/9j/2wCEAFA3PEY8MlA=","width":80,"height":80,"fileSize":256,"resizeTarget":80,"clock":0}`

    js, err := json.Marshal(ii)
    require.NoError(t, err)
    require.Exactly(t, expected, string(js))
}