diff --git a/agent/client.go b/agent/client.go index 19933c1..87449cf 100644 --- a/agent/client.go +++ b/agent/client.go @@ -85,7 +85,7 @@ func getToken() (string, error) { if err != nil { return "", err } - return string(tokenBytes), nil + return strings.TrimSpace(string(tokenBytes)), nil } // getOptions returns the WebSocket client options, creating them if necessary. diff --git a/agent/client_test.go b/agent/client_test.go index 2edc203..5741884 100644 --- a/agent/client_test.go +++ b/agent/client_test.go @@ -537,4 +537,25 @@ func TestGetToken(t *testing.T) { assert.NoError(t, err) assert.Equal(t, "", token, "Empty file should return empty string") }) + + t.Run("strips whitespace from TOKEN_FILE", func(t *testing.T) { + unsetEnvVars() + + tokenWithWhitespace := " test-token-with-whitespace \n\t" + expectedToken := "test-token-with-whitespace" + tokenFile, err := os.CreateTemp("", "token-test-*.txt") + require.NoError(t, err) + defer os.Remove(tokenFile.Name()) + + _, err = tokenFile.WriteString(tokenWithWhitespace) + require.NoError(t, err) + tokenFile.Close() + + os.Setenv("TOKEN_FILE", tokenFile.Name()) + defer os.Unsetenv("TOKEN_FILE") + + token, err := getToken() + assert.NoError(t, err) + assert.Equal(t, expectedToken, token, "Whitespace should be stripped from token file content") + }) }