mirror of
https://github.com/vee1e/gittuf.git
synced 2026-09-01 10:18:18 +00:00
63 lines
1.8 KiB
Go
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))
|
|
}
|
|
}
|
|
}
|