Skip to content

Commit 533fe69

Browse files
SK-2130 expiry date validation fix (#585)
* SK-2130 add expiry date validation fix (#584) * SK-2130 fix current expiry month invalid issue * SK-2130 unit tests for expiry date validation * SK-2130 unit tests for expiry date validation * [AUTOMATED] Release - 2.3.2-dev.b478b91 --------- Co-authored-by: skyflow-shravan <skyflow-shravan@users.noreply.github.com>
1 parent 0970d78 commit 533fe69

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "skyflow-js",
33
"preferGlobal": true,
44
"analyze": false,
5-
"version": "2.3.2",
5+
"version": "2.3.2-dev.b478b91",
66
"author": "Skyflow",
77
"description": "Skyflow JavaScript SDK",
88
"homepage": "https://github.com/skyflowapi/skyflow-js",

src/utils/validators/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,15 @@ export const validateExpiryDate = (date: string, format: string) => {
7575
if (!date.includes('/')) return false;
7676
const { month, year } = getYearAndMonthBasedOnFormat(date, format);
7777
if (format.endsWith('YYYY') && year.length !== 4) { return false; }
78-
const expiryDate = new Date(`${year}-${month}-01`);
78+
const expiryDate = new Date(year, month, 0);
79+
expiryDate.setHours(23, 59, 59, 999);
7980
const today = new Date();
8081

8182
const maxDate = new Date();
8283
maxDate.setFullYear(today.getFullYear() + 50);
84+
maxDate.setMonth(today.getMonth() + 1);
8385

84-
return expiryDate > today && expiryDate <= maxDate;
86+
return expiryDate >= today && expiryDate <= maxDate;
8587
};
8688

8789
export const validateExpiryYear = (year: string, format: string) => {

tests/utils/validators.test.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,30 @@ describe('Validation card number and Expiry Date', () => {
6565
expect(validateExpiryDate(expiryDate, "MM/YY")).toBe(false);
6666
});
6767

68+
test('validate expired date, MM/YY', () => {
69+
const currentDate = new Date();
70+
const expiryDate = `${currentDate.getMonth()}/${currentDate.getFullYear().toString().slice(-2)}`;
71+
console.log("Current Date: ", currentDate, expiryDate);
72+
73+
expect(validateExpiryDate(expiryDate, "MM/YY")).toBe(false);
74+
});
75+
76+
test('validate expiry date with current month, MM/YY', () => {
77+
const currentDate = new Date();
78+
const expiryDate = `${currentDate.getMonth()+1}/${currentDate.getFullYear().toString().slice(-2)}`;
79+
console.log("Current Date: ", currentDate, expiryDate);
80+
81+
expect(validateExpiryDate(expiryDate, "MM/YY")).toBe(true);
82+
});
83+
84+
test('validate expiry date with next month, MM/YY', () => {
85+
const currentDate = new Date();
86+
const expiryDate = `${currentDate.getMonth()+2}/${currentDate.getFullYear().toString().slice(-2)}`;
87+
console.log("Current Date: ", currentDate, expiryDate);
88+
89+
expect(validateExpiryDate(expiryDate, "MM/YY")).toBe(true);
90+
});
91+
6892
test('empty expirydateformat', () => {
6993
expect(isValidExpiryDateFormat(null)).toBe(false);
7094
})

0 commit comments

Comments
 (0)