diff --git a/jobapi/client.go b/jobapi/client.go index df65fc83c9..275f9492d1 100644 --- a/jobapi/client.go +++ b/jobapi/client.go @@ -14,7 +14,10 @@ const ( redactionsURL = "http://job/api/current-job/v0/redactions" ) -var errNoSocketEnv = errors.New("BUILDKITE_AGENT_JOB_API_SOCKET empty or undefined") +var ( + errNoJobAPISocketEnv = errors.New("BUILDKITE_AGENT_JOB_API_SOCKET empty or undefined") + errNoJobAPITokenEnv = errors.New("BUILDKITE_AGENT_JOB_API_TOKEN empty or undefined") +) // Client connects to the Job API. type Client struct { @@ -36,12 +39,14 @@ func NewDefaultClient(ctx context.Context) (*Client, error) { func DefaultSocketPath() (path, token string, err error) { path = os.Getenv("BUILDKITE_AGENT_JOB_API_SOCKET") if path == "" { - return "", "", errNoSocketEnv + return "", "", errNoJobAPISocketEnv } + token = os.Getenv("BUILDKITE_AGENT_JOB_API_TOKEN") if token == "" { - return "", "", errNoSocketEnv + return "", "", errNoJobAPITokenEnv } + return path, token, nil } diff --git a/jobapi/client_test.go b/jobapi/client_test.go index a35af27fcc..d4c8729c18 100644 --- a/jobapi/client_test.go +++ b/jobapi/client_test.go @@ -124,13 +124,27 @@ func (f *fakeServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { } func TestClient_NoSocket(t *testing.T) { + // t.Parallel() // Can't be parallelised, because it uses the t.Setenv() function + ctx, canc := context.WithTimeout(context.Background(), 10*time.Second) t.Cleanup(canc) - // This may be set if the test is being run by a buildkite agent! - os.Unsetenv("BUILDKITE_AGENT_JOB_API_SOCKET") + t.Setenv("BUILDKITE_AGENT_JOB_API_SOCKET", "") // This may be set if the test is being run by a buildkite agent! + _, err := NewDefaultClient(ctx) + assert.ErrorIs(t, err, errNoJobAPISocketEnv, "NewDefaultClient() error = %v, want %v", err, errNoJobAPISocketEnv) +} + +func TestClient_NoToken(t *testing.T) { + // t.Parallel() // Can't be parallelised, because it uses the t.Setenv() function + + ctx, canc := context.WithTimeout(context.Background(), 10*time.Second) + t.Cleanup(canc) + + t.Setenv("BUILDKITE_AGENT_JOB_API_SOCKET", "/tmp/fake-socket") // Just to make sure it's set + t.Setenv("BUILDKITE_AGENT_JOB_API_TOKEN", "") // This may be set if the test is being run by a buildkite agent! + _, err := NewDefaultClient(ctx) - assert.ErrorIs(t, err, errNoSocketEnv, "NewDefaultClient() error = %v, want %v", err, errNoSocketEnv) + assert.ErrorIs(t, err, errNoJobAPITokenEnv, "NewDefaultClient() error = %v, want %v", err, errNoJobAPITokenEnv) } func TestClientEnvGet(t *testing.T) {