| 'use strict'; |
| |
| // This tests the basic functionality of tls.setDefaultCACertificates(). |
| |
| const common = require('../common'); |
| if (!common.hasCrypto) common.skip('missing crypto'); |
| |
| const tls = require('tls'); |
| const fixtures = require('../common/fixtures'); |
| const { assertEqualCerts } = require('../common/tls'); |
| |
| const originalBundled = tls.getCACertificates('bundled'); |
| const originalSystem = tls.getCACertificates('system'); |
| const fixtureCert = fixtures.readKey('fake-startcom-root-cert.pem'); |
| |
| function testSetCertificates(certs) { |
| // Test setting it can be verified with tls.getCACertificates(). |
| tls.setDefaultCACertificates(certs); |
| const result = tls.getCACertificates('default'); |
| assertEqualCerts(result, certs); |
| |
| // Verify that other certificate types are unchanged |
| const newBundled = tls.getCACertificates('bundled'); |
| const newSystem = tls.getCACertificates('system'); |
| assertEqualCerts(newBundled, originalBundled); |
| assertEqualCerts(newSystem, originalSystem); |
| |
| // Test implicit defaults. |
| const implicitDefaults = tls.getCACertificates(); |
| assertEqualCerts(implicitDefaults, certs); |
| |
| // Test cached results. |
| const cachedResult = tls.getCACertificates('default'); |
| assertEqualCerts(cachedResult, certs); |
| const cachedImplicitDefaults = tls.getCACertificates(); |
| assertEqualCerts(cachedImplicitDefaults, certs); |
| } |
| |
| // Test setting with fixture certificate. |
| testSetCertificates([fixtureCert]); |
| |
| // Test setting with empty array. |
| testSetCertificates([]); |
| |
| // Test setting with bundled certificates |
| testSetCertificates(originalBundled); |
| |
| // Test combining bundled and extra certificates. |
| testSetCertificates([...originalBundled, fixtureCert]); |
| |
| // Test setting with a subset of bundled certificates |
| if (originalBundled.length >= 3) { |
| testSetCertificates(originalBundled.slice(0, 3)); |
| } |
| |
| // Test duplicate certificates |
| tls.setDefaultCACertificates([fixtureCert, fixtureCert, fixtureCert]); |
| assertEqualCerts(tls.getCACertificates('default'), [fixtureCert]); |