UNPKG

keyupdateddtscript

Version:

Generate DDT2k scripts for provisionning many keys

605 lines (563 loc) 64.7 kB
#!/usr/bin/env jest /** @fileOverview * Script for generating scripts to make key prov * * */ (function(root) { "use strict"; /*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */ /*global document, window, escape, unescape, module, require, Uint32Array */ const path = require('path'); const fs = require('fs'); var cleanupTimer = undefined; /** * cleanup * */ const cleanup = () => { try {fs.rmSync("SONAR_nom009.script");} catch(err) {}; try {fs.rmSync("SONAR_nom010.script");} catch(err) {}; try {fs.rmSync("SONAR_err005.script");} catch(err) {}; try {fs.rmSync("SONAR_err008.script");} catch(err) {}; try {fs.rmSync("EBAM_err008.script");} catch(err) {}; try {fs.rmSync("EBAM_err011.script");} catch(err) {}; // Cleanup timer itself clearTimeout(cleanupTimer); cleanupTimer.unref(); }; /** * afterEach * * This method call allows to setup the instructions that have to be called after test * execution. It allows to cleanup the directory from all temporary tests files. */ afterEach(() => { cleanupTimer = setTimeout(cleanup, 1000); } ); var testKind = "nom"; var testNr; /** ================================================================================================== * * Test Suite #1 * * Nominal test suite */ describe("gen_update_key_script.js test suite #1: nominal test suite", () => { /** * TGUKnom001: * * $ node ./bin/gen_update_key_script.js -h */ testNr = '001'; test(`TGUK${testKind}${testNr} ts1 test: help nominal short option`, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "-h" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a2055736167653a2067656e5f7570646174655f6b65795f7363726970742e6a73205b3c4f5054494f4e533e5d203c434f4d4d414e443e205b3c415247554d454e54533e5d0a20202020202020202020202020202020205468697320636f6d6d616e642061696d732061742067656e65726174696e672073637269707420616c6c6f77696e6720746f207465737420454355206b65792020200a20202020202020202020202020202020207570646174652e20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a202020202020202020204f5054494f4e533a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d767c2d2d766572626f73652020202020202020202020202020206265206d6f726520766572626f7365207768656e2072756e6e696e672e20557365207365762d200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206572616c2074696d657320696e206f7264657220746f20726169736520766572626f736974792e0a20202020202020202020202020202020202d717c2d2d71756965742020202020202020202020202020202020626520717569657420666f72206c69737420286e6f2068656164657273292e20202020202020200a20202020202020202020434f4d4d414e44533a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d687c2d2d68656c70202020202020202020202020202020202020646973706c617920746869732068656c70206d6573736167652e202020202020202020202020200a20202020202020202020202020202020202d737c2d2d7363726970742020202020202020202020202020202067656e6572617465206b657920757064617465207363726970742e2020202020202020202020200a20202020202020202020202020202020202d6c7c2d2d6c6973742020202020202020202020202020202020206c697374206b6e6f776e204d4143206563752e20202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020415247554d454e54533a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d6f7c2d2d6f75747075745b3d5d3c66696c653e7c2d20202020206e616d65206f6620746865206f7574707574207363726970742066696c652e20496620272d27200a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202069732070726f76696465642c207374646f757420697320757365642e2044656661756c742020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206973207374646f75742e20202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d777c2d2d776169745b3d5d5b3c574149542d54494d453e5d202074696d6520746f2077616974206265747765656e206561636820636f6d6d616e6420696e2020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206d732e2044656661756c74206973203530302e20202020202020202020202020202020202020200a20202020202020202020202020202020202d657c2d2d6563755b3d5d3c4543552d4e414d453e202020202020746865206e616d65206f66207468652045435520666f72207768696368207468652020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020207363726970742069732067656e6572617465642e202020202020202020202020202020202020200a20202020202020202020202020202020202d6e7c2d2d6e756d5b3d5d3c4e425f54455354533e202020202020746865206e756d626572206f66206b6579207570646174652074657374732e20202020202020200a20202020202020202020202020202020202d437c2d2d6369645b3d5d3c4349445f76616c75653e20202020204349442076616c756520617420776869636820746f2073746172742070726f762e2020202020200a20202020202020202020202020202020202d4f7c2d2d6f7665727772697465202020202020202020202020206f7665727772697465206f75747075742066696c652069662066696c6520616c726561647920200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206578697374732e20202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a436f7079726967687420c2a920323032332052454e41554c542047524f5550202f2052c3a96d6920434f48454e205343414c49203c72656d692e636f68656e2d7363616c694072656e61756c742e636f6d3e2020200a"); expect(subproc.stderr.toString('hex')).toBe(""); } ); /** * TGUKnom002: * * $ node ./bin/gen_update_key_script.js --help */ testNr = '002'; test(`TGUK${testKind}${testNr}: help nominal long option`, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "--help" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a2055736167653a2067656e5f7570646174655f6b65795f7363726970742e6a73205b3c4f5054494f4e533e5d203c434f4d4d414e443e205b3c415247554d454e54533e5d0a20202020202020202020202020202020205468697320636f6d6d616e642061696d732061742067656e65726174696e672073637269707420616c6c6f77696e6720746f207465737420454355206b65792020200a20202020202020202020202020202020207570646174652e20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a202020202020202020204f5054494f4e533a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d767c2d2d766572626f73652020202020202020202020202020206265206d6f726520766572626f7365207768656e2072756e6e696e672e20557365207365762d200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206572616c2074696d657320696e206f7264657220746f20726169736520766572626f736974792e0a20202020202020202020202020202020202d717c2d2d71756965742020202020202020202020202020202020626520717569657420666f72206c69737420286e6f2068656164657273292e20202020202020200a20202020202020202020434f4d4d414e44533a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d687c2d2d68656c70202020202020202020202020202020202020646973706c617920746869732068656c70206d6573736167652e202020202020202020202020200a20202020202020202020202020202020202d737c2d2d7363726970742020202020202020202020202020202067656e6572617465206b657920757064617465207363726970742e2020202020202020202020200a20202020202020202020202020202020202d6c7c2d2d6c6973742020202020202020202020202020202020206c697374206b6e6f776e204d4143206563752e20202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020415247554d454e54533a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d6f7c2d2d6f75747075745b3d5d3c66696c653e7c2d20202020206e616d65206f6620746865206f7574707574207363726970742066696c652e20496620272d27200a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202069732070726f76696465642c207374646f757420697320757365642e2044656661756c742020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206973207374646f75742e20202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d777c2d2d776169745b3d5d5b3c574149542d54494d453e5d202074696d6520746f2077616974206265747765656e206561636820636f6d6d616e6420696e2020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206d732e2044656661756c74206973203530302e20202020202020202020202020202020202020200a20202020202020202020202020202020202d657c2d2d6563755b3d5d3c4543552d4e414d453e202020202020746865206e616d65206f66207468652045435520666f72207768696368207468652020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020207363726970742069732067656e6572617465642e202020202020202020202020202020202020200a20202020202020202020202020202020202d6e7c2d2d6e756d5b3d5d3c4e425f54455354533e202020202020746865206e756d626572206f66206b6579207570646174652074657374732e20202020202020200a20202020202020202020202020202020202d437c2d2d6369645b3d5d3c4349445f76616c75653e20202020204349442076616c756520617420776869636820746f2073746172742070726f762e2020202020200a20202020202020202020202020202020202d4f7c2d2d6f7665727772697465202020202020202020202020206f7665727772697465206f75747075742066696c652069662066696c6520616c726561647920200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206578697374732e20202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a436f7079726967687420c2a920323032332052454e41554c542047524f5550202f2052c3a96d6920434f48454e205343414c49203c72656d692e636f68656e2d7363616c694072656e61756c742e636f6d3e2020200a"); expect(subproc.stderr.toString('hex')).toBe(""); } ); /** * TGUKnom003: * * $ node ./bin/gen_update_key_script.js -l */ testNr = '003'; test(`TGUK${testKind}${testNr}: list ecu nominal short option`, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "-l" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe("45435520202020207c204164647220207c20526573702e2052657120097c2044657363720a2d2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a534f4e4152097c203134097c207472756509097c205061726b696e6720536f6e6172202f2041696465206175207061726b696e670a41444153097c203137097c2066616c736509097c2041444153205375620a45434d097c203231097c2066616c736509097c2045434d5f32393a20456e67696e6520436f6e74726f6c204d6f64756c655f3239626974730a41544355097c203234097c2066616c736509097c204175746f6d617469632047656172426f7820323920626974730a43444d097c203337097c2066616c736509097c20496e74656772617465642044796e616d69637320436f6e74726f6c204d6f64756c650a42434d097c203338097c2066616c736509097c20426f647920436f6e74726f6c204d6f64756c650a41564d097c203937097c2066616c736509097c2041564d0a465243414d097c203938097c2066616c736509097c2046726f6e742043414d4552410a48455643097c20323138097c2066616c736509097c20284829204556432d48434d2d56434d5f3239623a2056656869636c6520436f6e74726f6c204d6f64756c655f3239626974732f2056656869636c6520436f6e74726f6c204d6f64756c655f3239626974730a"); expect(subproc.stderr.toString('hex')).toBe(""); } ); /** * TGUKnom004: * * $ node ./bin/gen_update_key_script.js --list */ testNr = '004'; test(`TGUK${testKind}${testNr}: list ecu nominal long option`, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "--list" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe("45435520202020207c204164647220207c20526573702e2052657120097c2044657363720a2d2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a534f4e4152097c203134097c207472756509097c205061726b696e6720536f6e6172202f2041696465206175207061726b696e670a41444153097c203137097c2066616c736509097c2041444153205375620a45434d097c203231097c2066616c736509097c2045434d5f32393a20456e67696e6520436f6e74726f6c204d6f64756c655f3239626974730a41544355097c203234097c2066616c736509097c204175746f6d617469632047656172426f7820323920626974730a43444d097c203337097c2066616c736509097c20496e74656772617465642044796e616d69637320436f6e74726f6c204d6f64756c650a42434d097c203338097c2066616c736509097c20426f647920436f6e74726f6c204d6f64756c650a41564d097c203937097c2066616c736509097c2041564d0a465243414d097c203938097c2066616c736509097c2046726f6e742043414d4552410a48455643097c20323138097c2066616c736509097c20284829204556432d48434d2d56434d5f3239623a2056656869636c6520436f6e74726f6c204d6f64756c655f3239626974732f2056656869636c6520436f6e74726f6c204d6f64756c655f3239626974730a"); expect(subproc.stderr.toString('hex')).toBe(""); } ); /** * TGUKnom005: * * $ node ./bin/gen_update_key_script.js -v -h */ testNr = '005'; test(`TGUK${testKind}${testNr}: help nominal short option`, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "-v", "-h" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a20766572626f7369747920282d762920696e6372656173656420746f20310a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a2048656c70207265717565737465642e0a67656e5f7570646174655f6b65795f7363726970742e6a733a2055736167653a2067656e5f7570646174655f6b65795f7363726970742e6a73205b3c4f5054494f4e533e5d203c434f4d4d414e443e205b3c415247554d454e54533e5d0a20202020202020202020202020202020205468697320636f6d6d616e642061696d732061742067656e65726174696e672073637269707420616c6c6f77696e6720746f207465737420454355206b65792020200a20202020202020202020202020202020207570646174652e20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a202020202020202020204f5054494f4e533a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d767c2d2d766572626f73652020202020202020202020202020206265206d6f726520766572626f7365207768656e2072756e6e696e672e20557365207365762d200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206572616c2074696d657320696e206f7264657220746f20726169736520766572626f736974792e0a20202020202020202020202020202020202d717c2d2d71756965742020202020202020202020202020202020626520717569657420666f72206c69737420286e6f2068656164657273292e20202020202020200a20202020202020202020434f4d4d414e44533a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d687c2d2d68656c70202020202020202020202020202020202020646973706c617920746869732068656c70206d6573736167652e202020202020202020202020200a20202020202020202020202020202020202d737c2d2d7363726970742020202020202020202020202020202067656e6572617465206b657920757064617465207363726970742e2020202020202020202020200a20202020202020202020202020202020202d6c7c2d2d6c6973742020202020202020202020202020202020206c697374206b6e6f776e204d4143206563752e20202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020415247554d454e54533a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d6f7c2d2d6f75747075745b3d5d3c66696c653e7c2d20202020206e616d65206f6620746865206f7574707574207363726970742066696c652e20496620272d27200a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202069732070726f76696465642c207374646f757420697320757365642e2044656661756c742020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206973207374646f75742e20202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d777c2d2d776169745b3d5d5b3c574149542d54494d453e5d202074696d6520746f2077616974206265747765656e206561636820636f6d6d616e6420696e2020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206d732e2044656661756c74206973203530302e20202020202020202020202020202020202020200a20202020202020202020202020202020202d657c2d2d6563755b3d5d3c4543552d4e414d453e202020202020746865206e616d65206f66207468652045435520666f72207768696368207468652020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020207363726970742069732067656e6572617465642e202020202020202020202020202020202020200a20202020202020202020202020202020202d6e7c2d2d6e756d5b3d5d3c4e425f54455354533e202020202020746865206e756d626572206f66206b6579207570646174652074657374732e20202020202020200a20202020202020202020202020202020202d437c2d2d6369645b3d5d3c4349445f76616c75653e20202020204349442076616c756520617420776869636820746f2073746172742070726f762e2020202020200a20202020202020202020202020202020202d4f7c2d2d6f7665727772697465202020202020202020202020206f7665727772697465206f75747075742066696c652069662066696c6520616c726561647920200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206578697374732e20202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a436f7079726967687420c2a920323032332052454e41554c542047524f5550202f2052c3a96d6920434f48454e205343414c49203c72656d692e636f68656e2d7363616c694072656e61756c742e636f6d3e2020200a"); expect(subproc.stderr.toString('hex')).toBe(""); } ); /** * TGUKnom006: * * $ node ./bin/gen_update_key_script.js --verbose --help */ testNr = '006'; test(`TGUK${testKind}${testNr}: verbose help nominal long option`, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "--verbose", "--help" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a20766572626f7369747920282d762920696e6372656173656420746f20310a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a2048656c70207265717565737465642e0a67656e5f7570646174655f6b65795f7363726970742e6a733a2055736167653a2067656e5f7570646174655f6b65795f7363726970742e6a73205b3c4f5054494f4e533e5d203c434f4d4d414e443e205b3c415247554d454e54533e5d0a20202020202020202020202020202020205468697320636f6d6d616e642061696d732061742067656e65726174696e672073637269707420616c6c6f77696e6720746f207465737420454355206b65792020200a20202020202020202020202020202020207570646174652e20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a202020202020202020204f5054494f4e533a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d767c2d2d766572626f73652020202020202020202020202020206265206d6f726520766572626f7365207768656e2072756e6e696e672e20557365207365762d200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206572616c2074696d657320696e206f7264657220746f20726169736520766572626f736974792e0a20202020202020202020202020202020202d717c2d2d71756965742020202020202020202020202020202020626520717569657420666f72206c69737420286e6f2068656164657273292e20202020202020200a20202020202020202020434f4d4d414e44533a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d687c2d2d68656c70202020202020202020202020202020202020646973706c617920746869732068656c70206d6573736167652e202020202020202020202020200a20202020202020202020202020202020202d737c2d2d7363726970742020202020202020202020202020202067656e6572617465206b657920757064617465207363726970742e2020202020202020202020200a20202020202020202020202020202020202d6c7c2d2d6c6973742020202020202020202020202020202020206c697374206b6e6f776e204d4143206563752e20202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020415247554d454e54533a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d6f7c2d2d6f75747075745b3d5d3c66696c653e7c2d20202020206e616d65206f6620746865206f7574707574207363726970742066696c652e20496620272d27200a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202069732070726f76696465642c207374646f757420697320757365642e2044656661756c742020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206973207374646f75742e20202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d777c2d2d776169745b3d5d5b3c574149542d54494d453e5d202074696d6520746f2077616974206265747765656e206561636820636f6d6d616e6420696e2020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206d732e2044656661756c74206973203530302e20202020202020202020202020202020202020200a20202020202020202020202020202020202d657c2d2d6563755b3d5d3c4543552d4e414d453e202020202020746865206e616d65206f66207468652045435520666f72207768696368207468652020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020207363726970742069732067656e6572617465642e202020202020202020202020202020202020200a20202020202020202020202020202020202d6e7c2d2d6e756d5b3d5d3c4e425f54455354533e202020202020746865206e756d626572206f66206b6579207570646174652074657374732e20202020202020200a20202020202020202020202020202020202d437c2d2d6369645b3d5d3c4349445f76616c75653e20202020204349442076616c756520617420776869636820746f2073746172742070726f762e2020202020200a20202020202020202020202020202020202d4f7c2d2d6f7665727772697465202020202020202020202020206f7665727772697465206f75747075742066696c652069662066696c6520616c726561647920200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206578697374732e20202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a436f7079726967687420c2a920323032332052454e41554c542047524f5550202f2052c3a96d6920434f48454e205343414c49203c72656d692e636f68656e2d7363616c694072656e61756c742e636f6d3e2020200a"); expect(subproc.stderr.toString('hex')).toBe(""); } ); /** * TGUKnom007: * * $ node ./bin/gen_update_key_script.js -v -l */ testNr = '007'; test(`TGUK${testKind}${testNr}: verbose list ecu nominal short option`, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "-v", "-l" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a20766572626f7369747920282d762920696e6372656173656420746f20310a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a206c69737420282d6c2920454355207265717565737465640a45435520202020207c204164647220207c20526573702e2052657120097c2044657363720a2d2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a534f4e4152097c203134097c207472756509097c205061726b696e6720536f6e6172202f2041696465206175207061726b696e670a41444153097c203137097c2066616c736509097c2041444153205375620a45434d097c203231097c2066616c736509097c2045434d5f32393a20456e67696e6520436f6e74726f6c204d6f64756c655f3239626974730a41544355097c203234097c2066616c736509097c204175746f6d617469632047656172426f7820323920626974730a43444d097c203337097c2066616c736509097c20496e74656772617465642044796e616d69637320436f6e74726f6c204d6f64756c650a42434d097c203338097c2066616c736509097c20426f647920436f6e74726f6c204d6f64756c650a41564d097c203937097c2066616c736509097c2041564d0a465243414d097c203938097c2066616c736509097c2046726f6e742043414d4552410a48455643097c20323138097c2066616c736509097c20284829204556432d48434d2d56434d5f3239623a2056656869636c6520436f6e74726f6c204d6f64756c655f3239626974732f2056656869636c6520436f6e74726f6c204d6f64756c655f3239626974730a"); expect(subproc.stderr.toString('hex')).toBe(""); } ); /** * TGUKnom008: * * $ node ./bin/gen_update_key_script.js --verbose --list */ testNr = '008'; test(`TGUK${testKind}${testNr}: verbose list ecu nominal long option`, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "--verbose", "--list" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a20766572626f7369747920282d762920696e6372656173656420746f20310a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a206c69737420282d6c2920454355207265717565737465640a45435520202020207c204164647220207c20526573702e2052657120097c2044657363720a2d2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a534f4e4152097c203134097c207472756509097c205061726b696e6720536f6e6172202f2041696465206175207061726b696e670a41444153097c203137097c2066616c736509097c2041444153205375620a45434d097c203231097c2066616c736509097c2045434d5f32393a20456e67696e6520436f6e74726f6c204d6f64756c655f3239626974730a41544355097c203234097c2066616c736509097c204175746f6d617469632047656172426f7820323920626974730a43444d097c203337097c2066616c736509097c20496e74656772617465642044796e616d69637320436f6e74726f6c204d6f64756c650a42434d097c203338097c2066616c736509097c20426f647920436f6e74726f6c204d6f64756c650a41564d097c203937097c2066616c736509097c2041564d0a465243414d097c203938097c2066616c736509097c2046726f6e742043414d4552410a48455643097c20323138097c2066616c736509097c20284829204556432d48434d2d56434d5f3239623a2056656869636c6520436f6e74726f6c204d6f64756c655f3239626974732f2056656869636c6520436f6e74726f6c204d6f64756c655f3239626974730a"); expect(subproc.stderr.toString('hex')).toBe(""); } ); /** * TGUKnom009: * * $ node ./bin/gen_update_key_script.js --script --ecu SONAR -o SONAR_nom009.script */ testNr = '009'; test(`TGUK${testKind}${testNr}: overwrite SONAR test file`, () => { let testerr = false; const scriptFile = `SONAR_${testKind}${testNr}.script`; const {spawnSync} = require("node:child_process"); let openres; try { openres = fs.openSync(scriptFile, 'w', 0o666); fs.closeSync(openres); } catch (err) { console.error("error: %s: cannot create test file", err); testerr = true; } expect(testerr).toBe(false); if (!testerr) { const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "--script", "--ecu", "SONAR", "-o", scriptFile, "-O" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe(""); expect(subproc.stderr.toString('hex')).toBe(""); } }); /** * TGUKnom010: * * $ node ./bin/gen_update_key_script.js --verbose --script --ecu SONAR -o SONAR_nom010.script -O */ testNr = '010'; test(`TGUK${testKind}${testNr}: overwrite SONAR test file`, () => { let testerr = false; const scriptFile = `SONAR_${testKind}${testNr}.script`; const {spawnSync} = require("node:child_process"); let openres; try { openres = fs.openSync(scriptFile, 'w', 0o666); fs.closeSync(openres); } catch (err) { console.error("error: %s: cannot create test file", err); testerr = true; } expect(testerr).toBe(false); if (!testerr) { const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "--verbose", "--script", "--ecu", "SONAR", "-o", scriptFile, "-O" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a20766572626f7369747920282d762920696e6372656173656420746f20310a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a2073637269707420282d7329207265717565737465640a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a2045435520282d65292073657420746f2027534f4e4152272e0a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a204f75747075742066696c6520282d6f292073657420746f2027534f4e41525f6572723030382e736372697074272e0a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a204f766572777269746520282d4f2920666c6167207265717565737465642e0a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a207363726970742066696c652027534f4e41525f6572723030382e73637269707427207772697474656e2e0a"); expect(subproc.stderr.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a207761726e696e673a2043494420776173206e6f742070726f7669646564202120496d706c696369742043494420757365642061742076616c7565203120210a"); } }); /** * TGUKnom011: * * $ node ./bin/gen_update_key_script.js --verbose --script --ecu SONAR -o SONAR_nom010.script -O */ testNr = '011'; test(`TGUK${testKind}${testNr}: write EBAM test file`, () => { let testerr = false; const scriptFile = `EBAM_${testKind}${testNr}.script`; const {spawnSync} = require("node:child_process"); let openres; try { openres = fs.openSync(scriptFile, 'w', 0o666); fs.closeSync(openres); } catch (err) { console.error("error: %s: cannot create test file", err); testerr = true; } expect(testerr).toBe(false); if (!testerr) { const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "--verbose", "--script", "--ecu", "EBAM", "-o", scriptFile, "-O" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x00); expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a20766572626f7369747920282d762920696e6372656173656420746f20310a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a2073637269707420282d7329207265717565737465640a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a2045435520282d65292073657420746f20274542414d272e0a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a204f75747075742066696c6520282d6f292073657420746f20274542414d5f6572723030382e736372697074272e0a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a204f766572777269746520282d4f2920666c6167207265717565737465642e0a67656e5f7570646174655f6b65795f7363726970742e6a733a20696e666f3a207363726970742066696c6520274542414d5f6572723030382e73637269707427207772697474656e2e0a"); expect(subproc.stderr.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a207761726e696e673a2043494420776173206e6f742070726f7669646564202120496d706c696369742043494420757365642061742076616c7565203120210a"); } }); }); /** ================================================================================================== * * Test Suite #2 * * Error test suite */ describe("KeyUpdateDDTScript test suite #2: error test suite", () => { /** * TGUKerr001: * * $ node ./bin/gen_update_key_script.js */ testNr = '001'; testKind = "err"; test(`TGUK${testKind}${testNr} ts2 test: missing args`, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x05); /** => STDOUT * gen_update_key_script.js: Usage: gen_update_key_script.js [<OPTIONS>] <COMMAND> [<ARGUMENTS>] * This command aims at generating script allowing to test ECU key * update. * OPTIONS: * -v|--verbose be more verbose when running. Use sev- * eral times in order to raise verbosity. * COMMANDS: * -h|--help display this help message. * -l|--list list known MAC ecu. * * ARGUMENTS: * -o|--output[=]<file>|- name of the output script file. If '-' * is provided, stdout is used. Default * is stdout. * -w|--wait[=][<WAIT-TIME>] time to wait between each command in * ms. Default is 500. * -e|--ecu[=]<ECU-NAME> the name of the ECU for which the * script is generated. * * * Copyright © 2023 RENAULT GROUP / Rémi COHEN SCALI <remi.cohen-scali@renault.com> */ expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a2055736167653a2067656e5f7570646174655f6b65795f7363726970742e6a73205b3c4f5054494f4e533e5d203c434f4d4d414e443e205b3c415247554d454e54533e5d0a20202020202020202020202020202020205468697320636f6d6d616e642061696d732061742067656e65726174696e672073637269707420616c6c6f77696e6720746f207465737420454355206b65792020200a20202020202020202020202020202020207570646174652e20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a202020202020202020204f5054494f4e533a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d767c2d2d766572626f73652020202020202020202020202020206265206d6f726520766572626f7365207768656e2072756e6e696e672e20557365207365762d200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206572616c2074696d657320696e206f7264657220746f20726169736520766572626f736974792e0a20202020202020202020202020202020202d717c2d2d71756965742020202020202020202020202020202020626520717569657420666f72206c69737420286e6f2068656164657273292e20202020202020200a20202020202020202020434f4d4d414e44533a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d687c2d2d68656c70202020202020202020202020202020202020646973706c617920746869732068656c70206d6573736167652e202020202020202020202020200a20202020202020202020202020202020202d737c2d2d7363726970742020202020202020202020202020202067656e6572617465206b657920757064617465207363726970742e2020202020202020202020200a20202020202020202020202020202020202d6c7c2d2d6c6973742020202020202020202020202020202020206c697374206b6e6f776e204d4143206563752e20202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020415247554d454e54533a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d6f7c2d2d6f75747075745b3d5d3c66696c653e7c2d20202020206e616d65206f6620746865206f7574707574207363726970742066696c652e20496620272d27200a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202069732070726f76696465642c207374646f757420697320757365642e2044656661756c742020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206973207374646f75742e20202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202d777c2d2d776169745b3d5d5b3c574149542d54494d453e5d202074696d6520746f2077616974206265747765656e206561636820636f6d6d616e6420696e2020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206d732e2044656661756c74206973203530302e20202020202020202020202020202020202020200a20202020202020202020202020202020202d657c2d2d6563755b3d5d3c4543552d4e414d453e202020202020746865206e616d65206f66207468652045435520666f72207768696368207468652020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020207363726970742069732067656e6572617465642e202020202020202020202020202020202020200a20202020202020202020202020202020202d6e7c2d2d6e756d5b3d5d3c4e425f54455354533e202020202020746865206e756d626572206f66206b6579207570646174652074657374732e20202020202020200a20202020202020202020202020202020202d437c2d2d6369645b3d5d3c4349445f76616c75653e20202020204349442076616c756520617420776869636820746f2073746172742070726f762e2020202020200a20202020202020202020202020202020202d4f7c2d2d6f7665727772697465202020202020202020202020206f7665727772697465206f75747075742066696c652069662066696c6520616c726561647920200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020206578697374732e20202020202020202020202020202020202020202020202020202020202020200a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020200a436f7079726967687420c2a920323032332052454e41554c542047524f5550202f2052c3a96d6920434f48454e205343414c49203c72656d692e636f68656e2d7363616c694072656e61756c742e636f6d3e2020200a"); expect(subproc.stderr.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a206572726f723a206d697373696e6720636f6d6d616e642061726720282d73206f72202d6c290a"); }); /** * TGUKerr002: * * $ node ./bin/gen_update_key_script.js -s -e UNKNOWN */ testNr = '002'; test(`TGUK${testKind}${testNr} ts2 test: `, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "-s", "-e", "UNKNOWN" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x04); /** => STDOUT * gen_update_key_script.js: error: Error: ECU 'UNKNOWN' not found * at new KeyUpdateDDTScript (C:\Users\a047461\OneDrive - Alliance\Sources\MAC\all_mac\KeyUpdateDDTScript\index.js:144:10) * at C:\Users\a047461\OneDrive - Alliance\Sources\MAC\all_mac\KeyUpdateDDTScript\bin\gen_update_key_script.js:202:17 * at Object.<anonymous> (C:\Users\a047461\OneDrive - Alliance\Sources\MAC\all_mac\KeyUpdateDDTScript\bin\gen_update_key_script.js:238:3) * at Module._compile (node:internal/modules/cjs/loader:1126:14) * at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10) * at Module.load (node:internal/modules/cjs/loader:1004:32) * at Function.Module._load (node:internal/modules/cjs/loader:839:12) * at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) * at node:internal/main/run_main_module:17:47! Use -l for listing ECUs! */ expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a206572726f723a204572726f723a204543552027554e4b4e4f574e27206e6f7420666f756e640a202020206174206e6577204b65795570646174654444545363726970742028433a5c55736572735c613034373436315c4f6e654472697665202d20416c6c69616e63655c536f75726365735c4d41435c616c6c5f6d61635c4b65795570646174654444545363726970745c696e6465782e6a733a3134393a3130290a20202020617420433a5c55736572735c613034373436315c4f6e654472697665202d20416c6c69616e63655c536f75726365735c4d41435c616c6c5f6d61635c4b65795570646174654444545363726970745c62696e5c67656e5f7570646174655f6b65795f7363726970742e6a733a3234303a31370a202020206174204f626a6563742e3c616e6f6e796d6f75733e2028433a5c55736572735c613034373436315c4f6e654472697665202d20416c6c69616e63655c536f75726365735c4d41435c616c6c5f6d61635c4b65795570646174654444545363726970745c62696e5c67656e5f7570646174655f6b65795f7363726970742e6a733a3239373a33290a202020206174204d6f64756c652e5f636f6d70696c6520286e6f64653a696e7465726e616c2f6d6f64756c65732f636a732f6c6f616465723a313536323a3134290a202020206174204f626a6563742e2e6a7320286e6f64653a696e7465726e616c2f6d6f64756c65732f636a732f6c6f616465723a313639393a3130290a202020206174204d6f64756c652e6c6f616420286e6f64653a696e7465726e616c2f6d6f64756c65732f636a732f6c6f616465723a313331333a3332290a2020202061742046756e6374696f6e2e5f6c6f616420286e6f64653a696e7465726e616c2f6d6f64756c65732f636a732f6c6f616465723a313132333a3132290a2020202061742054726163696e674368616e6e656c2e747261636553796e6320286e6f64653a646961676e6f73746963735f6368616e6e656c3a3332323a3134290a20202020617420777261704d6f64756c654c6f616420286e6f64653a696e7465726e616c2f6d6f64756c65732f636a732f6c6f616465723a3231373a3234290a2020202061742046756e6374696f6e2e6578656375746555736572456e747279506f696e74205b61732072756e4d61696e5d20286e6f64653a696e7465726e616c2f6d6f64756c65732f72756e5f6d61696e3a3137303a35292120557365202d6c20666f72206c697374696e672045435573210a"); expect(subproc.stderr.toString('hex')).toBe(""); }); /** * TGUKerr003: * * $ node ./bin/gen_update_key_script.js --script --ecu UNKNOWN */ testNr = '003'; test(`TGUK${testKind}${testNr} ts2 test: `, () => { const {spawnSync} = require("node:child_process"); const subproc = spawnSync( "node", [ "./bin/gen_update_key_script.js", "--script", "--ecu", "UNKNOWN" ], { stdio: [ 0, 'pipe', 'pipe' ] } ); expect(subproc.status).toBe(0x04); /** => STDOUT * gen_update_key_script.js: error: Error: ECU 'UNKNOWN' not found * at new KeyUpdateDDTScript (C:\Users\a047461\OneDrive - Alliance\Sources\MAC\all_mac\KeyUpdateDDTScript\index.js:144:10) * at C:\Users\a047461\OneDrive - Alliance\Sources\MAC\all_mac\KeyUpdateDDTScript\bin\gen_update_key_script.js:202:17 * at Object.<anonymous> (C:\Users\a047461\OneDrive - Alliance\Sources\MAC\all_mac\KeyUpdateDDTScript\bin\gen_update_key_script.js:238:3) * at Module._compile (node:internal/modules/cjs/loader:1126:14) * at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10) * at Module.load (node:internal/modules/cjs/loader:1004:32) * at Function.Module._load (node:internal/modules/cjs/loader:839:12) * at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) * at node:internal/main/run_main_module:17:47! Use -l for listing ECUs! */ expect(subproc.stdout.toString('hex')).toBe("67656e5f7570646174655f6b65795f7363726970742e6a733a206572726f723a204572726f723a204543552027554e4b4e4f574e27206e6f7420666f756e640a202020206174206e6577204b65795570646174654444545363726970742028433a5c55736572735c613034373436315