mirror of https://github.com/kubernetes/kops.git
add unit test for util/pkg/hashing/hash.go
Signed-off-by: ZouYu <zouy.fnst@cn.fujitsu.com>
This commit is contained in:
parent
5e4c48bbeb
commit
ce8e61866f
|
@ -1,4 +1,4 @@
|
||||||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
||||||
|
|
||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
|
@ -10,3 +10,9 @@ go_library(
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
go_test(
|
||||||
|
name = "go_default_test",
|
||||||
|
srcs = ["hash_test.go"],
|
||||||
|
embed = [":go_default_library"],
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,187 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package hashing
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestNewHasher(t *testing.T) {
|
||||||
|
cases := []struct {
|
||||||
|
name string
|
||||||
|
HA HashAlgorithm
|
||||||
|
expectedNil bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "sha256",
|
||||||
|
HA: "sha256",
|
||||||
|
expectedNil: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sha1",
|
||||||
|
HA: "sha1",
|
||||||
|
expectedNil: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "md5",
|
||||||
|
HA: "md5",
|
||||||
|
expectedNil: false,
|
||||||
|
},
|
||||||
|
/*{
|
||||||
|
name: "unknown",
|
||||||
|
HA: "unknown",
|
||||||
|
expectedNil: true,
|
||||||
|
},*/
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cases {
|
||||||
|
t.Run(c.name, func(t *testing.T) {
|
||||||
|
hasher := c.HA.NewHasher()
|
||||||
|
if (hasher == nil) != c.expectedNil {
|
||||||
|
t.Errorf("expectedNil: %v, got: %v", c.expectedNil, hasher)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMemberFromString(t *testing.T) {
|
||||||
|
cases := []struct {
|
||||||
|
name string
|
||||||
|
HA HashAlgorithm
|
||||||
|
parm string
|
||||||
|
expected string
|
||||||
|
}{
|
||||||
|
// sha256
|
||||||
|
{
|
||||||
|
name: "sha256 1",
|
||||||
|
HA: "sha256",
|
||||||
|
parm: "5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc",
|
||||||
|
expected: "invalid \"sha256\" hash - unexpected length 63",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sha256 2",
|
||||||
|
HA: "sha256",
|
||||||
|
parm: "5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5",
|
||||||
|
expected: "sha256:5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sha256 3",
|
||||||
|
HA: "sha256",
|
||||||
|
parm: "5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc51",
|
||||||
|
expected: "invalid \"sha256\" hash - unexpected length 65",
|
||||||
|
},
|
||||||
|
// sha1
|
||||||
|
{
|
||||||
|
name: "sha1 1",
|
||||||
|
HA: "sha1",
|
||||||
|
parm: "5e37efab5fdf59c1c508780ce5e83a3219c981d",
|
||||||
|
expected: "invalid \"sha1\" hash - unexpected length 39",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sha1 2",
|
||||||
|
HA: "sha1",
|
||||||
|
parm: "5e37efab5fdf59c1c508780ce5e83a3219c981d9",
|
||||||
|
expected: "sha1:5e37efab5fdf59c1c508780ce5e83a3219c981d9",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sha1 3",
|
||||||
|
HA: "sha1",
|
||||||
|
parm: "5e37efab5fdf59c1c508780ce5e83a3219c981d91",
|
||||||
|
expected: "invalid \"sha1\" hash - unexpected length 41",
|
||||||
|
},
|
||||||
|
// md5
|
||||||
|
{
|
||||||
|
name: "md5 1",
|
||||||
|
HA: "md5",
|
||||||
|
parm: "69a5f5f7d106c6c22710a15743d5810",
|
||||||
|
expected: "invalid \"md5\" hash - unexpected length 31",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "md5 2",
|
||||||
|
HA: "md5",
|
||||||
|
parm: "69a5f5f7d106c6c22710a15743d58102",
|
||||||
|
expected: "md5:69a5f5f7d106c6c22710a15743d58102",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "md5 3",
|
||||||
|
HA: "md5",
|
||||||
|
parm: "69a5f5f7d106c6c22710a15743d581021",
|
||||||
|
expected: "invalid \"md5\" hash - unexpected length 33",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cases {
|
||||||
|
t.Run(c.name, func(t *testing.T) {
|
||||||
|
hash, err := c.HA.FromString(c.parm)
|
||||||
|
if err != nil {
|
||||||
|
if err.Error() != c.expected {
|
||||||
|
t.Errorf("got unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if hash.String() != c.expected {
|
||||||
|
t.Errorf("expected: %v, got: %v", c.expected, hash.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFromString(t *testing.T) {
|
||||||
|
cases := []struct {
|
||||||
|
name string
|
||||||
|
HA HashAlgorithm
|
||||||
|
parm string
|
||||||
|
expected string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "sha256",
|
||||||
|
parm: "5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5",
|
||||||
|
expected: "sha256:5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sha1",
|
||||||
|
parm: "5e37efab5fdf59c1c508780ce5e83a3219c981d9",
|
||||||
|
expected: "sha1:5e37efab5fdf59c1c508780ce5e83a3219c981d9",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "md5",
|
||||||
|
HA: "md5",
|
||||||
|
parm: "69a5f5f7d106c6c22710a15743d58102",
|
||||||
|
expected: "md5:69a5f5f7d106c6c22710a15743d58102",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "unknown",
|
||||||
|
parm: "69a5f5f7d106c6c22710a15743d581021",
|
||||||
|
expected: "cannot determine algorithm for hash length: 33",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cases {
|
||||||
|
t.Run(c.name, func(t *testing.T) {
|
||||||
|
hash, err := FromString(c.parm)
|
||||||
|
if err != nil {
|
||||||
|
if err.Error() != c.expected {
|
||||||
|
t.Errorf("got unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if hash.String() != c.expected {
|
||||||
|
t.Errorf("expected: %v, got: %v", c.expected, hash.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue