Skip to content

Commit ee9c460

Browse files
committed
test: use real Kubernetes client in NODE_TLS_REJECT_UNAUTHORIZED test
1 parent 8e850a9 commit ee9c460

File tree

1 file changed

+50
-11
lines changed

1 file changed

+50
-11
lines changed

src/config_test.ts

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,29 @@ describe('KubeConfig', () => {
495495
});
496496

497497
it('should apply NODE_TLS_REJECT_UNAUTHORIZED from environment to agent', async () => {
498-
const { server, host, port } = await createTestHttpsServer();
498+
const { server, host, port } = await createTestHttpsServer((req, res) => {
499+
res.setHeader('Content-Type', 'application/json');
500+
if (req.url?.includes('/api/v1/namespaces')) {
501+
res.writeHead(200);
502+
res.end(
503+
JSON.stringify({
504+
apiVersion: 'v1',
505+
kind: 'NamespaceList',
506+
items: [
507+
{
508+
apiVersion: 'v1',
509+
kind: 'Namespace',
510+
metadata: { name: 'default' },
511+
},
512+
],
513+
}),
514+
);
515+
} else {
516+
res.writeHead(200);
517+
res.end('ok');
518+
}
519+
});
520+
499521
const originalValue = process.env.NODE_TLS_REJECT_UNAUTHORIZED;
500522
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
501523
after(() => {
@@ -504,15 +526,28 @@ describe('KubeConfig', () => {
504526
});
505527

506528
const kc = new KubeConfig();
507-
const rc = new RequestContext(`https://${host}:${port}`, HttpMethod.GET);
508-
await kc.applySecurityAuthentication(rc);
509-
const res = await fetch(`https://${host}:${port}`, { agent: rc.getAgent() });
510-
strictEqual(res.status, 200);
511-
strictEqual(await res.text(), 'OK');
529+
kc.loadFromClusterAndUser(
530+
{
531+
name: 'test-cluster',
532+
server: `https://${host}:${port}`,
533+
// ignore skipTLSVerify specified from environment variables
534+
} as Cluster,
535+
{
536+
name: 'test-user',
537+
token: 'test-token',
538+
},
539+
);
540+
const coreV1Api = kc.makeApiClient(CoreV1Api);
541+
const namespaceList = await coreV1Api.listNamespace();
542+
543+
strictEqual(namespaceList.kind, 'NamespaceList');
544+
strictEqual(namespaceList.items.length, 1);
545+
strictEqual(namespaceList.items[0].metadata?.name, 'default');
512546

513547
const res2 = await fetch(`https://${host}:${port}`, await kc.applyToFetchOptions({}));
514548
strictEqual(res2.status, 200);
515-
strictEqual(await res2.text(), 'OK');
549+
strictEqual(await res2.text(), 'ok');
550+
516551
delete process.env.NODE_TLS_REJECT_UNAUTHORIZED;
517552
});
518553
});
@@ -1853,7 +1888,9 @@ describe('KubeConfig', () => {
18531888
});
18541889

18551890
// create a self-signed HTTPS test server
1856-
async function createTestHttpsServer(): Promise<{
1891+
async function createTestHttpsServer(
1892+
requestHandler?: (req: http.IncomingMessage, res: http.ServerResponse) => void,
1893+
): Promise<{
18571894
server: https.Server;
18581895
host: string;
18591896
port: number;
@@ -1862,10 +1899,12 @@ async function createTestHttpsServer(): Promise<{
18621899
const host = 'localhost';
18631900
const { private: key, cert } = selfsigned.generate([{ name: 'commonName', value: host }]);
18641901

1865-
const server = https.createServer({ key, cert }, (_req, res) => {
1902+
const defaultHandler = (req: http.IncomingMessage, res: http.ServerResponse) => {
18661903
res.writeHead(200);
1867-
res.end('OK');
1868-
});
1904+
res.end('ok');
1905+
};
1906+
1907+
const server = https.createServer({ key, cert }, requestHandler ?? defaultHandler);
18691908

18701909
const port = await new Promise<number>((resolve) => {
18711910
server.listen(0, () => {

0 commit comments

Comments
 (0)