21
"github.com/stretchr/testify/require"
24
func TestValidateSHA256(t *testing.T) {
30
{"valid", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", false},
31
{"too short", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85", true},
32
{"too long", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8556", true},
33
{"invalid hex", "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz", true},
35
for _, test := range tests {
36
t.Run(test.desc, func(t *testing.T) {
37
err := ValidateSHA256(test.input)
41
require.NoError(t, err)
47
func TestNewSHA256DigestFromHex(t *testing.T) {
48
require := require.New(t)
50
d, err := NewSHA256DigestFromHex("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
52
require.Equal("sha256", d.Algo())
53
require.Equal("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", d.Hex())
54
require.Equal("sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", d.String())
57
require.Equal([]byte("\"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\""), v)
58
require.Equal("e3b0", d.ShardID())
61
func TestNewSHA256DigestFromHexError(t *testing.T) {
62
_, err := NewSHA256DigestFromHex("invalid")
66
func TestParseSHA256Digest(t *testing.T) {
67
require := require.New(t)
69
d, err := ParseSHA256Digest("sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
71
require.Equal("sha256", d.Algo())
72
require.Equal("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", d.Hex())
73
require.Equal("sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", d.String())
76
require.Equal([]byte("\"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\""), v)
77
require.Equal("e3b0", d.ShardID())
80
func TestParseSHA256DigestErrors(t *testing.T) {
86
{"extra part", "sha256:sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
87
{"no algo", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
88
{"wrong algo", "sha1:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
89
{"invalid hex", "sha256:invalid"},
91
for _, test := range tests {
92
t.Run(test.desc, func(t *testing.T) {
93
_, err := ParseSHA256Digest(test.input)
99
func TestDigestStringConversion(t *testing.T) {
101
result, err := ParseSHA256Digest(d.String())
102
require.NoError(t, err)
103
require.Equal(t, d, result)
106
func TestDigestMarshalJSON(t *testing.T) {
107
require := require.New(t)
108
digest := DigestFixture()
110
b, err := json.Marshal(digest)
112
require.Equal(string(b), fmt.Sprintf("%q", digest))
115
require.NoError(json.Unmarshal(b, &result))
116
require.Equal(digest, result)
119
func TestDigestUnmarshalJSONErrors(t *testing.T) {
125
{"invalid", "\"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
126
{"no algo", "\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\""},
128
for _, test := range tests {
129
t.Run(test.desc, func(t *testing.T) {
131
require.Error(t, d.UnmarshalJSON([]byte(test.input)))
136
func TestDigestListValue(t *testing.T) {
137
require := require.New(t)
138
digests := DigestList{DigestFixture(), DigestFixture(), DigestFixture()}
139
v, err := digests.Value()
141
expected := fmt.Sprintf("[%q,%q,%q]", digests[0], digests[1], digests[2])
142
require.Equal(expected, fmt.Sprintf("%s", v))
144
var result DigestList
145
require.NoError(result.Scan([]byte(expected)))
146
require.Equal(digests, result)