mirror of
https://github.com/anchore/syft
synced 2024-11-10 14:24:12 +00:00
cfbb9f703b
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
132 lines
2.8 KiB
Go
132 lines
2.8 KiB
Go
package file
|
|
|
|
import (
|
|
"crypto"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/anchore/syft/syft/file"
|
|
)
|
|
|
|
func TestCleanDigestAlgorithmName(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input string
|
|
want string
|
|
}{
|
|
{
|
|
name: "go case",
|
|
input: "SHA-256",
|
|
want: "sha256",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
assert.Equal(t, tt.want, CleanDigestAlgorithmName(tt.input))
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestNewDigestsFromFile(t *testing.T) {
|
|
require.NotEmpty(t, supportedHashAlgorithms())
|
|
|
|
tests := []struct {
|
|
name string
|
|
fixture string
|
|
hashes []crypto.Hash
|
|
want []file.Digest
|
|
wantErr require.ErrorAssertionFunc
|
|
}{
|
|
{
|
|
name: "check supported hash algorithms",
|
|
fixture: "test-fixtures/digest.txt",
|
|
hashes: supportedHashAlgorithms(),
|
|
want: []file.Digest{
|
|
{
|
|
Algorithm: "md5",
|
|
Value: "e8818a24402ae7f8b874cdd9350c1b51",
|
|
},
|
|
{
|
|
Algorithm: "sha1",
|
|
Value: "eea4671d168c81fd52e615ed9fb3531a526f4748",
|
|
},
|
|
{
|
|
Algorithm: "sha224",
|
|
Value: "fd993e84c7afb449d34bcae7c5ee118f5c73b50170da05171523b22c",
|
|
},
|
|
{
|
|
Algorithm: "sha256",
|
|
Value: "cbf1a703b7e4a67529d6e17114880dfa9f879f3749872e1a9d4a20ac509165ad",
|
|
},
|
|
{
|
|
Algorithm: "sha384",
|
|
Value: "1eaded3f17fb8d7b731c9175a0f355d3a35575c3cb6cdda46a5272b632968d7257a5e6437d0efae599a81a1b2dcc81ba",
|
|
},
|
|
{
|
|
Algorithm: "sha512",
|
|
Value: "b49d5995456edba144dce750eaa8eae12af8fd08c076d401fcf78aac4172080feb70baaa5ed8c1b05046ec278446330fbf77e8ca9e60c03945ded761a641a7e1",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if tt.wantErr == nil {
|
|
tt.wantErr = require.NoError
|
|
}
|
|
|
|
fh, err := os.Open(tt.fixture)
|
|
require.NoError(t, err)
|
|
|
|
got, err := NewDigestsFromFile(fh, tt.hashes)
|
|
tt.wantErr(t, err)
|
|
if err != nil {
|
|
return
|
|
}
|
|
assert.Equal(t, tt.want, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestHashers(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
names []string
|
|
want []crypto.Hash
|
|
wantErr require.ErrorAssertionFunc
|
|
}{
|
|
{
|
|
name: "check supported hash algorithms",
|
|
names: []string{"MD-5", "shA1", "sHa224", "sha---256", "sha384", "sha512"},
|
|
want: []crypto.Hash{
|
|
crypto.MD5,
|
|
crypto.SHA1,
|
|
crypto.SHA224,
|
|
crypto.SHA256,
|
|
crypto.SHA384,
|
|
crypto.SHA512,
|
|
},
|
|
},
|
|
{
|
|
name: "error on unsupported hash algorithm",
|
|
names: []string{"made-up"},
|
|
wantErr: require.Error,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if tt.wantErr == nil {
|
|
tt.wantErr = require.NoError
|
|
}
|
|
got, err := Hashers(tt.names...)
|
|
tt.wantErr(t, err)
|
|
if err != nil {
|
|
return
|
|
}
|
|
assert.Equal(t, tt.want, got)
|
|
})
|
|
}
|
|
}
|