11cb0ef41Sopenharmony_ci'use strict';
21cb0ef41Sopenharmony_ciconst common = require('../common');
31cb0ef41Sopenharmony_ciif (!common.hasCrypto) common.skip('missing crypto');
41cb0ef41Sopenharmony_ci
51cb0ef41Sopenharmony_ciconst assert = require('assert');
61cb0ef41Sopenharmony_ciconst tls = require('tls');
71cb0ef41Sopenharmony_ci
81cb0ef41Sopenharmony_ciassert(Array.isArray(tls.rootCertificates));
91cb0ef41Sopenharmony_ciassert(tls.rootCertificates.length > 0);
101cb0ef41Sopenharmony_ci
111cb0ef41Sopenharmony_ci// Getter should return the same object.
121cb0ef41Sopenharmony_ciassert.strictEqual(tls.rootCertificates, tls.rootCertificates);
131cb0ef41Sopenharmony_ci
141cb0ef41Sopenharmony_ci// Array is immutable...
151cb0ef41Sopenharmony_ciassert.throws(() => tls.rootCertificates[0] = 0, /TypeError/);
161cb0ef41Sopenharmony_ciassert.throws(() => tls.rootCertificates.sort(), /TypeError/);
171cb0ef41Sopenharmony_ci
181cb0ef41Sopenharmony_ci// ...and so is the property.
191cb0ef41Sopenharmony_ciassert.throws(() => tls.rootCertificates = 0, /TypeError/);
201cb0ef41Sopenharmony_ci
211cb0ef41Sopenharmony_ci// Does not contain duplicates.
221cb0ef41Sopenharmony_ciassert.strictEqual(tls.rootCertificates.length,
231cb0ef41Sopenharmony_ci                   new Set(tls.rootCertificates).size);
241cb0ef41Sopenharmony_ci
251cb0ef41Sopenharmony_ciassert(tls.rootCertificates.every((s) => {
261cb0ef41Sopenharmony_ci  return s.startsWith('-----BEGIN CERTIFICATE-----\n');
271cb0ef41Sopenharmony_ci}));
281cb0ef41Sopenharmony_ci
291cb0ef41Sopenharmony_ciassert(tls.rootCertificates.every((s) => {
301cb0ef41Sopenharmony_ci  return s.endsWith('\n-----END CERTIFICATE-----');
311cb0ef41Sopenharmony_ci}));
32