(t *testing.T)
| 292 | } |
| 293 | |
| 294 | func TestMCPServerConfigsAuthConnected(t *testing.T) { |
| 295 | t.Parallel() |
| 296 | |
| 297 | ctx := testutil.Context(t, testutil.WaitLong) |
| 298 | adminClient := newMCPClient(t) |
| 299 | firstUser := coderdtest.CreateFirstUser(t, adminClient) |
| 300 | memberClient, _ := coderdtest.CreateAnotherUser(t, adminClient, firstUser.OrganizationID) |
| 301 | |
| 302 | // Create an oauth2 server config (enabled). |
| 303 | created, err := adminClient.CreateMCPServerConfig(ctx, codersdk.CreateMCPServerConfigRequest{ |
| 304 | DisplayName: "OAuth Server", |
| 305 | Slug: "oauth-server", |
| 306 | Transport: "streamable_http", |
| 307 | URL: "https://mcp.example.com/oauth", |
| 308 | AuthType: "oauth2", |
| 309 | OAuth2ClientID: "cid", |
| 310 | OAuth2AuthURL: "https://auth.example.com/authorize", |
| 311 | OAuth2TokenURL: "https://auth.example.com/token", |
| 312 | Availability: "default_on", |
| 313 | Enabled: true, |
| 314 | ToolAllowList: []string{}, |
| 315 | ToolDenyList: []string{}, |
| 316 | }) |
| 317 | require.NoError(t, err) |
| 318 | |
| 319 | // Regular user lists configs — auth_connected should be false |
| 320 | // because no token has been stored. |
| 321 | memberConfigs, err := memberClient.MCPServerConfigs(ctx) |
| 322 | require.NoError(t, err) |
| 323 | require.Len(t, memberConfigs, 1) |
| 324 | require.Equal(t, created.ID, memberConfigs[0].ID) |
| 325 | require.False(t, memberConfigs[0].AuthConnected) |
| 326 | |
| 327 | // Also create a non-oauth server. It should report |
| 328 | // auth_connected=true because no auth is needed. |
| 329 | _ = createMCPServerConfig(t, adminClient, "no-auth-server", true) |
| 330 | |
| 331 | // And a user_oidc server. user_oidc never requires a per-user |
| 332 | // connect step, so auth_connected is always true regardless of |
| 333 | // whether the calling user has an OIDC link. |
| 334 | _, err = adminClient.CreateMCPServerConfig(ctx, codersdk.CreateMCPServerConfigRequest{ |
| 335 | DisplayName: "User OIDC Server", |
| 336 | Slug: "user-oidc-server", |
| 337 | Transport: "streamable_http", |
| 338 | URL: "https://mcp.example.com/oidc", |
| 339 | AuthType: "user_oidc", |
| 340 | Availability: "default_on", |
| 341 | Enabled: true, |
| 342 | ToolAllowList: []string{}, |
| 343 | ToolDenyList: []string{}, |
| 344 | }) |
| 345 | require.NoError(t, err) |
| 346 | |
| 347 | memberConfigs, err = memberClient.MCPServerConfigs(ctx) |
| 348 | require.NoError(t, err) |
| 349 | require.Len(t, memberConfigs, 3) |
| 350 | for _, cfg := range memberConfigs { |
| 351 | switch cfg.AuthType { |
nothing calls this directly
no test coverage detected