(t *testing.T)
| 61 | } |
| 62 | |
| 63 | func TestMCPServerConfigsCRUD(t *testing.T) { |
| 64 | t.Parallel() |
| 65 | |
| 66 | ctx := testutil.Context(t, testutil.WaitLong) |
| 67 | client := newMCPClient(t) |
| 68 | _ = coderdtest.CreateFirstUser(t, client) |
| 69 | |
| 70 | // Create a config with all fields populated including OAuth2 |
| 71 | // secrets so we can verify they are not leaked. |
| 72 | created, err := client.CreateMCPServerConfig(ctx, codersdk.CreateMCPServerConfigRequest{ |
| 73 | DisplayName: "My MCP Server", |
| 74 | Slug: "my-mcp-server", |
| 75 | Description: "Integration test server.", |
| 76 | IconURL: "https://example.com/icon.png", |
| 77 | Transport: "streamable_http", |
| 78 | URL: "https://mcp.example.com/v1", |
| 79 | AuthType: "oauth2", |
| 80 | OAuth2ClientID: "client-id-123", |
| 81 | OAuth2ClientSecret: "super-secret-value", |
| 82 | OAuth2AuthURL: "https://auth.example.com/authorize", |
| 83 | OAuth2TokenURL: "https://auth.example.com/token", |
| 84 | OAuth2Scopes: "read write", |
| 85 | Availability: "default_on", |
| 86 | Enabled: true, |
| 87 | ToolAllowList: []string{}, |
| 88 | ToolDenyList: []string{}, |
| 89 | }) |
| 90 | require.NoError(t, err) |
| 91 | require.NotEqual(t, uuid.Nil, created.ID) |
| 92 | require.Equal(t, "My MCP Server", created.DisplayName) |
| 93 | require.Equal(t, "my-mcp-server", created.Slug) |
| 94 | require.Equal(t, "Integration test server.", created.Description) |
| 95 | require.Equal(t, "streamable_http", created.Transport) |
| 96 | require.Equal(t, "https://mcp.example.com/v1", created.URL) |
| 97 | require.Equal(t, "oauth2", created.AuthType) |
| 98 | require.Equal(t, "client-id-123", created.OAuth2ClientID) |
| 99 | require.Equal(t, "default_on", created.Availability) |
| 100 | require.True(t, created.Enabled) |
| 101 | require.False(t, created.AllowInPlanMode) |
| 102 | require.False(t, created.ForwardCoderHeaders) |
| 103 | |
| 104 | // Verify the secret is indicated but never returned. |
| 105 | require.True(t, created.HasOAuth2Secret) |
| 106 | |
| 107 | // Verify the config appears in the list and direct get responses. |
| 108 | configs, err := client.MCPServerConfigs(ctx) |
| 109 | require.NoError(t, err) |
| 110 | require.Len(t, configs, 1) |
| 111 | require.Equal(t, created.ID, configs[0].ID) |
| 112 | require.True(t, configs[0].HasOAuth2Secret) |
| 113 | require.False(t, configs[0].AllowInPlanMode) |
| 114 | require.False(t, configs[0].ForwardCoderHeaders) |
| 115 | |
| 116 | fetched, err := client.MCPServerConfigByID(ctx, created.ID) |
| 117 | require.NoError(t, err) |
| 118 | require.Equal(t, created.ID, fetched.ID) |
| 119 | require.False(t, fetched.AllowInPlanMode) |
| 120 | require.False(t, fetched.ForwardCoderHeaders) |
nothing calls this directly
no test coverage detected