fix: validate duplicate operation UUIDs
This commit is contained in:
@@ -133,12 +133,20 @@ function validateSemantics(data: StatementFile): ValidationError | null {
|
||||
}
|
||||
|
||||
const fps = new Set<string>();
|
||||
const operationIds = new Set<string>();
|
||||
for (let i = 0; i < data.transactions.length; i++) {
|
||||
const fp = computeFingerprint(data.statement.accountNumber, data.transactions[i]);
|
||||
if (fps.has(fp)) {
|
||||
return { status: 422, error: 'VALIDATION_ERROR', message: `Duplicate fingerprint found within file at transaction index ${i}` };
|
||||
}
|
||||
fps.add(fp);
|
||||
const operationId = data.transactions[i].operationId;
|
||||
if (operationId) {
|
||||
if (operationIds.has(operationId.toLowerCase())) {
|
||||
return { status: 422, error: 'VALIDATION_ERROR', message: `Duplicate operationId found within file at transaction index ${i}` };
|
||||
}
|
||||
operationIds.add(operationId.toLowerCase());
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user