Skip to content

Commit 8434d03

Browse files
committed
test: E2E tests for domain name
1 parent b94cc98 commit 8434d03

File tree

4 files changed

+343
-84
lines changed

4 files changed

+343
-84
lines changed

.github/workflows/tests.yml

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,13 +154,15 @@ jobs:
154154
MYSQL_DB:${{ vars.GOOGLE_CLOUD_PROJECT }}/MYSQL_DB
155155
POSTGRES_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CONNECTION_NAME
156156
POSTGRES_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_USER
157-
POSTGRES_IAM_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_USER_IAM_NODE
157+
POSTGRES_USER_IAM_NODE:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_USER_IAM_NODE
158158
POSTGRES_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_PASS
159159
POSTGRES_DB:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_DB
160160
POSTGRES_CAS_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CAS_CONNECTION_NAME
161161
POSTGRES_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CAS_PASS
162162
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_CONNECTION_NAME
163163
POSTGRES_CUSTOMER_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_PASS
164+
POSTGRES_CUSTOMER_CAS_DOMAIN_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_DOMAIN_NAME
165+
POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME
164166
SQLSERVER_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_CONNECTION_NAME
165167
SQLSERVER_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_USER
166168
SQLSERVER_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_PASS
@@ -181,13 +183,15 @@ jobs:
181183
MYSQL_DB: "${{ steps.secrets.outputs.MYSQL_DB }}"
182184
POSTGRES_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CONNECTION_NAME }}"
183185
POSTGRES_USER: "${{ steps.secrets.outputs.POSTGRES_USER }}"
184-
POSTGRES_IAM_USER: "${{ steps.secrets.outputs.POSTGRES_IAM_USER }}"
186+
POSTGRES_USER_IAM_NODE: "${{ steps.secrets.outputs.POSTGRES_USER_IAM_NODE }}"
185187
POSTGRES_PASS: "${{ steps.secrets.outputs.POSTGRES_PASS }}"
186188
POSTGRES_DB: "${{ steps.secrets.outputs.POSTGRES_DB }}"
187189
POSTGRES_CAS_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CAS_CONNECTION_NAME }}"
188190
POSTGRES_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CAS_PASS }}"
189191
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_CONNECTION_NAME }}"
190192
POSTGRES_CUSTOMER_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_PASS }}"
193+
POSTGRES_CUSTOMER_CAS_DOMAIN_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_DOMAIN_NAME }}"
194+
POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME }}"
191195
SQLSERVER_CONNECTION_NAME: "${{ steps.secrets.outputs.SQLSERVER_CONNECTION_NAME }}"
192196
SQLSERVER_USER: "${{ steps.secrets.outputs.SQLSERVER_USER }}"
193197
SQLSERVER_PASS: "${{ steps.secrets.outputs.SQLSERVER_PASS }}"
@@ -275,9 +279,15 @@ jobs:
275279
MYSQL_DB:${{ vars.GOOGLE_CLOUD_PROJECT }}/MYSQL_DB
276280
POSTGRES_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CONNECTION_NAME
277281
POSTGRES_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_USER
278-
POSTGRES_IAM_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_USER_IAM_NODE
282+
POSTGRES_USER_IAM_NODE:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_USER_IAM_NODE
279283
POSTGRES_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_PASS
280284
POSTGRES_DB:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_DB
285+
POSTGRES_CAS_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CAS_CONNECTION_NAME
286+
POSTGRES_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CAS_PASS
287+
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_CONNECTION_NAME
288+
POSTGRES_CUSTOMER_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_PASS
289+
POSTGRES_CUSTOMER_CAS_DOMAIN_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_DOMAIN_NAME
290+
POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME
281291
SQLSERVER_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_CONNECTION_NAME
282292
SQLSERVER_USER:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_USER
283293
SQLSERVER_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/SQLSERVER_PASS
@@ -292,9 +302,15 @@ jobs:
292302
MYSQL_DB: "${{ steps.secrets.outputs.MYSQL_DB }}"
293303
POSTGRES_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CONNECTION_NAME }}"
294304
POSTGRES_USER: "${{ steps.secrets.outputs.POSTGRES_USER }}"
295-
POSTGRES_IAM_USER: "${{ steps.secrets.outputs.POSTGRES_IAM_USER }}"
305+
POSTGRES_IAM_USER: "${{ steps.secrets.outputs.POSTGRES_USER_IAM_NODE }}"
296306
POSTGRES_PASS: "${{ steps.secrets.outputs.POSTGRES_PASS }}"
297307
POSTGRES_DB: "${{ steps.secrets.outputs.POSTGRES_DB }}"
308+
POSTGRES_CAS_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CAS_CONNECTION_NAME }}"
309+
POSTGRES_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CAS_PASS }}"
310+
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_CONNECTION_NAME }}"
311+
POSTGRES_CUSTOMER_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_PASS }}"
312+
POSTGRES_CUSTOMER_CAS_DOMAIN_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_DOMAIN_NAME }}"
313+
POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME }}"
298314
SQLSERVER_CONNECTION_NAME: "${{ steps.secrets.outputs.SQLSERVER_CONNECTION_NAME }}"
299315
SQLSERVER_USER: "${{ steps.secrets.outputs.SQLSERVER_USER }}"
300316
SQLSERVER_PASS: "${{ steps.secrets.outputs.SQLSERVER_PASS }}"

system-test/pg-connect.cjs

Lines changed: 112 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,77 +20,87 @@ const {Client} = pg;
2020
t.test('open connection and retrieves standard pg tables', async t => {
2121
const connector = new Connector();
2222
const clientOpts = await connector.getOptions({
23-
instanceConnectionName: process.env.POSTGRES_CONNECTION_NAME,
24-
ipType: 'PUBLIC',
25-
authType: 'PASSWORD',
23+
instanceConnectionName: String(process.env.POSTGRES_CONNECTION_NAME),
2624
});
2725
const client = new Client({
2826
...clientOpts,
29-
user: process.env.POSTGRES_USER,
30-
password: process.env.POSTGRES_PASS,
31-
database: process.env.POSTGRES_DB,
27+
user: String(process.env.POSTGRES_USER),
28+
password: String(process.env.POSTGRES_PASS),
29+
database: String(process.env.POSTGRES_DB),
3230
});
33-
client.connect();
31+
t.after(async () => {
32+
try {
33+
await client.end();
34+
} finally {
35+
connector.close();
36+
}
37+
});
38+
39+
await client.connect();
3440

3541
const {
3642
rows: [result],
3743
} = await client.query('SELECT NOW();');
3844
const returnedDate = result['now'];
3945
t.ok(returnedDate.getTime(), 'should have valid returned date object');
40-
41-
await client.end();
42-
connector.close();
4346
});
4447

4548
t.test('open IAM connection and retrieves standard pg tables', async t => {
4649
const connector = new Connector();
4750
const clientOpts = await connector.getOptions({
48-
instanceConnectionName: process.env.POSTGRES_CONNECTION_NAME,
49-
ipType: 'PUBLIC',
50-
authType: 'IAM',
51+
instanceConnectionName: String(process.env.POSTGRES_CONNECTION_NAME),
52+
ipType: "PUBLIC",
53+
authType: "IAM",
5154
});
5255
const client = new Client({
5356
...clientOpts,
54-
user: process.env.POSTGRES_IAM_USER,
55-
database: process.env.POSTGRES_DB,
57+
user: String(process.env.POSTGRES_USER_IAM_NODE),
58+
database: String(process.env.POSTGRES_DB),
59+
});
60+
t.after(async () => {
61+
try {
62+
await client.end();
63+
} finally {
64+
connector.close();
65+
}
5666
});
57-
client.connect();
67+
await client.connect();
5868

5969
const {
6070
rows: [result],
6171
} = await client.query('SELECT NOW();');
6272
const returnedDate = result['now'];
6373
t.ok(returnedDate.getTime(), 'should have valid returned date object');
64-
65-
await client.end();
66-
connector.close();
6774
});
6875

6976
t.test(
7077
'open connection to CAS-based CA instance and retrieves standard pg tables',
7178
async t => {
7279
const connector = new Connector();
7380
const clientOpts = await connector.getOptions({
74-
instanceConnectionName: process.env.POSTGRES_CAS_CONNECTION_NAME,
75-
ipType: 'PUBLIC',
76-
authType: 'PASSWORD',
81+
instanceConnectionName: String(process.env.POSTGRES_CAS_CONNECTION_NAME),
7782
});
7883
const client = new Client({
7984
...clientOpts,
80-
user: process.env.POSTGRES_USER,
81-
password: process.env.POSTGRES_CAS_PASS,
82-
database: process.env.POSTGRES_DB,
85+
user: String(process.env.POSTGRES_USER),
86+
password: String(process.env.POSTGRES_CAS_PASS),
87+
database: String(process.env.POSTGRES_DB),
8388
});
84-
client.connect();
89+
t.after(async () => {
90+
try {
91+
await client.end();
92+
} finally {
93+
connector.close();
94+
}
95+
});
96+
97+
await client.connect();
8598

8699
const {
87100
rows: [result],
88101
} = await client.query('SELECT NOW();');
89102
const returnedDate = result['now'];
90103
t.ok(returnedDate.getTime(), 'should have valid returned date object');
91-
92-
await client.end();
93-
connector.close();
94104
}
95105
);
96106

@@ -109,13 +119,83 @@ t.test(
109119
password: String(process.env.POSTGRES_CUSTOMER_CAS_PASS),
110120
database: String(process.env.POSTGRES_DB),
111121
});
112-
client.connect();
122+
t.after(async () => {
123+
try {
124+
await client.end();
125+
} finally {
126+
connector.close();
127+
}
128+
});
129+
130+
await client.connect();
113131
const {
114132
rows: [result],
115133
} = await client.query('SELECT NOW();');
116134
const returnedDate = result['now'];
117135
t.ok(returnedDate.getTime(), 'should have valid returned date object');
118-
await client.end();
119-
connector.close();
120136
}
121137
);
138+
139+
t.test(
140+
'open connection to Domain Name instance retrieves standard pg tables',
141+
async t => {
142+
const connector = new Connector();
143+
const clientOpts = await connector.getOptions({
144+
domainName: String(process.env.POSTGRES_CUSTOMER_CAS_DOMAIN_NAME),
145+
});
146+
const client = new Client({
147+
...clientOpts,
148+
user: String(process.env.POSTGRES_USER),
149+
password: String(process.env.POSTGRES_CUSTOMER_CAS_PASS),
150+
database: String(process.env.POSTGRES_DB),
151+
});
152+
t.after(async () => {
153+
try {
154+
await client.end();
155+
} finally {
156+
connector.close();
157+
}
158+
});
159+
160+
await client.connect();
161+
const {
162+
rows: [result],
163+
} = await client.query('SELECT NOW();');
164+
const returnedDate = result['now'];
165+
t.ok(returnedDate.getTime(), 'should have valid returned date object');
166+
}
167+
);
168+
169+
t.test(
170+
'open connection to Domain Name invalid domain name rejects connection',
171+
async t => {
172+
const connector = new Connector();
173+
const clientOpts = await connector.getOptions({
174+
domainName: String(process.env.POSTGRES_CUSTOMER_CAS_INVALID_DOMAIN_NAME),
175+
});
176+
const client = new Client({
177+
...clientOpts,
178+
user: String(process.env.POSTGRES_USER),
179+
password: String(process.env.POSTGRES_CUSTOMER_CAS_PASS),
180+
database: String(process.env.POSTGRES_DB),
181+
});
182+
t.after(async () => {
183+
console.log('Ending...');
184+
try {
185+
await client.end();
186+
} finally {
187+
connector.close();
188+
console.log('Ended...');
189+
}
190+
});
191+
try {
192+
await client.connect();
193+
t.fail('Should throw exception');
194+
} catch (e) {
195+
t.same(e.code, 'ERR_TLS_CERT_ALTNAME_INVALID');
196+
} finally {
197+
t.end();
198+
}
199+
}
200+
);
201+

0 commit comments

Comments
 (0)