mirror of
https://github.com/henrygd/beszel.git
synced 2026-03-21 21:26:16 +01:00
103 lines
2.7 KiB
Go
103 lines
2.7 KiB
Go
//go:build testing
|
|
|
|
package agent
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestGetFingerprint(t *testing.T) {
|
|
t.Run("reads existing fingerprint from file", func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
expected := "abc123def456"
|
|
err := os.WriteFile(filepath.Join(dir, fingerprintFileName), []byte(expected), 0644)
|
|
require.NoError(t, err)
|
|
|
|
fp := GetFingerprint(dir, "", "")
|
|
assert.Equal(t, expected, fp)
|
|
})
|
|
|
|
t.Run("trims whitespace from file", func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
err := os.WriteFile(filepath.Join(dir, fingerprintFileName), []byte(" abc123 \n"), 0644)
|
|
require.NoError(t, err)
|
|
|
|
fp := GetFingerprint(dir, "", "")
|
|
assert.Equal(t, "abc123", fp)
|
|
})
|
|
|
|
t.Run("generates fingerprint when file does not exist", func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
fp := GetFingerprint(dir, "", "")
|
|
assert.NotEmpty(t, fp)
|
|
})
|
|
|
|
t.Run("generates fingerprint when dataDir is empty", func(t *testing.T) {
|
|
fp := GetFingerprint("", "", "")
|
|
assert.NotEmpty(t, fp)
|
|
})
|
|
|
|
t.Run("generates consistent fingerprint for same inputs", func(t *testing.T) {
|
|
fp1 := GetFingerprint("", "myhost", "mycpu")
|
|
fp2 := GetFingerprint("", "myhost", "mycpu")
|
|
assert.Equal(t, fp1, fp2)
|
|
})
|
|
|
|
t.Run("prefers saved fingerprint over generated", func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
require.NoError(t, SaveFingerprint(dir, "saved-fp"))
|
|
|
|
fp := GetFingerprint(dir, "anyhost", "anycpu")
|
|
assert.Equal(t, "saved-fp", fp)
|
|
})
|
|
}
|
|
|
|
func TestSaveFingerprint(t *testing.T) {
|
|
t.Run("saves fingerprint to file", func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
err := SaveFingerprint(dir, "abc123")
|
|
require.NoError(t, err)
|
|
|
|
content, err := os.ReadFile(filepath.Join(dir, fingerprintFileName))
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "abc123", string(content))
|
|
})
|
|
|
|
t.Run("overwrites existing fingerprint", func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
require.NoError(t, SaveFingerprint(dir, "old"))
|
|
require.NoError(t, SaveFingerprint(dir, "new"))
|
|
|
|
content, err := os.ReadFile(filepath.Join(dir, fingerprintFileName))
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "new", string(content))
|
|
})
|
|
}
|
|
|
|
func TestDeleteFingerprint(t *testing.T) {
|
|
t.Run("deletes existing fingerprint", func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
fp := filepath.Join(dir, fingerprintFileName)
|
|
err := os.WriteFile(fp, []byte("abc123"), 0644)
|
|
require.NoError(t, err)
|
|
|
|
err = DeleteFingerprint(dir)
|
|
require.NoError(t, err)
|
|
|
|
// Verify file is gone
|
|
_, err = os.Stat(fp)
|
|
assert.True(t, os.IsNotExist(err))
|
|
})
|
|
|
|
t.Run("no error when file does not exist", func(t *testing.T) {
|
|
dir := t.TempDir()
|
|
err := DeleteFingerprint(dir)
|
|
assert.NoError(t, err)
|
|
})
|
|
}
|