Skip to content

Commit 2798088

Browse files
authored
test: add mysql-tests for MCP instance (#440)
1 parent 8932256 commit 2798088

File tree

5 files changed

+139
-0
lines changed

5 files changed

+139
-0
lines changed

.ci/cloudbuild.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ steps:
2525
"MYSQL_IAM_USER",
2626
"MYSQL_PASS",
2727
"MYSQL_DB",
28+
"MYSQL_MCP_CONNECTION_NAME",
29+
"MYSQL_MCP_PASS",
2830
"POSTGRES_CONNECTION_NAME",
2931
"POSTGRES_USER",
3032
"POSTGRES_IAM_USER",
@@ -62,6 +64,10 @@ availableSecrets:
6264
env: "MYSQL_PASS"
6365
- versionName: "projects/$PROJECT_ID/secrets/MYSQL_DB/versions/latest"
6466
env: "MYSQL_DB"
67+
- versionName: "projects/$PROJECT_ID/secrets/MYSQL_MCP_CONNECTION_NAME/versions/latest"
68+
env: "MYSQL_MCP_CONNECTION_NAME"
69+
- versionName: "projects/$PROJECT_ID/secrets/MYSQL_MCP_PASS/versions/latest"
70+
env: "MYSQL_MCP_PASS"
6571
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_CONNECTION_NAME/versions/latest"
6672
env: "POSTGRES_CONNECTION_NAME"
6773
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_USER/versions/latest"

.github/workflows/tests.yml

+4
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ jobs:
152152
MYSQL_IAM_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/MYSQL_USER_IAM_NODE
153153
MYSQL_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/MYSQL_PASS
154154
MYSQL_DB:${{ vars.GOOGLE_CLOUD_PROJECT }}/MYSQL_DB
155+
MYSQL_MCP_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/MYSQL_MCP_CONNECTION_NAME
156+
MYSQL_MCP_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/MYSQL_MCP_PASS
155157
POSTGRES_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CONNECTION_NAME
156158
POSTGRES_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_USER
157159
POSTGRES_IAM_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_USER_IAM_NODE
@@ -183,6 +185,8 @@ jobs:
183185
MYSQL_IAM_USER: "${{ steps.secrets.outputs.MYSQL_IAM_USER }}"
184186
MYSQL_PASS: "${{ steps.secrets.outputs.MYSQL_PASS }}"
185187
MYSQL_DB: "${{ steps.secrets.outputs.MYSQL_DB }}"
188+
MYSQL_MCP_CONNECTION_NAME: "${{ steps.secrets.outputs.MYSQL_MCP_CONNECTION_NAME }}"
189+
MYSQL_MCP_PASS: "${{ steps.secrets.outputs.MYSQL_MCP_PASS }}"
186190
POSTGRES_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CONNECTION_NAME }}"
187191
POSTGRES_USER: "${{ steps.secrets.outputs.POSTGRES_USER }}"
188192
POSTGRES_IAM_USER: "${{ steps.secrets.outputs.POSTGRES_IAM_USER }}"

system-test/mysql2-connect.cjs

+43
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,46 @@ t.test('open IAM connection and run basic mysql commands', async t => {
5858
await conn.end();
5959
connector.close();
6060
});
61+
62+
t.test('open connection to MCP instance and run basic mysql commands', async t => {
63+
const connector = new Connector();
64+
const clientOpts = await connector.getOptions({
65+
instanceConnectionName: process.env.MYSQL_MCP_CONNECTION_NAME,
66+
ipType: process.env.IP_TYPE || 'PUBLIC',
67+
authType: 'PASSWORD',
68+
});
69+
const conn = await mysql.createConnection({
70+
...clientOpts,
71+
user: process.env.MYSQL_USER,
72+
password: process.env.MYSQL_MCP_PASS,
73+
database: process.env.MYSQL_DB,
74+
});
75+
76+
const [[result]] = await conn.query('SELECT NOW();');
77+
const returnedDate = result['NOW()'];
78+
t.ok(returnedDate.getTime(), 'should have valid returned date object');
79+
80+
await conn.end();
81+
connector.close();
82+
});
83+
84+
t.test('open IAM connection to MCP instance and run basic mysql commands', async t => {
85+
const connector = new Connector();
86+
const clientOpts = await connector.getOptions({
87+
instanceConnectionName: process.env.MYSQL_MCP_CONNECTION_NAME,
88+
ipType: process.env.IP_TYPE || 'PUBLIC',
89+
authType: 'IAM',
90+
});
91+
const conn = await mysql.createConnection({
92+
...clientOpts,
93+
user: process.env.MYSQL_IAM_USER,
94+
database: process.env.MYSQL_DB,
95+
});
96+
97+
const [[result]] = await conn.query('SELECT NOW();');
98+
const returnedDate = result['NOW()'];
99+
t.ok(returnedDate.getTime(), 'should have valid returned date object');
100+
101+
await conn.end();
102+
connector.close();
103+
});

system-test/mysql2-connect.mjs

+43
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,46 @@ t.test('open IAM connection and run basic mysql commands', async t => {
5858
await conn.end();
5959
connector.close();
6060
});
61+
62+
t.test('open connection and run basic mysql commands', async t => {
63+
const connector = new Connector();
64+
const clientOpts = await connector.getOptions({
65+
instanceConnectionName: process.env.MYSQL_MCP_CONNECTION_NAME,
66+
ipType: process.env.IP_TYPE || 'PUBLIC',
67+
authType: 'PASSWORD',
68+
});
69+
const conn = await mysql.createConnection({
70+
...clientOpts,
71+
user: process.env.MYSQL_USER,
72+
password: process.env.MYSQL_MCP_PASS,
73+
database: process.env.MYSQL_DB,
74+
});
75+
76+
const [[result]] = await conn.query('SELECT NOW();');
77+
const returnedDate = result['NOW()'];
78+
t.ok(returnedDate.getTime(), 'should have valid returned date object');
79+
80+
await conn.end();
81+
connector.close();
82+
});
83+
84+
t.test('open IAM connection and run basic mysql commands', async t => {
85+
const connector = new Connector();
86+
const clientOpts = await connector.getOptions({
87+
instanceConnectionName: process.env.MYSQL_MCP_CONNECTION_NAME,
88+
ipType: process.env.IP_TYPE || 'PUBLIC',
89+
authType: 'IAM',
90+
});
91+
const conn = await mysql.createConnection({
92+
...clientOpts,
93+
user: process.env.MYSQL_IAM_USER,
94+
database: process.env.MYSQL_DB,
95+
});
96+
97+
const [[result]] = await conn.query('SELECT NOW();');
98+
const returnedDate = result['NOW()'];
99+
t.ok(returnedDate.getTime(), 'should have valid returned date object');
100+
101+
await conn.end();
102+
connector.close();
103+
});

system-test/mysql2-connect.ts

+43
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,46 @@ t.test('open IAM connection and run basic mysql commands', async t => {
6767
await conn.end();
6868
connector.close();
6969
});
70+
71+
t.test('open connection and run basic mysql commands', async t => {
72+
const connector = new Connector();
73+
const clientOpts = await connector.getOptions({
74+
instanceConnectionName: String(process.env.MYSQL_MCP_CONNECTION_NAME),
75+
ipType: process.env.IP_TYPE || IpAddressTypes.PUBLIC,
76+
});
77+
const conn = await mysql.createConnection({
78+
...clientOpts,
79+
user: String(process.env.MYSQL_USER),
80+
password: String(process.env.MYSQL_MCP_PASS),
81+
database: String(process.env.MYSQL_DB),
82+
});
83+
84+
const [result] = await conn.query<Now[]>('SELECT NOW();');
85+
const [row] = result;
86+
const returnedDate = row['NOW()'];
87+
t.ok(returnedDate.getTime(), 'should have valid returned date object');
88+
89+
await conn.end();
90+
connector.close();
91+
});
92+
93+
t.test('open IAM connection and run basic mysql commands', async t => {
94+
const connector = new Connector();
95+
const clientOpts = await connector.getOptions({
96+
instanceConnectionName: String(process.env.MYSQL_MCP_CONNECTION_NAME),
97+
ipType: process.env.IP_TYPE || IpAddressTypes.PUBLIC,
98+
authType: AuthTypes.IAM,
99+
});
100+
const conn = await mysql.createConnection({
101+
...clientOpts,
102+
user: String(process.env.MYSQL_IAM_USER),
103+
database: String(process.env.MYSQL_DB),
104+
});
105+
106+
const [[result]] = await conn.query<Now[]>('SELECT NOW();');
107+
const returnedDate = result['NOW()'];
108+
t.ok(returnedDate.getTime(), 'should have valid returned date object');
109+
110+
await conn.end();
111+
connector.close();
112+
});

0 commit comments

Comments
 (0)