keyupdateddtscript
Version:
Generate DDT2k scripts for provisionning many keys
605 lines (563 loc) • 64.7 kB
text/typescript
#!/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