From ad50cdfe6c58c824d8de02516dec6d9a60fa577e Mon Sep 17 00:00:00 2001 From: Steve Cavanagh Date: Sun, 19 Apr 2015 22:54:18 -0500 Subject: [PATCH] fix(dateparser): Throw on invalid date format string. --- src/dateparser/dateparser.js | 4 ++++ src/dateparser/test/dateparser.spec.js | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/dateparser/dateparser.js b/src/dateparser/dateparser.js index eb323623b6..2b3fff5cb3 100644 --- a/src/dateparser/dateparser.js +++ b/src/dateparser/dateparser.js @@ -95,6 +95,10 @@ angular.module('ui.bootstrap.dateparser', []) format[i] = '$'; } format = format.join(''); + var dupe = format.indexOf(code[0]); + if (dupe > -1 && !(format.slice(dupe, dupe + 3) == 'ss\\')) { + throw new Error('Invalid date format string.'); + } map.push({ index: index, apply: data.apply }); } diff --git a/src/dateparser/test/dateparser.spec.js b/src/dateparser/test/dateparser.spec.js index 7ed6bb0e58..0f55724e95 100644 --- a/src/dateparser/test/dateparser.spec.js +++ b/src/dateparser/test/dateparser.spec.js @@ -173,4 +173,14 @@ describe('date parser', function () { it('should not parse if no format is specified', function() { expect(dateParser.parse('21.08.1951', '')).toBe('21.08.1951'); }); + + it('should not parse if invalid format is specified', function () { + expect(function () { + dateParser.parse('20.12.20190', 'dd.MM.yyyyy'); + }).toThrow(new Error('Invalid date format string.')); + }); + + it('should not parse if invalid value is specified', function () { + expect(dateParser.parse('20.12.20190', 'dd.MM.yyyy')).toBeUndefined(); + }); });