Files
ota-admin-portal/src/utils/manifestValidation.js
John Wu 97b215ec35 Deploy to production
* Fix template function (#105)

* CEC-638 Add EK test ECU (#106)

* CEC-638 Add EK ECU

* Update test

* CEC-638 Should be EKS (#107)

* Should be EKS

* Update snapshot

* CEC-624 Display update status info and ECU (#108)

* Diplay ECU name in update status (#110)

Optimize car update status progress control
Remove car update status page test
Replace with individual component tests

* Handle case ECU is not in message (#111)

* Refresh button label (#112)

* Update ECU refresh button label

* Update snapshot

* remove

* CEC-660 Fix release notes field (#113)

* CEC-775 Manifest details component (#114)

* CEC-775 Manifest details component

* Code smells

* Fix build warning
2022-01-27 17:19:44 -08:00

102 lines
2.3 KiB
JavaScript

export const validateManifest = (data, accessToken) => {
const errors = [];
if (!accessToken || accessToken.length === 0) {
throw new Error("Access token required");
}
if (!data) {
throw new Error("Missing manifest data");
}
if (!data.name || data.name.length === 0) {
errors.push("name");
}
if (!data.version || data.version.length === 0) {
errors.push("version");
}
if (!data.description || data.description.length === 0) {
errors.push("description");
}
if (!data.release_notes || data.release_notes.length === 0) {
errors.push("release notes");
}
if (errors.length > 0)
throw new Error(`package ${errors.join(", ")} required`);
};
export const validateManifestECUs = (ecus) => {
const ecuKeys = {};
if (!ecus || ecus.length === 0) throw new Error("ECUs required");
ecus.forEach((ecu) => validateManifestECU(ecu, ecuKeys));
};
const validateManifestECU = (data, keys) => {
const errors = [];
const fileKeys = {};
if (!data) {
throw new Error("manifest ECU data required");
}
if (!data.name || data.name.length === 0) {
errors.push("name");
}
if (!data.version || data.version.length === 0) {
errors.push("version");
}
if (!data.part_number || data.part_number.length === 0) {
errors.push("part number");
}
if (!data.files || data.files.length === 0) {
errors.push("files");
}
const key = `${data.name} ${data.version} ${data.part_number}`;
if (!keys[key]) {
keys[key] = true;
} else {
throw new Error(`ECU ${key} already exists`);
}
if (errors.length > 0)
throw new Error(`ECU ${data.name} ${errors.join(", ")} required`);
data.files.forEach((file) => validateFile(data.name, file, fileKeys));
};
const validateFile = (ecu, file, keys) => {
const errors = [];
if (!file) {
throw new Error("File data required");
}
if (!file.filename || file.filename.length === 0) {
errors.push("filename");
}
if (!file.offset || file.offset.length === 0) {
errors.push("offset");
}
const key = `${file.filename} ${file.version}`;
if (!keys[key]) {
keys[key] = true;
} else {
throw new Error(`${ecu} ${key} already exists`);
}
if (errors.length > 0)
throw new Error(`${ecu} ${file.filename} ${errors.join(", ")} required`);
};