Skip to content

Commit a39c7fb

Browse files
committed
feat: Support Private CA for server certificates.
test: Integration test for Customer Private CA CAS instance.
1 parent 2288c6a commit a39c7fb

File tree

4 files changed

+35
-3
lines changed

4 files changed

+35
-3
lines changed

.github/workflows/tests.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ jobs:
161161
POSTGRES_DB:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_DB
162162
POSTGRES_CAS_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CAS_CONNECTION_NAME
163163
POSTGRES_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CAS_PASS
164+
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_CONNECTION_NAME
165+
POSTGRES_CUSTOMER_CAS_PASS:${{ vars.GOOGLE_CLOUD_PROJECT }}/POSTGRES_CUSTOMER_CAS_PASS
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
@@ -188,6 +190,8 @@ jobs:
188190
POSTGRES_DB: "${{ steps.secrets.outputs.POSTGRES_DB }}"
189191
POSTGRES_CAS_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CAS_CONNECTION_NAME }}"
190192
POSTGRES_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CAS_PASS }}"
193+
POSTGRES_CUSTOMER_CAS_CONNECTION_NAME: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_CONNECTION_NAME }}"
194+
POSTGRES_CUSTOMER_CAS_PASS: "${{ steps.secrets.outputs.POSTGRES_CUSTOMER_CAS_PASS }}"
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 }}"

package-lock.json

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/socket.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ export function validateCertificate(
3636
dnsName: string
3737
) {
3838
return (hostname: string, cert: tls.PeerCertificate): Error | undefined => {
39-
if (serverCaMode === 'GOOGLE_MANAGED_CAS_CA') {
39+
if (
40+
serverCaMode === 'GOOGLE_MANAGED_CAS_CA' ||
41+
serverCaMode === 'CUSTOMER_MANAGED_CAS_CA'
42+
) {
4043
return tls.checkServerIdentity(dnsName, cert);
4144
}
4245
if (!cert || !cert.subject) {

system-test/pg-tests.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,33 @@ function pgTests(t, connectorModule, pgModule) {
9191
connector.close();
9292
}
9393
);
94+
95+
t.test(
96+
'open connection to Customer Private CAS-based CA instance and retrieves standard pg tables',
97+
async t => {
98+
const connector = new Connector();
99+
const clientOpts = await connector.getOptions({
100+
instanceConnectionName: String(
101+
process.env.POSTGRES_CUSTOMER_CAS_CONNECTION_NAME
102+
),
103+
});
104+
const client = new Client({
105+
...clientOpts,
106+
user: String(process.env.POSTGRES_USER),
107+
password: String(process.env.POSTGRES_CUSTOMER_CAS_PASS),
108+
database: String(process.env.POSTGRES_DB),
109+
});
110+
client.connect();
111+
const {
112+
rows: [result],
113+
} = await client.query('SELECT NOW();');
114+
const returnedDate = result['now'];
115+
t.ok(returnedDate.getTime(), 'should have valid returned date object');
116+
await client.end();
117+
connector.close();
118+
}
119+
);
120+
94121
}
95122

96123
export {pgTests};

0 commit comments

Comments
 (0)