package originclient import ( "path/filepath" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func withStubMachineID(t *testing.T, id string, err error) { t.Helper() original := machineIDFunc machineIDFunc = func() (string, error) { return id, err } t.Cleanup(func() { machineIDFunc = original }) } func TestResolveMachineID_ExplicitOverrideWins(t *testing.T) { withStubMachineID(t, "os-machine-id", nil) got := ResolveMachineID("explicit-id", filepath.Join(t.TempDir(), "install-id"), nil) assert.Equal(t, "explicit-id", got) } func TestResolveMachineID_UsesOSMachineIDWhenAvailable(t *testing.T) { withStubMachineID(t, "os-machine-id", nil) got := ResolveMachineID("", filepath.Join(t.TempDir(), "install-id"), nil) assert.Equal(t, "os-machine-id", got) } func TestResolveMachineID_FallsBackAndPersistsWhenOSIDUnavailable(t *testing.T) { withStubMachineID(t, "", errMachineIDUnavailable) path := filepath.Join(t.TempDir(), "nested", "install-id") first := ResolveMachineID("", path, nil) assert.NotEmpty(t, first) second := ResolveMachineID("", path, nil) assert.Equal(t, first, second, "second call should read the persisted id rather than generating a new one") } func TestResolveMachineID_NilLoggerDoesNotPanic(t *testing.T) { withStubMachineID(t, "", errMachineIDUnavailable) assert.NotPanics(t, func() { ResolveMachineID("", filepath.Join(t.TempDir(), "install-id"), nil) }) } func TestResolveMachineID_LogsWarningWhenOSIDUnavailable(t *testing.T) { withStubMachineID(t, "", errMachineIDUnavailable) var warned bool logger := LoggerFunc(func(msg string, err error) { warned = true }) ResolveMachineID("", filepath.Join(t.TempDir(), "install-id"), logger) assert.True(t, warned) } func TestPersistInstallID(t *testing.T) { path := filepath.Join(t.TempDir(), "nested", "dir", "install-id") require.NoError(t, persistInstallID(path, "abc-123")) }