From f2e4775d4625ea1c8bf7f23fb0001d8ee11a7648 Mon Sep 17 00:00:00 2001 From: Stephen Beirlaen Date: Wed, 23 Dec 2020 16:46:28 +0100 Subject: [PATCH] Change code to comply with tests If there is no decimal part for the timestamp, return an int instead --- src/Encoding/MicrosecondBasedDateConversion.php | 11 ++++++++--- test/unit/Encoding/ChainedFormatterTest.php | 2 +- .../Encoding/MicrosecondBasedDateConversionTest.php | 6 +++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Encoding/MicrosecondBasedDateConversion.php b/src/Encoding/MicrosecondBasedDateConversion.php index 3262570a3..bcee67607 100644 --- a/src/Encoding/MicrosecondBasedDateConversion.php +++ b/src/Encoding/MicrosecondBasedDateConversion.php @@ -26,11 +26,16 @@ public function formatClaims(array $claims): array return $claims; } - /** @return float|string */ + /** @return int|float */ private function convertDate(DateTimeImmutable $date) { - $formattedTimestamp = $date->format('U.u'); + $seconds = $date->format('U'); + $microseconds = $date->format('u'); - return floatval($formattedTimestamp); + if ((int) $microseconds === 0) { + return (int) $seconds; + } + + return floatval($seconds . '.' . $microseconds); } } diff --git a/test/unit/Encoding/ChainedFormatterTest.php b/test/unit/Encoding/ChainedFormatterTest.php index 3d2a856f7..061999d71 100644 --- a/test/unit/Encoding/ChainedFormatterTest.php +++ b/test/unit/Encoding/ChainedFormatterTest.php @@ -34,6 +34,6 @@ public function formatClaimsShouldApplyAllConfiguredFormatters(): void $formatted = $formatter->formatClaims($claims); self::assertSame('test', $formatted[RegisteredClaims::AUDIENCE]); - self::assertSame('1487285080.123456', $formatted[RegisteredClaims::EXPIRATION_TIME]); + self::assertSame(1487285080.123456, $formatted[RegisteredClaims::EXPIRATION_TIME]); } } diff --git a/test/unit/Encoding/MicrosecondBasedDateConversionTest.php b/test/unit/Encoding/MicrosecondBasedDateConversionTest.php index 838cba0f5..4be0c6b51 100644 --- a/test/unit/Encoding/MicrosecondBasedDateConversionTest.php +++ b/test/unit/Encoding/MicrosecondBasedDateConversionTest.php @@ -36,8 +36,8 @@ public function dateClaimsHaveMicrosecondsOrSeconds(): void $formatted = $formatter->formatClaims($claims); self::assertSame(1487285080, $formatted[RegisteredClaims::ISSUED_AT]); - self::assertSame('1487285080.000123', $formatted[RegisteredClaims::NOT_BEFORE]); - self::assertSame('1487285080.123456', $formatted[RegisteredClaims::EXPIRATION_TIME]); + self::assertSame(1487285080.000123, $formatted[RegisteredClaims::NOT_BEFORE]); + self::assertSame(1487285080.123456, $formatted[RegisteredClaims::EXPIRATION_TIME]); self::assertSame('test', $formatted['testing']); // this should remain untouched } @@ -62,7 +62,7 @@ public function notAllDateClaimsNeedToBeConfigured(): void $formatted = $formatter->formatClaims($claims); self::assertSame(1487285080, $formatted[RegisteredClaims::ISSUED_AT]); - self::assertSame('1487285080.123456', $formatted[RegisteredClaims::EXPIRATION_TIME]); + self::assertSame(1487285080.123456, $formatted[RegisteredClaims::EXPIRATION_TIME]); self::assertSame('test', $formatted['testing']); // this should remain untouched } }