From 5f912a7d2074ad5b4ff567d40c68b3d025995a85 Mon Sep 17 00:00:00 2001 From: Utkarsh patwa Date: Thu, 12 Nov 2026 22:44:26 +0530 Subject: [PATCH] fix: validate integer values for appAppleId and versionExternalIdentifier --- models/AppTransaction.ts | 4 ++-- tests/unit-tests/AppTransaction.test.ts | 26 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/models/AppTransaction.ts b/models/AppTransaction.ts index d598bde..b150439 100644 --- a/models/AppTransaction.ts +++ b/models/AppTransaction.ts @@ -120,7 +120,7 @@ export class AppTransactionValidator implements Validator { if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) { return false } - if ((typeof obj['appAppleId'] !== 'undefined') && !(typeof obj['appAppleId'] === "number" || obj['appAppleId'] instanceof Number)) { + if ((typeof obj['appAppleId'] !== 'undefined') && !((typeof obj['appAppleId'] === "number" || obj['appAppleId'] instanceof Number) && Number.isInteger(obj['appAppleId'].valueOf()))) { return false } if ((typeof obj['appTransactionId'] !== 'undefined') && !(typeof obj['appTransactionId'] === "string" || obj['appTransactionId'] instanceof String)) { @@ -153,7 +153,7 @@ export class AppTransactionValidator implements Validator { if ((typeof obj['applicationVersion'] !== 'undefined') && !(typeof obj['applicationVersion'] === "string" || obj['applicationVersion'] instanceof String)) { return false } - if ((typeof obj['versionExternalIdentifier'] !== 'undefined') && !(typeof obj['versionExternalIdentifier'] === "number" || obj['versionExternalIdentifier'] instanceof Number)) { + if ((typeof obj['versionExternalIdentifier'] !== 'undefined') && !((typeof obj['versionExternalIdentifier'] === "number" || obj['versionExternalIdentifier'] instanceof Number) && Number.isInteger(obj['versionExternalIdentifier'].valueOf()))) { return false } if ((typeof obj['deviceVerification'] !== 'undefined') && !(typeof obj['deviceVerification'] === "string" || obj['deviceVerification'] instanceof String)) { diff --git a/tests/unit-tests/AppTransaction.test.ts b/tests/unit-tests/AppTransaction.test.ts index f0cb324..e6e5228 100644 --- a/tests/unit-tests/AppTransaction.test.ts +++ b/tests/unit-tests/AppTransaction.test.ts @@ -63,4 +63,30 @@ describe('AppTransaction', () => { expect(validator.validate(appTransaction)).toBe(true) }) + + it('should accept AppTransaction with valid integer appAppleId and versionExternalIdentifier', () => { + const validator = new AppTransactionValidator() + const validAppTransaction = { + appAppleId: 531412, + versionExternalIdentifier: new Number(12345), + } + + expect(validator.validate(validAppTransaction)).toBe(true) + }) + + it('should reject AppTransaction with non-integer appAppleId', () => { + const validator = new AppTransactionValidator() + + expect(validator.validate({ appAppleId: 123.45 })).toBe(false) + expect(validator.validate({ appAppleId: NaN })).toBe(false) + expect(validator.validate({ appAppleId: Infinity })).toBe(false) + }) + + it('should reject AppTransaction with non-integer versionExternalIdentifier', () => { + const validator = new AppTransactionValidator() + + expect(validator.validate({ versionExternalIdentifier: 12.34 })).toBe(false) + expect(validator.validate({ versionExternalIdentifier: NaN })).toBe(false) + expect(validator.validate({ versionExternalIdentifier: Infinity })).toBe(false) + }) })