101 lines
2.1 KiB
Go
101 lines
2.1 KiB
Go
package common
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestDownloadClient_VerifyChecksum(t *testing.T) {
|
|
tf, err := ioutil.TempFile("", "packer")
|
|
if err != nil {
|
|
t.Fatalf("tempfile error: %s", err)
|
|
}
|
|
defer os.Remove(tf.Name())
|
|
|
|
// "foo"
|
|
checksum, err := hex.DecodeString("acbd18db4cc2f85cedef654fccc4a4d8")
|
|
if err != nil {
|
|
t.Fatalf("decode err: %s", err)
|
|
}
|
|
|
|
// Write the file
|
|
tf.Write([]byte("foo"))
|
|
tf.Close()
|
|
|
|
config := &DownloadConfig{
|
|
Hash: md5.New(),
|
|
Checksum: checksum,
|
|
}
|
|
|
|
d := NewDownloadClient(config)
|
|
result, err := d.VerifyChecksum(tf.Name())
|
|
if err != nil {
|
|
t.Fatalf("Verify err: %s", err)
|
|
}
|
|
|
|
if !result {
|
|
t.Fatal("didn't verify")
|
|
}
|
|
}
|
|
|
|
func TestHashForType(t *testing.T) {
|
|
if h := HashForType("md5"); h == nil {
|
|
t.Fatalf("md5 hash is nil")
|
|
} else {
|
|
h.Write([]byte("foo"))
|
|
result := h.Sum(nil)
|
|
|
|
expected := "acbd18db4cc2f85cedef654fccc4a4d8"
|
|
actual := hex.EncodeToString(result)
|
|
if actual != expected {
|
|
t.Fatalf("bad hash: %s", actual)
|
|
}
|
|
}
|
|
|
|
if h := HashForType("sha1"); h == nil {
|
|
t.Fatalf("sha1 hash is nil")
|
|
} else {
|
|
h.Write([]byte("foo"))
|
|
result := h.Sum(nil)
|
|
|
|
expected := "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
|
|
actual := hex.EncodeToString(result)
|
|
if actual != expected {
|
|
t.Fatalf("bad hash: %s", actual)
|
|
}
|
|
}
|
|
|
|
if h := HashForType("sha256"); h == nil {
|
|
t.Fatalf("sha256 hash is nil")
|
|
} else {
|
|
h.Write([]byte("foo"))
|
|
result := h.Sum(nil)
|
|
|
|
expected := "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"
|
|
actual := hex.EncodeToString(result)
|
|
if actual != expected {
|
|
t.Fatalf("bad hash: %s", actual)
|
|
}
|
|
}
|
|
|
|
if h := HashForType("sha512"); h == nil {
|
|
t.Fatalf("sha512 hash is nil")
|
|
} else {
|
|
h.Write([]byte("foo"))
|
|
result := h.Sum(nil)
|
|
|
|
expected := "f7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7"
|
|
actual := hex.EncodeToString(result)
|
|
if actual != expected {
|
|
t.Fatalf("bad hash: %s", actual)
|
|
}
|
|
}
|
|
|
|
if HashForType("fake") != nil {
|
|
t.Fatalf("fake hash is not nil")
|
|
}
|
|
}
|