48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package testing_test
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"crypto/sha256"
|
|
"encoding/hex"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"metis/pkg/image"
|
|
)
|
|
|
|
func TestDownloadFileURL(t *testing.T) {
|
|
tmp := t.TempDir()
|
|
src := filepath.Join(tmp, "src.bin")
|
|
if err := os.WriteFile(src, []byte("hello"), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
dest := filepath.Join(tmp, "dest.bin")
|
|
if err := image.Download("file://"+src, dest); err != nil {
|
|
t.Fatalf("Download: %v", err)
|
|
}
|
|
data, err := os.ReadFile(dest)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if string(data) != "hello" {
|
|
t.Fatalf("downloaded content = %q", data)
|
|
}
|
|
}
|
|
|
|
func TestChecksumHelpers(t *testing.T) {
|
|
tmp := t.TempDir()
|
|
path := filepath.Join(tmp, "file.bin")
|
|
if err := os.WriteFile(path, []byte("abc"), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
sha := sha256.Sum256([]byte("abc"))
|
|
if err := image.VerifyChecksum(path, "sha256:"+hex.EncodeToString(sha[:])); err != nil {
|
|
t.Fatalf("VerifyChecksum sha256: %v", err)
|
|
}
|
|
md5sum := md5.Sum([]byte("abc"))
|
|
if err := image.VerifyChecksum(path, "md5:"+hex.EncodeToString(md5sum[:])); err != nil {
|
|
t.Fatalf("VerifyChecksum md5: %v", err)
|
|
}
|
|
}
|