UNPKG

@aws-solutions-constructs/core

Version:
285 lines 26.4 kB
"use strict"; /** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance * with the License. A copy of the License is located at * * http://www.apache.org/licenses/LICENSE-2.0 * * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions * and limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); const process = require("process"); const override_warning_service_1 = require("../lib/override-warning-service"); const __1 = require("../"); // Mock setup beforeEach(() => { jest.resetModules(); jest.clearAllMocks(); delete process.env.overrideWarningsEnabled; }); test('Test override detection: positive, not-nested', () => { // Arrange const a = { keyA: 'valueA', keyB: 'valueB', keyC: 'valueC' }; const b = { keyA: 'new-valueA', keyD: 'valueD' }; // Act const consoleLogSpy = jest.spyOn(console, 'log'); (0, override_warning_service_1.flagOverriddenDefaults)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(1); }); test('Test override detection: negative, not-nested', () => { // Arrange const a = { keyA: 'valueA', keyB: 'valueB', keyC: 'valueC' }; const b = { keyD: 'valueD' }; // Act const consoleLogSpy = jest.spyOn(console, 'log'); (0, override_warning_service_1.flagOverriddenDefaults)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(0); }); test('Test override detection: positive, nested', () => { // Arrange const a = { keyA: 'valueA', keyB: 'valueB', keyC: 'valueC', keyD: { keyDA: 'valueDA', keyDB: 'valueDB' } }; const b = { keyC: 'valueCAnew', keyD: { keyDA: 'valueDAnew' } }; // Act const consoleLogSpy = jest.spyOn(console, 'log'); (0, override_warning_service_1.flagOverriddenDefaults)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(2); }); test('Test override detection: negative, nested', () => { // Arrange const a = { keyA: 'valueA', keyB: 'valueB', keyC: 'valueC', keyD: { keyDA: 'valueDA', keyDB: 'valueDB' } }; const b = { keyD: { keyDA: 'valueDA' } }; // Act const consoleLogSpy = jest.spyOn(console, 'log'); (0, override_warning_service_1.flagOverriddenDefaults)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(0); }); test('Test override warning on/off: default on', () => { // Arrange const a = { keyA: 'valueA', keyB: 'valueB', keyC: 'valueC' }; const b = { keyA: 'new-valueA', keyD: 'valueD' }; // Act const consoleLogSpy = jest.spyOn(console, 'log'); (0, __1.overrideProps)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(1); }); test('Test override warning on/off: explicit on', () => { // Arrange const a = { keyA: 'valueA', keyB: 'valueB', keyC: 'valueC' }; const b = { keyA: 'new-valueA', keyD: 'valueD' }; process.env.overrideWarningsEnabled = 'true'; // Act const consoleLogSpy = jest.spyOn(console, 'log'); (0, __1.overrideProps)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(1); }); test('Test override warning on/off: explicit off', () => { // Arrange const a = { keyA: 'valueA', keyB: 'valueB', keyC: 'valueC' }; const b = { keyA: 'new-valueA', keyD: 'valueD' }; // Act const consoleLogSpy = jest.spyOn(console, 'log'); process.env.overrideWarningsEnabled = 'false'; const result = (0, __1.overrideProps)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(0); expect(result).toEqual({ keyA: 'new-valueA', keyB: 'valueB', keyC: 'valueC', keyD: 'valueD' }); }); test('Test override warning on/off: undefined on', () => { // Arrange const a = { keyA: 'valueA', keyB: 'valueB', keyC: 'valueC' }; const b = { keyA: 'new-valueA', keyD: 'valueD' }; // Act const consoleLogSpy = jest.spyOn(console, 'log'); process.env.overrideWarningsEnabled = undefined; const result = (0, __1.overrideProps)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(1); expect(result).toEqual({ keyA: 'new-valueA', keyB: 'valueB', keyC: 'valueC', keyD: 'valueD' }); }); test('Test current prefilters', () => { // Arrange const a = { destination: 'sampleDestinationValueA', maxRecordAge: 'sampleMaxRecordAgeValueA', expiration: 'sampleExpirationValueA', transitionAfter: 'sampleTransitionValueA', timeout: 'sampleTimeoutValueA', period: 'samplePeriodValueA', node: 'sampleNodeA' }; const b = { destination: 'sampleDestinationValueB', maxRecordAge: 'sampleMaxRecordAgeValueB', expiration: 'sampleExpirationValueB', transitionAfter: 'sampleTransitionValueB', timeout: 'sampleTimeoutValueB', period: 'samplePeriodValueA', node: 'sampleNodeA' }; // Act const consoleLogSpy = jest.spyOn(console, 'log'); process.env.overrideWarningsEnabled = undefined; const result = (0, __1.overrideProps)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(6); expect(result).toEqual({ destination: 'sampleDestinationValueB', maxRecordAge: 'sampleMaxRecordAgeValueB', expiration: 'sampleExpirationValueB', transitionAfter: 'sampleTransitionValueB', timeout: 'sampleTimeoutValueB', period: 'samplePeriodValueA', node: 'sampleNodeA' }); }); test('Test overrideProps with warnings disabled in argument', () => { process.env.overrideWarningsEnabled = 'true'; const a = { keyA: 'valueA', keyB: 'valueB', keyC: 'valueC' }; const b = { keyA: 'new-valueA', keyD: 'valueD' }; // Act const consoleLogSpy = jest.spyOn(console, 'log'); (0, __1.overrideProps)(a, b, undefined, true); // Assert expect(consoleLogSpy).toBeCalledTimes(0); }); test('Test overrideProps with deep arguments', () => { const a = { keyA: 'valueA', keyB: 'valueB', keyC: { keyCA: 'valueCA', keyCB: 'valueCB' }, keyD: 'valueD' }; const b = { keyA: 'new-valueA', keyB: 'valueB', keyC: { keyCA: 'valueCANew', }, keyD: { keyDA: 'valueDANew', keyDB: 'valueDBNew' } }; // Act const consoleLogSpy = jest.spyOn(console, 'log'); (0, __1.overrideProps)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(3); }); test('Confirm node stops circular reference traversal', () => { // Arrange const a = { keyA: 'valueA', keyB: 'valueB', keyC: 'valueC' }; const b = { keyA: 'new-valueA', keyD: 'valueD', keyE: { node: {} } }; b.keyE.node = b; const consoleLogSpy = jest.spyOn(console, 'log'); (0, override_warning_service_1.flagOverriddenDefaults)(a, b); // Assert expect(consoleLogSpy).toBeCalledTimes(1); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGUtd2FybmluZy1zZXJ2aWNlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvdmVycmlkZS13YXJuaW5nLXNlcnZpY2UudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsbUNBQW1DO0FBQ25DLDhFQUF5RTtBQUN6RSwyQkFBb0M7QUFFcEMsYUFBYTtBQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUU7SUFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQztBQUM3QyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQywrQ0FBK0MsRUFBRSxHQUFHLEVBQUU7SUFDekQsVUFBVTtJQUNWLE1BQU0sQ0FBQyxHQUFHO1FBQ1IsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxRQUFRO0tBQ2YsQ0FBQztJQUNGLE1BQU0sQ0FBQyxHQUFHO1FBQ1IsSUFBSSxFQUFFLFlBQVk7UUFDbEIsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO0lBQ0YsTUFBTTtJQUNOLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELElBQUEsaURBQXNCLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFNBQVM7SUFDVCxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtJQUN6RCxVQUFVO0lBQ1YsTUFBTSxDQUFDLEdBQUc7UUFDUixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxF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TSxDQUFDLEdBQUc7UUFDUixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO0lBQ0YsTUFBTSxDQUFDLEdBQUc7UUFDUixJQUFJLEVBQUUsWUFBWTtRQUNsQixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxFQUFFO1NBQ1Q7S0FDRixDQUFDO0lBQ0YsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBRWhCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELElBQUEsaURBQXNCLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFNBQVM7SUFDVCxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0ICogYXMgcHJvY2VzcyBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7IGZsYWdPdmVycmlkZGVuRGVmYXVsdHMgfSBmcm9tICcuLi9saWIvb3ZlcnJpZGUtd2FybmluZy1zZXJ2aWNlJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMgfSBmcm9tICcuLi8nO1xuXG4vLyBNb2NrIHNldHVwXG5iZWZvcmVFYWNoKCgpID0+IHtcbiAgamVzdC5yZXNldE1vZHVsZXMoKTtcbiAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gIGRlbGV0ZSBwcm9jZXNzLmVudi5vdmVycmlkZVdhcm5pbmdzRW5hYmxlZDtcbn0pO1xuXG50ZXN0KCdUZXN0IG92ZXJyaWRlIGRldGVjdGlvbjogcG9zaXRpdmUsIG5vdC1uZXN0ZWQnLCAoKSA9PiB7XG4gIC8vIEFycmFuZ2VcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlEOiAndmFsdWVEJ1xuICB9O1xuICAvLyBBY3RcbiAgY29uc3QgY29uc29sZUxvZ1NweSA9IGplc3Quc3B5T24oY29uc29sZSwgJ2xvZycpO1xuICBmbGFnT3ZlcnJpZGRlbkRlZmF1bHRzKGEsIGIpO1xuICAvLyBBc3NlcnRcbiAgZXhwZWN0KGNvbnNvbGVMb2dTcHkpLnRvQmVDYWxsZWRUaW1lcygxKTtcbn0pO1xuXG50ZXN0KCdUZXN0IG92ZXJyaWRlIGRldGVjdGlvbjogbmVnYXRpdmUsIG5vdC1uZXN0ZWQnLCAoKSA9PiB7XG4gIC8vIEFycmFuZ2VcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCBjb25zb2xlTG9nU3B5ID0gamVzdC5zcHlPbihjb25zb2xlLCAnbG9nJyk7XG4gIGZsYWdPdmVycmlkZGVuRGVmYXVsdHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDApO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgZGV0ZWN0aW9uOiBwb3NpdGl2ZSwgbmVzdGVkJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQycsXG4gICAga2V5RDoge1xuICAgICAga2V5REE6ICd2YWx1ZURBJyxcbiAgICAgIGtleURCOiAndmFsdWVEQidcbiAgICB9XG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QzogJ3ZhbHVlQ0FuZXcnLFxuICAgIGtleUQ6IHtcbiAgICAgIGtleURBOiAndmFsdWVEQW5ldydcbiAgICB9XG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCBjb25zb2xlTG9nU3B5ID0gamVzdC5zcHlPbihjb25zb2xlLCAnbG9nJyk7XG4gIGZsYWdPdmVycmlkZGVuRGVmYXVsdHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDIpO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgZGV0ZWN0aW9uOiBuZWdhdGl2ZSwgbmVzdGVkJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQycsXG4gICAga2V5RDoge1xuICAgICAga2V5REE6ICd2YWx1ZURBJyxcbiAgICAgIGtleURCOiAndmFsdWVEQidcbiAgICB9XG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5RDoge1xuICAgICAga2V5REE6ICd2YWx1ZURBJ1xuICAgIH1cbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IGNvbnNvbGVMb2dTcHkgPSBqZXN0LnNweU9uKGNvbnNvbGUsICdsb2cnKTtcbiAgZmxhZ092ZXJyaWRkZW5EZWZhdWx0cyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdChjb25zb2xlTG9nU3B5KS50b0JlQ2FsbGVkVGltZXMoMCk7XG59KTtcblxudGVzdCgnVGVzdCBvdmVycmlkZSB3YXJuaW5nIG9uL29mZjogZGVmYXVsdCBvbicsICgpID0+IHtcbiAgLy8gQXJyYW5nZVxuICBjb25zdCBhID0ge1xuICAgIGtleUE6ICd2YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6ICd2YWx1ZUMnXG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCBjb25zb2xlTG9nU3B5ID0gamVzdC5zcHlPbihjb25zb2xlLCAnbG9nJyk7XG4gIG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDEpO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgd2FybmluZyBvbi9vZmY6IGV4cGxpY2l0IG9uJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQydcbiAgfTtcbiAgY29uc3QgYiA9IHtcbiAgICBrZXlBOiAnbmV3LXZhbHVlQScsXG4gICAga2V5RDogJ3ZhbHVlRCdcbiAgfTtcbiAgcHJvY2Vzcy5lbnYub3ZlcnJpZGVXYXJuaW5nc0VuYWJsZWQgPSAndHJ1ZSc7XG4gIC8vIEFjdFxuICBjb25zdCBjb25zb2xlTG9nU3B5ID0gamVzdC5zcHlPbihjb25zb2xlLCAnbG9nJyk7XG4gIG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDEpO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGUgd2FybmluZyBvbi9vZmY6IGV4cGxpY2l0IG9mZicsICgpID0+IHtcbiAgLy8gQXJyYW5nZVxuICBjb25zdCBhID0ge1xuICAgIGtleUE6ICd2YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6ICd2YWx1ZUMnXG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIC8vIEFjdFxuICBjb25zdCBjb25zb2xlTG9nU3B5ID0gamVzdC5zcHlPbihjb25zb2xlLCAnbG9nJyk7XG4gIHByb2Nlc3MuZW52Lm92ZXJyaWRlV2FybmluZ3NFbmFibGVkID0gJ2ZhbHNlJztcbiAgY29uc3QgcmVzdWx0ID0gb3ZlcnJpZGVQcm9wcyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdChjb25zb2xlTG9nU3B5KS50b0JlQ2FsbGVkVGltZXMoMCk7XG5cbiAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6ICd2YWx1ZUMnLFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH0pO1xuXG59KTtcblxudGVzdCgnVGVzdCBvdmVycmlkZSB3YXJuaW5nIG9uL29mZjogdW5kZWZpbmVkIG9uJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5QzogJ3ZhbHVlQydcbiAgfTtcbiAgY29uc3QgYiA9IHtcbiAgICBrZXlBOiAnbmV3LXZhbHVlQScsXG4gICAga2V5RDogJ3ZhbHVlRCdcbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IGNvbnNvbGVMb2dTcHkgPSBqZXN0LnNweU9uKGNvbnNvbGUsICdsb2cnKTtcbiAgcHJvY2Vzcy5lbnYub3ZlcnJpZGVXYXJuaW5nc0VuYWJsZWQgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDEpO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJyxcbiAgICBrZXlEOiAndmFsdWVEJ1xuICB9KTtcblxufSk7XG5cbnRlc3QoJ1Rlc3QgY3VycmVudCBwcmVmaWx0ZXJzJywgKCkgPT4ge1xuICAvLyBBcnJhbmdlXG4gIGNvbnN0IGEgPSB7XG4gICAgZGVzdGluYXRpb246ICdzYW1wbGVEZXN0aW5hdGlvblZhbHVlQScsXG4gICAgbWF4UmVjb3JkQWdlOiAnc2FtcGxlTWF4UmVjb3JkQWdlVmFsdWVBJyxcbiAgICBleHBpcmF0aW9uOiAnc2FtcGxlRXhwaXJhdGlvblZhbHVlQScsXG4gICAgdHJhbnNpdGlvbkFmdGVyOiAnc2FtcGxlVHJhbnNpdGlvblZhbHVlQScsXG4gICAgdGltZW91dDogJ3NhbXBsZVRpbWVvdXRWYWx1ZUEnLFxuICAgIHBlcmlvZDogJ3NhbXBsZVBlcmlvZFZhbHVlQScsXG4gICAgbm9kZTogJ3NhbXBsZU5vZGVBJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGRlc3RpbmF0aW9uOiAnc2FtcGxlRGVzdGluYXRpb25WYWx1ZUInLFxuICAgIG1heFJlY29yZEFnZTogJ3NhbXBsZU1heFJlY29yZEFnZVZhbHVlQicsXG4gICAgZXhwaXJhdGlvbjogJ3NhbXBsZUV4cGlyYXRpb25WYWx1ZUInLFxuICAgIHRyYW5zaXRpb25BZnRlcjogJ3NhbXBsZVRyYW5zaXRpb25WYWx1ZUInLFxuICAgIHRpbWVvdXQ6ICdzYW1wbGVUaW1lb3V0VmFsdWVCJyxcbiAgICBwZXJpb2Q6ICdzYW1wbGVQZXJpb2RWYWx1ZUEnLFxuICAgIG5vZGU6ICdzYW1wbGVOb2RlQSdcbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IGNvbnNvbGVMb2dTcHkgPSBqZXN0LnNweU9uKGNvbnNvbGUsICdsb2cnKTtcbiAgcHJvY2Vzcy5lbnYub3ZlcnJpZGVXYXJuaW5nc0VuYWJsZWQgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlUHJvcHMoYSwgYik7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDYpO1xuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICBkZXN0aW5hdGlvbjogJ3NhbXBsZURlc3RpbmF0aW9uVmFsdWVCJyxcbiAgICBtYXhSZWNvcmRBZ2U6ICdzYW1wbGVNYXhSZWNvcmRBZ2VWYWx1ZUInLFxuICAgIGV4cGlyYXRpb246ICdzYW1wbGVFeHBpcmF0aW9uVmFsdWVCJyxcbiAgICB0cmFuc2l0aW9uQWZ0ZXI6ICdzYW1wbGVUcmFuc2l0aW9uVmFsdWVCJyxcbiAgICB0aW1lb3V0OiAnc2FtcGxlVGltZW91dFZhbHVlQicsXG4gICAgcGVyaW9kOiAnc2FtcGxlUGVyaW9kVmFsdWVBJyxcbiAgICBub2RlOiAnc2FtcGxlTm9kZUEnXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1Rlc3Qgb3ZlcnJpZGVQcm9wcyB3aXRoIHdhcm5pbmdzIGRpc2FibGVkIGluIGFyZ3VtZW50JywgKCkgPT4ge1xuICBwcm9jZXNzLmVudi5vdmVycmlkZVdhcm5pbmdzRW5hYmxlZCA9ICd0cnVlJztcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlEOiAndmFsdWVEJ1xuICB9O1xuICAvLyBBY3RcbiAgY29uc3QgY29uc29sZUxvZ1NweSA9IGplc3Quc3B5T24oY29uc29sZSwgJ2xvZycpO1xuICBvdmVycmlkZVByb3BzKGEsIGIsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIC8vIEFzc2VydFxuICBleHBlY3QoY29uc29sZUxvZ1NweSkudG9CZUNhbGxlZFRpbWVzKDApO1xuXG59KTtcblxudGVzdCgnVGVzdCBvdmVycmlkZVByb3BzIHdpdGggZGVlcCBhcmd1bWVudHMnLCAoKSA9PiB7XG4gIGNvbnN0IGEgPSB7XG4gICAga2V5QTogJ3ZhbHVlQScsXG4gICAga2V5QjogJ3ZhbHVlQicsXG4gICAga2V5Qzoge1xuICAgICAga2V5Q0E6ICd2YWx1ZUNBJyxcbiAgICAgIGtleUNCOiAndmFsdWVDQidcbiAgICB9LFxuICAgIGtleUQ6ICd2YWx1ZUQnXG4gIH07XG4gIGNvbnN0IGIgPSB7XG4gICAga2V5QTogJ25ldy12YWx1ZUEnLFxuICAgIGtleUI6ICd2YWx1ZUInLFxuICAgIGtleUM6IHtcbiAgICAgIGtleUNBOiAndmFsdWVDQU5ldycsXG4gICAgfSxcbiAgICBrZXlEOiB7XG4gICAgICBrZXlEQTogJ3ZhbHVlREFOZXcnLFxuICAgICAga2V5REI6ICd2YWx1ZURCTmV3J1xuICAgIH1cbiAgfTtcbiAgLy8gQWN0XG4gIGNvbnN0IGNvbnNvbGVMb2dTcHkgPSBqZXN0LnNweU9uKGNvbnNvbGUsICdsb2cnKTtcbiAgb3ZlcnJpZGVQcm9wcyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdChjb25zb2xlTG9nU3B5KS50b0JlQ2FsbGVkVGltZXMoMyk7XG59KTtcblxudGVzdCgnQ29uZmlybSBub2RlIHN0b3BzIGNpcmN1bGFyIHJlZmVyZW5jZSB0cmF2ZXJzYWwnLCAoKSA9PiB7XG4gIC8vIEFycmFuZ2VcbiAgY29uc3QgYSA9IHtcbiAgICBrZXlBOiAndmFsdWVBJyxcbiAgICBrZXlCOiAndmFsdWVCJyxcbiAgICBrZXlDOiAndmFsdWVDJ1xuICB9O1xuICBjb25zdCBiID0ge1xuICAgIGtleUE6ICduZXctdmFsdWVBJyxcbiAgICBrZXlEOiAndmFsdWVEJyxcbiAgICBrZXlFOiB7XG4gICAgICBub2RlOiB7fVxuICAgIH1cbiAgfTtcbiAgYi5rZXlFLm5vZGUgPSBiO1xuXG4gIGNvbnN0IGNvbnNvbGVMb2dTcHkgPSBqZXN0LnNweU9uKGNvbnNvbGUsICdsb2cnKTtcbiAgZmxhZ092ZXJyaWRkZW5EZWZhdWx0cyhhLCBiKTtcbiAgLy8gQXNzZXJ0XG4gIGV4cGVjdChjb25zb2xlTG9nU3B5KS50b0JlQ2FsbGVkVGltZXMoMSk7XG59KTtcbiJdfQ==