Skip to content

Commit e0a6415

Browse files
committed
Migrate integration tests from mcp/postgres to Google MCP Toolbox
Replace the removed mcp/postgres Docker image with Google's MCP Toolbox for Databases. Convert 8 static JSON test configs to programmatic generation via Go builder functions so the image reference lives in one place (ToolboxImage constant). Key changes: - GoogleProvider now accepts optional endpoint overrides for authorizationUrl, tokenUrl, and userInfoUrl, replacing the broken GOOGLE_OAUTH_* env vars that were never actually read - Integration tests use execute_sql tool instead of query (toolbox API) - Remove dead code: TestEnvironment, SetupTestEnvironment, execDockerCompose helpers - Pull toolbox image in TestMain to prevent first-test timeout - Update all example configs and --config-init default
1 parent 586d047 commit e0a6415

28 files changed

+378
-449
lines changed

cmd/mcp-front/main.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,21 @@ func generateDefaultConfig(path string) error {
4343
"transportType": "stdio",
4444
"command": "docker",
4545
"args": []any{
46-
"run", "--rm", "-i",
47-
"mcp/postgres:latest",
48-
map[string]string{"$env": "POSTGRES_URL"},
46+
"run", "--rm", "-i", "--network", "host",
47+
"-e", "POSTGRES_HOST",
48+
"-e", "POSTGRES_PORT",
49+
"-e", "POSTGRES_DATABASE",
50+
"-e", "POSTGRES_USER",
51+
"-e", "POSTGRES_PASSWORD",
52+
"us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest",
53+
"--stdio", "--prebuilt", "postgres",
54+
},
55+
"env": map[string]any{
56+
"POSTGRES_HOST": map[string]string{"$env": "POSTGRES_HOST"},
57+
"POSTGRES_PORT": map[string]string{"$env": "POSTGRES_PORT"},
58+
"POSTGRES_DATABASE": map[string]string{"$env": "POSTGRES_DATABASE"},
59+
"POSTGRES_USER": map[string]string{"$env": "POSTGRES_USER"},
60+
"POSTGRES_PASSWORD": map[string]string{"$env": "POSTGRES_PASSWORD"},
4961
},
5062
},
5163
},

config-oauth-firestore.example.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,20 @@
2828
"command": "docker",
2929
"args": [
3030
"run", "--rm", "-i", "--network", "host",
31-
"mcp/postgres",
32-
{"$env": "DATABASE_URL"}
31+
"-e", "POSTGRES_HOST",
32+
"-e", "POSTGRES_PORT",
33+
"-e", "POSTGRES_DATABASE",
34+
"-e", "POSTGRES_USER",
35+
"-e", "POSTGRES_PASSWORD",
36+
"us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest",
37+
"--stdio", "--prebuilt", "postgres"
3338
],
3439
"env": {
35-
"PGPASSWORD": {"$env": "POSTGRES_PASSWORD"}
40+
"POSTGRES_HOST": {"$env": "POSTGRES_HOST"},
41+
"POSTGRES_PORT": {"$env": "POSTGRES_PORT"},
42+
"POSTGRES_DATABASE": {"$env": "POSTGRES_DATABASE"},
43+
"POSTGRES_USER": {"$env": "POSTGRES_USER"},
44+
"POSTGRES_PASSWORD": {"$env": "POSTGRES_PASSWORD"}
3645
}
3746
},
3847
"notion": {

config-oauth.example.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,20 @@
2828
"command": "docker",
2929
"args": [
3030
"run", "--rm", "-i", "--network", "host",
31-
"mcp/postgres",
32-
{"$env": "DATABASE_URL"}
31+
"-e", "POSTGRES_HOST",
32+
"-e", "POSTGRES_PORT",
33+
"-e", "POSTGRES_DATABASE",
34+
"-e", "POSTGRES_USER",
35+
"-e", "POSTGRES_PASSWORD",
36+
"us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest",
37+
"--stdio", "--prebuilt", "postgres"
3338
],
3439
"env": {
35-
"PGPASSWORD": {"$env": "POSTGRES_PASSWORD"}
40+
"POSTGRES_HOST": {"$env": "POSTGRES_HOST"},
41+
"POSTGRES_PORT": {"$env": "POSTGRES_PORT"},
42+
"POSTGRES_DATABASE": {"$env": "POSTGRES_DATABASE"},
43+
"POSTGRES_USER": {"$env": "POSTGRES_USER"},
44+
"POSTGRES_PASSWORD": {"$env": "POSTGRES_PASSWORD"}
3645
}
3746
},
3847
"notion": {

config-oauth.json

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,24 @@
2525
"mcpServers": {
2626
"postgres": {
2727
"transportType": "stdio",
28-
"command": "docker",
28+
"command": "docker",
2929
"args": [
30-
"run", "--rm", "-i",
31-
"mcp/postgres:latest",
32-
"postgresql://user:password@localhost:5432/database"
33-
]
30+
"run", "--rm", "-i", "--network", "host",
31+
"-e", "POSTGRES_HOST",
32+
"-e", "POSTGRES_PORT",
33+
"-e", "POSTGRES_DATABASE",
34+
"-e", "POSTGRES_USER",
35+
"-e", "POSTGRES_PASSWORD",
36+
"us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest",
37+
"--stdio", "--prebuilt", "postgres"
38+
],
39+
"env": {
40+
"POSTGRES_HOST": {"$env": "POSTGRES_HOST"},
41+
"POSTGRES_PORT": {"$env": "POSTGRES_PORT"},
42+
"POSTGRES_DATABASE": {"$env": "POSTGRES_DATABASE"},
43+
"POSTGRES_USER": {"$env": "POSTGRES_USER"},
44+
"POSTGRES_PASSWORD": {"$env": "POSTGRES_PASSWORD"}
45+
}
3446
},
3547
"notion": {
3648
"transportType": "stdio",

config-token.example.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@
1111
"command": "docker",
1212
"args": [
1313
"run", "--rm", "-i", "--network", "host",
14-
"mcp/postgres",
15-
"postgresql://testuser:testpass@localhost:5432/testdb"
14+
"-e", "POSTGRES_HOST=localhost",
15+
"-e", "POSTGRES_PORT=5432",
16+
"-e", "POSTGRES_DATABASE=testdb",
17+
"-e", "POSTGRES_USER=testuser",
18+
"-e", "POSTGRES_PASSWORD=testpass",
19+
"us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest",
20+
"--stdio", "--prebuilt", "postgres"
1621
],
1722
"serviceAuths": [
1823
{

config-user-tokens-example.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,20 @@
6060
"command": "docker",
6161
"args": [
6262
"run", "--rm", "-i", "--network", "host",
63-
"mcp/postgres",
64-
{"$env": "DATABASE_URL"}
63+
"-e", "POSTGRES_HOST",
64+
"-e", "POSTGRES_PORT",
65+
"-e", "POSTGRES_DATABASE",
66+
"-e", "POSTGRES_USER",
67+
"-e", "POSTGRES_PASSWORD",
68+
"us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest",
69+
"--stdio", "--prebuilt", "postgres"
6570
],
6671
"env": {
67-
"PGPASSWORD": {"$env": "POSTGRES_PASSWORD"}
72+
"POSTGRES_HOST": {"$env": "POSTGRES_HOST"},
73+
"POSTGRES_PORT": {"$env": "POSTGRES_PORT"},
74+
"POSTGRES_DATABASE": {"$env": "POSTGRES_DATABASE"},
75+
"POSTGRES_USER": {"$env": "POSTGRES_USER"},
76+
"POSTGRES_PASSWORD": {"$env": "POSTGRES_PASSWORD"}
6877
}
6978
}
7079
}

integration/base_path_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ import (
1111
func TestBasePathRouting(t *testing.T) {
1212
waitForDB(t)
1313

14-
startMCPFront(t, "config/config.base-path-test.json")
14+
cfg := buildTestConfig(
15+
"http://localhost:8080/mcp-api", "mcp-front-base-path-test",
16+
nil,
17+
map[string]any{"postgres": testPostgresServer(withBearerTokens("test-token"))},
18+
)
19+
startMCPFront(t, writeTestConfig(t, cfg))
1520
waitForMCPFront(t)
1621

1722
initialContainers := getMCPContainers()

integration/basic_auth_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@ import (
1010
)
1111

1212
func TestBasicAuth(t *testing.T) {
13-
// Start mcp-front with basic auth config
14-
startMCPFront(t, "config/config.basic-auth-test.json",
13+
cfg := buildTestConfig("http://localhost:8080", "mcp-front-basic-auth-test",
14+
nil,
15+
map[string]any{"postgres": testPostgresServer(withBasicAuth("admin", "ADMIN_PASSWORD"), withBasicAuth("user", "USER_PASSWORD"))},
16+
)
17+
startMCPFront(t, writeTestConfig(t, cfg),
1518
"ADMIN_PASSWORD=adminpass123",
1619
"USER_PASSWORD=userpass456",
1720
)

integration/config/config.base-path-test.json

Lines changed: 0 additions & 28 deletions
This file was deleted.

integration/config/config.basic-auth-test.json

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)