|
1 | 1 | package cmdutil |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "bytes" |
4 | 5 | "encoding/json" |
5 | 6 | "net/http" |
6 | 7 | "net/http/httptest" |
@@ -235,6 +236,35 @@ func TestResolveClientOptions_EnvAPIKeyOverridesProfileBearer(t *testing.T) { |
235 | 236 | } |
236 | 237 | } |
237 | 238 |
|
| 239 | +func TestResolveClientOptions_ProfileFlagWarnsWhenEnvAPIKeyOverrides(t *testing.T) { |
| 240 | + path := filepath.Join(t.TempDir(), "config.json") |
| 241 | + t.Setenv("LANGSMITH_CONFIG_FILE", path) |
| 242 | + t.Setenv("LANGSMITH_API_KEY", "from-env") |
| 243 | + err := os.WriteFile(path, []byte(`{ |
| 244 | + "profiles": { |
| 245 | + "prod": { |
| 246 | + "oauth": { |
| 247 | + "access_token": "test-access-token" |
| 248 | + } |
| 249 | + } |
| 250 | + } |
| 251 | +} |
| 252 | +`), 0600) |
| 253 | + require.NoError(t, err) |
| 254 | + |
| 255 | + cmd := newTestCmd() |
| 256 | + var stderr bytes.Buffer |
| 257 | + cmd.SetErr(&stderr) |
| 258 | + err = cmd.PersistentFlags().Set("profile", "prod") |
| 259 | + require.NoError(t, err) |
| 260 | + |
| 261 | + opts, err := ResolveClientOptions(cmd, false) |
| 262 | + require.NoError(t, err) |
| 263 | + require.Equal(t, "from-env", opts.APIKey) |
| 264 | + require.Empty(t, opts.OAuthAccessToken) |
| 265 | + require.Contains(t, stderr.String(), "warning: --profile was specified, but LANGSMITH_API_KEY is set") |
| 266 | +} |
| 267 | + |
238 | 268 | func TestResolveClientOptionsRefreshesProfileWithoutAccessToken(t *testing.T) { |
239 | 269 | ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
240 | 270 | if r.URL.Path != "/oauth/token" { |
|
0 commit comments