Skip to content

Commit 61379d8

Browse files
test: add postgres MCP test
1 parent e7f1068 commit 61379d8

File tree

3 files changed

+91
-41
lines changed

3 files changed

+91
-41
lines changed

.ci/cloudbuild.yaml

Lines changed: 68 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -16,58 +16,85 @@ steps:
1616
- id: run integration tests
1717
name: python:${_VERSION}
1818
entrypoint: bash
19-
env:
19+
env:
2020
- "IP_TYPE=${_IP_TYPE}"
21-
secretEnv: ["MYSQL_CONNECTION_NAME", "MYSQL_USER", "MYSQL_IAM_USER", "MYSQL_PASS", "MYSQL_DB", "POSTGRES_CONNECTION_NAME", "POSTGRES_USER", "POSTGRES_IAM_USER", "POSTGRES_PASS", "POSTGRES_DB", "POSTGRES_CAS_CONNECTION_NAME", "POSTGRES_CAS_PASS", "POSTGRES_CUSTOMER_CAS_CONNECTION_NAME", "POSTGRES_CUSTOMER_CAS_PASS", "POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME","SQLSERVER_CONNECTION_NAME", "SQLSERVER_USER", "SQLSERVER_PASS", "SQLSERVER_DB"]
21+
secretEnv:
22+
[
23+
"MYSQL_CONNECTION_NAME",
24+
"MYSQL_USER",
25+
"MYSQL_IAM_USER",
26+
"MYSQL_PASS",
27+
"MYSQL_DB",
28+
"POSTGRES_CONNECTION_NAME",
29+
"POSTGRES_USER",
30+
"POSTGRES_IAM_USER",
31+
"POSTGRES_PASS",
32+
"POSTGRES_DB",
33+
"POSTGRES_CAS_CONNECTION_NAME",
34+
"POSTGRES_CAS_PASS",
35+
"POSTGRES_CUSTOMER_CAS_CONNECTION_NAME",
36+
"POSTGRES_CUSTOMER_CAS_PASS",
37+
"POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME",
38+
"POSTGRES_MCP_CONNECTION_NAME",
39+
"POSTGRES_MCP_PASS",
40+
"SQLSERVER_CONNECTION_NAME",
41+
"SQLSERVER_USER",
42+
"SQLSERVER_PASS",
43+
"SQLSERVER_DB",
44+
]
2245
args:
2346
- "-c"
2447
- |
2548
pip install nox
2649
nox -s system-${_VERSION}
2750
availableSecrets:
2851
secretManager:
29-
- versionName: 'projects/$PROJECT_ID/secrets/MYSQL_CONNECTION_NAME/versions/latest'
30-
env: 'MYSQL_CONNECTION_NAME'
31-
- versionName: 'projects/$PROJECT_ID/secrets/MYSQL_USER/versions/latest'
32-
env: 'MYSQL_USER'
33-
- versionName: 'projects/$PROJECT_ID/secrets/CLOUD_BUILD_MYSQL_IAM_USER/versions/latest'
34-
env: 'MYSQL_IAM_USER'
35-
- versionName: 'projects/$PROJECT_ID/secrets/MYSQL_PASS/versions/latest'
36-
env: 'MYSQL_PASS'
37-
- versionName: 'projects/$PROJECT_ID/secrets/MYSQL_DB/versions/latest'
38-
env: 'MYSQL_DB'
39-
- versionName: 'projects/$PROJECT_ID/secrets/POSTGRES_CONNECTION_NAME/versions/latest'
40-
env: 'POSTGRES_CONNECTION_NAME'
41-
- versionName: 'projects/$PROJECT_ID/secrets/POSTGRES_USER/versions/latest'
42-
env: 'POSTGRES_USER'
43-
- versionName: 'projects/$PROJECT_ID/secrets/CLOUD_BUILD_POSTGRES_IAM_USER/versions/latest'
44-
env: 'POSTGRES_IAM_USER'
45-
- versionName: 'projects/$PROJECT_ID/secrets/POSTGRES_PASS/versions/latest'
46-
env: 'POSTGRES_PASS'
47-
- versionName: 'projects/$PROJECT_ID/secrets/POSTGRES_DB/versions/latest'
48-
env: 'POSTGRES_DB'
49-
- versionName: 'projects/$PROJECT_ID/secrets/POSTGRES_CAS_CONNECTION_NAME/versions/latest'
50-
env: 'POSTGRES_CAS_CONNECTION_NAME'
51-
- versionName: 'projects/$PROJECT_ID/secrets/POSTGRES_CAS_PASS/versions/latest'
52-
env: 'POSTGRES_CAS_PASS'
53-
- versionName: 'projects/$PROJECT_ID/secrets/POSTGRES_CUSTOMER_CAS_CONNECTION_NAME/versions/latest'
54-
env: 'POSTGRES_CUSTOMER_CAS_CONNECTION_NAME'
55-
- versionName: 'projects/$PROJECT_ID/secrets/POSTGRES_CUSTOMER_CAS_PASS/versions/latest'
56-
env: 'POSTGRES_CUSTOMER_CAS_PASS'
57-
- versionName: 'projects/$PROJECT_ID/secrets/POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME/versions/latest'
58-
env: 'POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME'
59-
- versionName: 'projects/$PROJECT_ID/secrets/SQLSERVER_CONNECTION_NAME/versions/latest'
60-
env: 'SQLSERVER_CONNECTION_NAME'
61-
- versionName: 'projects/$PROJECT_ID/secrets/SQLSERVER_USER/versions/latest'
62-
env: 'SQLSERVER_USER'
63-
- versionName: 'projects/$PROJECT_ID/secrets/SQLSERVER_PASS/versions/latest'
64-
env: 'SQLSERVER_PASS'
65-
- versionName: 'projects/$PROJECT_ID/secrets/SQLSERVER_DB/versions/latest'
66-
env: 'SQLSERVER_DB'
52+
- versionName: "projects/$PROJECT_ID/secrets/MYSQL_CONNECTION_NAME/versions/latest"
53+
env: "MYSQL_CONNECTION_NAME"
54+
- versionName: "projects/$PROJECT_ID/secrets/MYSQL_USER/versions/latest"
55+
env: "MYSQL_USER"
56+
- versionName: "projects/$PROJECT_ID/secrets/CLOUD_BUILD_MYSQL_IAM_USER/versions/latest"
57+
env: "MYSQL_IAM_USER"
58+
- versionName: "projects/$PROJECT_ID/secrets/MYSQL_PASS/versions/latest"
59+
env: "MYSQL_PASS"
60+
- versionName: "projects/$PROJECT_ID/secrets/MYSQL_DB/versions/latest"
61+
env: "MYSQL_DB"
62+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_CONNECTION_NAME/versions/latest"
63+
env: "POSTGRES_CONNECTION_NAME"
64+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_USER/versions/latest"
65+
env: "POSTGRES_USER"
66+
- versionName: "projects/$PROJECT_ID/secrets/CLOUD_BUILD_POSTGRES_IAM_USER/versions/latest"
67+
env: "POSTGRES_IAM_USER"
68+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_PASS/versions/latest"
69+
env: "POSTGRES_PASS"
70+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_DB/versions/latest"
71+
env: "POSTGRES_DB"
72+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_CAS_CONNECTION_NAME/versions/latest"
73+
env: "POSTGRES_CAS_CONNECTION_NAME"
74+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_CAS_PASS/versions/latest"
75+
env: "POSTGRES_CAS_PASS"
76+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_CUSTOMER_CAS_CONNECTION_NAME/versions/latest"
77+
env: "POSTGRES_CUSTOMER_CAS_CONNECTION_NAME"
78+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_CUSTOMER_CAS_PASS/versions/latest"
79+
env: "POSTGRES_CUSTOMER_CAS_PASS"
80+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME/versions/latest"
81+
env: "POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME"
82+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_MCP_CONNECTION_NAME/versions/latest"
83+
env: "POSTGRES_MCP_CONNECTION_NAME"
84+
- versionName: "projects/$PROJECT_ID/secrets/POSTGRES_MCP_PASS/versions/latest"
85+
env: "POSTGRES_MCP_PASS"
86+
- versionName: "projects/$PROJECT_ID/secrets/SQLSERVER_CONNECTION_NAME/versions/latest"
87+
env: "SQLSERVER_CONNECTION_NAME"
88+
- versionName: "projects/$PROJECT_ID/secrets/SQLSERVER_USER/versions/latest"
89+
env: "SQLSERVER_USER"
90+
- versionName: "projects/$PROJECT_ID/secrets/SQLSERVER_PASS/versions/latest"
91+
env: "SQLSERVER_PASS"
92+
- versionName: "projects/$PROJECT_ID/secrets/SQLSERVER_DB/versions/latest"
93+
env: "SQLSERVER_DB"
6794
substitutions:
6895
_VERSION: ${_VERSION}
6996
_IP_TYPE: ${_IP_TYPE}
70-
97+
7198
options:
7299
dynamicSubstitutions: true
73100
pool:

.github/workflows/tests.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ jobs:
8282
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_CONNECTION_NAME
8383
POSTGRES_CUSTOMER_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_PASS
8484
POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME
85+
POSTGRES_MCP_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_MCP_CONNECTION_NAME
86+
POSTGRES_MCP_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_MCP_PASS
8587
SQLSERVER_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_CONNECTION_NAME
8688
SQLSERVER_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_USER
8789
SQLSERVER_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_PASS
@@ -104,6 +106,8 @@ jobs:
104106
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_CONNECTION_NAME }}"
105107
POSTGRES_CUSTOMER_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_PASS }}"
106108
POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_PASS_VALID_DOMAIN_NAME }}"
109+
POSTGRES_MCP_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_MCP_CONNECTION_NAME }}"
110+
POSTGRES_MCP_PASS: "${{ steps.secrets.outputs.POSTGRES_MCP_PASS }}"
107111
SQLSERVER_CONNECTION_NAME: "${{ steps.secrets.outputs.SQLSERVER_CONNECTION_NAME }}"
108112
SQLSERVER_USER: "${{ steps.secrets.outputs.SQLSERVER_USER }}"
109113
SQLSERVER_PASS: "${{ steps.secrets.outputs.SQLSERVER_PASS }}"

tests/system/test_pg8000_connection.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,22 @@ def test_custom_SAN_with_dns_pg8000_connection() -> None:
191191
curr_time = time[0]
192192
assert type(curr_time) is datetime
193193
connector.close()
194+
195+
196+
def test_MCP_pg8000_connection() -> None:
197+
"""Basic test to get time from database."""
198+
inst_conn_name = os.environ["POSTGRES_MCP_CONNECTION_NAME"]
199+
user = os.environ["POSTGRES_USER"]
200+
password = os.environ["POSTGRES_MCP_PASS"]
201+
db = os.environ["POSTGRES_DB"]
202+
ip_type = os.environ.get("IP_TYPE", "public")
203+
204+
engine, connector = create_sqlalchemy_engine(
205+
inst_conn_name, user, password, db, ip_type
206+
)
207+
with engine.connect() as conn:
208+
time = conn.execute(sqlalchemy.text("SELECT NOW()")).fetchone()
209+
conn.commit()
210+
curr_time = time[0]
211+
assert type(curr_time) is datetime
212+
connector.close()

0 commit comments

Comments
 (0)