|
1 | | -import { after, before, beforeEach, describe, it, mock } from 'node:test'; |
| 1 | +import { after, before, beforeEach, describe, it, mock, TestContext } from 'node:test'; |
2 | 2 | import assert, { |
3 | 3 | deepEqual, |
4 | 4 | deepStrictEqual, |
@@ -1674,6 +1674,67 @@ describe('KubeConfig', () => { |
1674 | 1674 | const client = kc.makeApiClient(CoreV1Api); |
1675 | 1675 | strictEqual(client instanceof CoreV1Api, true); |
1676 | 1676 | }); |
| 1677 | + |
| 1678 | + it('should include User-Agent header with version', async (t: TestContext) => { |
| 1679 | + let capturedUserAgent: string | undefined; |
| 1680 | + |
| 1681 | + const { server, host, port } = await createTestHttpsServer((req, res) => { |
| 1682 | + capturedUserAgent = req.headers['user-agent']; |
| 1683 | + |
| 1684 | + res.setHeader('Content-Type', 'application/json'); |
| 1685 | + res.writeHead(200); |
| 1686 | + res.end( |
| 1687 | + JSON.stringify({ |
| 1688 | + apiVersion: 'v1', |
| 1689 | + kind: 'NamespaceList', |
| 1690 | + items: [], |
| 1691 | + }), |
| 1692 | + ); |
| 1693 | + }); |
| 1694 | + t.after(async () => { |
| 1695 | + await new Promise<Error | undefined>((resolve) => { |
| 1696 | + server.close(resolve); |
| 1697 | + }); |
| 1698 | + }); |
| 1699 | + |
| 1700 | + const kc = new KubeConfig(); |
| 1701 | + kc.loadFromClusterAndUser( |
| 1702 | + { |
| 1703 | + name: 'test-cluster', |
| 1704 | + server: `https://${host}:${port}`, |
| 1705 | + skipTLSVerify: true, |
| 1706 | + } as Cluster, |
| 1707 | + { |
| 1708 | + name: 'test-user', |
| 1709 | + token: 'test-token', |
| 1710 | + } as User, |
| 1711 | + ); |
| 1712 | + |
| 1713 | + const coreV1Api = kc.makeApiClient(CoreV1Api); |
| 1714 | + await coreV1Api.listNamespace(); |
| 1715 | + |
| 1716 | + // Read version from package.json |
| 1717 | + const packageJsonPath = join(__dirname, '..', 'package.json'); |
| 1718 | + const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')); |
| 1719 | + const expectedVersion = packageJson.version; |
| 1720 | + |
| 1721 | + // Verify version is not blank |
| 1722 | + strictEqual(typeof expectedVersion, 'string'); |
| 1723 | + strictEqual(expectedVersion.length > 0, true, 'package.json version should not be blank'); |
| 1724 | + |
| 1725 | + // Verify User-Agent header contains client name and version |
| 1726 | + strictEqual(typeof capturedUserAgent, 'string'); |
| 1727 | + strictEqual( |
| 1728 | + capturedUserAgent!.startsWith('kubernetes-client-javascript/'), |
| 1729 | + true, |
| 1730 | + 'capturedUserAgent should start with "kubernetes-javascript-client/"', |
| 1731 | + ); |
| 1732 | + strictEqual( |
| 1733 | + capturedUserAgent!.endsWith(expectedVersion), |
| 1734 | + true, |
| 1735 | + `User-Agent should include version ${expectedVersion}`, |
| 1736 | + ); |
| 1737 | + }); |
1677 | 1738 | }); |
1678 | 1739 |
|
1679 | 1740 | describe('EmptyConfig', () => { |
|
0 commit comments