mirror of
https://github.com/henrygd/beszel.git
synced 2026-08-17 12:46:22 +00:00
58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package ghupdate
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestVerifyAssetChecksum(t *testing.T) {
|
|
path := filepath.Join(t.TempDir(), "asset")
|
|
if err := os.WriteFile(path, []byte("beszel release asset"), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
tests := []struct {
|
|
name string
|
|
digest string
|
|
wantErr string
|
|
}{
|
|
{
|
|
name: "valid",
|
|
digest: "sha256:2316f86af2c3af2f0ef595ad5359cdd19b329d4829a5425460ca9ffbf92671ab",
|
|
},
|
|
{
|
|
name: "mismatch",
|
|
digest: "sha256:0316f86af2c3af2f0ef595ad5359cdd19b329d4829a5425460ca9ffbf92671ab",
|
|
wantErr: "checksum mismatch",
|
|
},
|
|
{
|
|
name: "malformed",
|
|
digest: "sha256:not-a-checksum",
|
|
wantErr: "invalid SHA-256",
|
|
},
|
|
{
|
|
name: "missing",
|
|
wantErr: "invalid release digest",
|
|
},
|
|
{
|
|
name: "unsupported algorithm",
|
|
digest: "sha512:2316f86af2c3af2f0ef595ad5359cdd19b329d4829a5425460ca9ffbf92671ab",
|
|
wantErr: "unsupported",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
err := verifyAssetChecksum(path, tt.digest)
|
|
if tt.wantErr == "" && err != nil {
|
|
t.Fatalf("expected checksum to verify, got %v", err)
|
|
}
|
|
if tt.wantErr != "" && (err == nil || !strings.Contains(err.Error(), tt.wantErr)) {
|
|
t.Fatalf("expected error containing %q, got %v", tt.wantErr, err)
|
|
}
|
|
})
|
|
}
|
|
}
|