1111use Jose \Component \Checker \IssuedAtChecker ;
1212use Jose \Component \Checker \MissingMandatoryClaimException ;
1313use Jose \Component \Checker \NotBeforeChecker ;
14+ use Jose \Tests \Component \Checker \Stub \MockClock ;
1415use PHPUnit \Framework \TestCase ;
16+ use Psr \Clock \ClockInterface ;
1517
1618/**
1719 * @internal
@@ -55,15 +57,18 @@ public function iCanCreateAClaimCheckerManager(): void
5557 */
5658 public function iCanCheckValidPayloadClaims (): void
5759 {
60+ $ clock = new MockClock ();
61+ $ now = $ clock ->now ()
62+ ->getTimestamp ();
5863 $ payload = [
59- 'exp ' => time () + 3600 ,
60- 'iat ' => time () - 1000 ,
61- 'nbf ' => time () - 100 ,
64+ 'exp ' => $ now + 3600 ,
65+ 'iat ' => $ now - 1000 ,
66+ 'nbf ' => $ now - 100 ,
6267 'foo ' => 'bar ' ,
6368 ];
6469 $ expected = $ payload ;
6570 unset($ expected ['foo ' ]);
66- $ manager = $ this ->getClaimCheckerManagerFactory ()
71+ $ manager = $ this ->getClaimCheckerManagerFactory ($ clock )
6772 ->create (['exp ' , 'iat ' , 'nbf ' , 'aud ' ]);
6873 $ result = $ manager ->check ($ payload );
6974 static ::assertSame ($ expected , $ result );
@@ -77,26 +82,29 @@ public function theMandatoryClaimsAreNotSet(): void
7782 $ this ->expectException (MissingMandatoryClaimException::class);
7883 $ this ->expectExceptionMessage ('The following claims are mandatory: bar. ' );
7984
85+ $ clock = new MockClock ();
86+ $ now = $ clock ->now ()
87+ ->getTimestamp ();
8088 $ payload = [
81- 'exp ' => time () + 3600 ,
82- 'iat ' => time () - 1000 ,
83- 'nbf ' => time () - 100 ,
89+ 'exp ' => $ now + 3600 ,
90+ 'iat ' => $ now - 1000 ,
91+ 'nbf ' => $ now - 100 ,
8492 'foo ' => 'bar ' ,
8593 ];
8694 $ expected = $ payload ;
8795 unset($ expected ['foo ' ]);
88- $ manager = $ this ->getClaimCheckerManagerFactory ()
96+ $ manager = $ this ->getClaimCheckerManagerFactory ($ clock )
8997 ->create (['exp ' , 'iat ' , 'nbf ' , 'aud ' ]);
9098 $ manager ->check ($ payload , ['exp ' , 'foo ' , 'bar ' ]);
9199 }
92100
93- private function getClaimCheckerManagerFactory (): ClaimCheckerManagerFactory
101+ private function getClaimCheckerManagerFactory (ClockInterface $ clock = new MockClock () ): ClaimCheckerManagerFactory
94102 {
95103 if ($ this ->claimCheckerManagerFactory === null ) {
96104 $ this ->claimCheckerManagerFactory = new ClaimCheckerManagerFactory ();
97- $ this ->claimCheckerManagerFactory ->add ('exp ' , new ExpirationTimeChecker ());
98- $ this ->claimCheckerManagerFactory ->add ('iat ' , new IssuedAtChecker ());
99- $ this ->claimCheckerManagerFactory ->add ('nbf ' , new NotBeforeChecker ());
105+ $ this ->claimCheckerManagerFactory ->add ('exp ' , new ExpirationTimeChecker (clock: $ clock ));
106+ $ this ->claimCheckerManagerFactory ->add ('iat ' , new IssuedAtChecker (clock: $ clock ));
107+ $ this ->claimCheckerManagerFactory ->add ('nbf ' , new NotBeforeChecker (clock: $ clock ));
100108 $ this ->claimCheckerManagerFactory ->add ('aud ' , new AudienceChecker ('My Service ' ));
101109 }
102110
0 commit comments