gittuf/pkg/gitinterface/hash_test.go
Pat Zielinski f649b141d3
pkg: Move gitinterface to pkg
Signed-off-by: Pat Zielinski <git@patzielinski.com>
2026-01-16 14:03:36 -05:00

63 lines
1.8 KiB
Go

// Copyright The gittuf Authors
// SPDX-License-Identifier: Apache-2.0
package gitinterface
import (
"encoding/hex"
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestNewHash(t *testing.T) {
tests := map[string]struct {
hash string
expectedError error
}{
"correctly encoded SHA-1 hash": {
hash: "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
},
"correctly encoded SHA-256 hash": {
hash: "61658570165bc04af68cef20d72da49b070dc9d8cd7c8a526c950b658f4d3ccf",
},
"correctly encoded SHA-1 zero hash": {
hash: "0000000000000000000000000000000000000000",
},
"correctly encoded SHA-256 zero hash": {
hash: "0000000000000000000000000000000000000000000000000000000000000000",
},
"incorrect length SHA-1 hash": {
hash: "e69de29bb2d1d6434b8",
expectedError: ErrInvalidHashLength,
},
"incorrect length SHA-256 hash": {
hash: "61658570165bc04af68cef20d72da49b070dc9d8cd7c8a526c950b658f4d3ccfabcdef",
expectedError: ErrInvalidHashLength,
},
"incorrectly encoded SHA-1 hash": {
hash: "e69de29bb2d1d6434b8b29ae775ad8c2e48c539g", // last char is 'g'
expectedError: ErrInvalidHashEncoding,
},
"incorrectly encoded SHA-256 hash": {
hash: "61658570165bc04af68cef20d72da49b070dc9d8cd7c8a526c950b658f4d3ccg", // last char is 'g'
expectedError: ErrInvalidHashEncoding,
},
}
for name, test := range tests {
hash, err := NewHash(test.hash)
if test.expectedError == nil {
expectedHash, secErr := hex.DecodeString(test.hash)
require.Nil(t, secErr)
assert.Equal(t, Hash(expectedHash), hash)
assert.Equal(t, test.hash, hash.String())
assert.Nil(t, err, fmt.Sprintf("unexpected error in test '%s'", name))
} else {
assert.ErrorIs(t, err, test.expectedError, fmt.Sprintf("unexpected error in test '%s'", name))
}
}
}