Skip to content

Commit c4ebcd9

Browse files
agchan12henriquemoody
authored andcommitted
Increase CanValidateDateTimeTest invalid data test coverage
This change is to ensure `Respect\Validation` is intentional about the DateTime formats. For context the [ISO 8601][] standard says that we shouldn't accept `-00:00` (or anything similar) offsets. I noticed that there was an a [change][] in how `CanValidateDateTime.php` behaved from v2.2 to v2.3. Prior to v2.3 date time formats of `2018-01-30T19:04:35-00:00` (note the -00:00) would pass validation. After updating to v2.3 the format is not accepted. This is because the `DateTime::createFromFormat` accepts the `$value` of `2018-01-30T19:04:35-00:00` but internally converts the `-00:00` to `+00:00` ``` $formattedDate = DateTime::createFromFormat( $format, $value, new DateTimeZone(date_default_timezone_get()) ); ``` This in turn causes the validation around `$value !== $formattedDate->format($format))` to fail ``` if ($formattedDate === false || $value !== $formattedDate->format($format)) { return false; } ``` [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601#Other_time_offset_specifications [change]: 5fe4b96
1 parent de9e310 commit c4ebcd9

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

tests/unit/Helpers/CanValidateDateTimeTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ public static function providerForInvalidDateTime(): array
6464
['Y-m-d', '0000-00-31'],
6565
['Y-m-d', '0000-12-00'],
6666
['Y-m-d H:i:s', '1987-12-31'],
67+
['c', '2018-01-30T19:04:35-00:00'],
68+
['Y-m-d\TH:i:sP', '2018-01-30T19:04:35-00:00'],
69+
['r', 'Tue, 30 Jan 2018 19:06:01 -0000'],
70+
['D, d M Y H:i:s O', 'Tue, 30 Jan 2018 19:06:01 -0000'],
6771
];
6872
}
6973
}

0 commit comments

Comments
 (0)