forked from TrueCloudLab/distribution
8be20212f1
In preparation for removing the common package, the tarsum utilities are being moved to the more relevant digest package. This functionality will probably go away in the future, but it's maintained here for the time being. Signed-off-by: Stephen J Day <stephen.day@docker.com>
79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package digest
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseTarSumComponents(t *testing.T) {
|
|
for _, testcase := range []struct {
|
|
input string
|
|
expected TarSumInfo
|
|
err error
|
|
}{
|
|
{
|
|
input: "tarsum.v1+sha256:220a60ecd4a3c32c282622a625a54db9ba0ff55b5ba9c29c7064a2bc358b6a3e",
|
|
expected: TarSumInfo{
|
|
Version: "v1",
|
|
Algorithm: "sha256",
|
|
Digest: "220a60ecd4a3c32c282622a625a54db9ba0ff55b5ba9c29c7064a2bc358b6a3e",
|
|
},
|
|
},
|
|
{
|
|
input: "",
|
|
err: InvalidTarSumError{},
|
|
},
|
|
{
|
|
input: "purejunk",
|
|
err: InvalidTarSumError{TarSum: "purejunk"},
|
|
},
|
|
{
|
|
input: "tarsum.v23+test:12341234123412341effefefe",
|
|
expected: TarSumInfo{
|
|
Version: "v23",
|
|
Algorithm: "test",
|
|
Digest: "12341234123412341effefefe",
|
|
},
|
|
},
|
|
|
|
// The following test cases are ported from docker core
|
|
{
|
|
// Version 0 tarsum
|
|
input: "tarsum+sha256:e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b",
|
|
expected: TarSumInfo{
|
|
Algorithm: "sha256",
|
|
Digest: "e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b",
|
|
},
|
|
},
|
|
{
|
|
// Dev version tarsum
|
|
input: "tarsum.dev+sha256:e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b",
|
|
expected: TarSumInfo{
|
|
Version: "dev",
|
|
Algorithm: "sha256",
|
|
Digest: "e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b",
|
|
},
|
|
},
|
|
} {
|
|
tsi, err := ParseTarSum(testcase.input)
|
|
if err != nil {
|
|
if testcase.err != nil && err == testcase.err {
|
|
continue // passes
|
|
}
|
|
|
|
t.Fatalf("unexpected error parsing tarsum: %v", err)
|
|
}
|
|
|
|
if testcase.err != nil {
|
|
t.Fatalf("expected error not encountered on %q: %v", testcase.input, testcase.err)
|
|
}
|
|
|
|
if !reflect.DeepEqual(tsi, testcase.expected) {
|
|
t.Fatalf("expected tarsum info: %v != %v", tsi, testcase.expected)
|
|
}
|
|
|
|
if testcase.input != tsi.String() {
|
|
t.Fatalf("input should equal output: %q != %q", tsi.String(), testcase.input)
|
|
}
|
|
}
|
|
}
|