metis/testing/image_test.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)
}
}