* 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
102 lines
2.3 KiB
JavaScript
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`);
|
|
};
|