@@ -76,6 +76,9 @@ public function testValidToken()
7676        $ this assertSame ($ decodedmessage , 'abc ' );
7777    }
7878
79+     /** 
80+      * @runInSeparateProcess 
81+      */ 
7982    public  function  testValidTokenWithLeeway ()
8083    {
8184        JWT ::$ leeway60 ;
@@ -86,9 +89,11 @@ public function testValidTokenWithLeeway()
8689        $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
8790        $ decodedJWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
8891        $ this assertSame ($ decodedmessage , 'abc ' );
89-         JWT ::$ leeway0 ;
9092    }
9193
94+     /** 
95+      * @runInSeparateProcess 
96+      */ 
9297    public  function  testExpiredTokenWithLeeway ()
9398    {
9499        JWT ::$ leeway60 ;
@@ -100,7 +105,6 @@ public function testExpiredTokenWithLeeway()
100105        $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
101106        $ decodedJWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
102107        $ this assertSame ($ decodedmessage , 'abc ' );
103-         JWT ::$ leeway0 ;
104108    }
105109
106110    public  function  testValidTokenWithNbf ()
@@ -116,6 +120,9 @@ public function testValidTokenWithNbf()
116120        $ this assertSame ($ decodedmessage , 'abc ' );
117121    }
118122
123+     /** 
124+      * @runInSeparateProcess 
125+      */ 
119126    public  function  testValidTokenWithNbfLeeway ()
120127    {
121128        JWT ::$ leeway60 ;
@@ -126,9 +133,11 @@ public function testValidTokenWithNbfLeeway()
126133        $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
127134        $ decodedJWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
128135        $ this assertSame ($ decodedmessage , 'abc ' );
129-         JWT ::$ leeway0 ;
130136    }
131137
138+     /** 
139+      * @runInSeparateProcess 
140+      */ 
132141    public  function  testInvalidTokenWithNbfLeeway ()
133142    {
134143        JWT ::$ leeway60 ;
@@ -139,9 +148,45 @@ public function testInvalidTokenWithNbfLeeway()
139148        $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
140149        $ this expectException (BeforeValidException::class);
141150        JWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
142-         JWT ::$ leeway0 ;
143151    }
144152
153+     public  function  testValidTokenWithNbfIgnoresIat ()
154+     {
155+         $ payload
156+             'message '  => 'abc ' ,
157+             'nbf '  => time () - 20 , // time in the future 
158+             'iat '  => time () + 20 , // time in the past 
159+         ];
160+         $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
161+         $ decodedJWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
162+         $ this assertEquals ('abc ' , $ decodedmessage );
163+     }
164+ 
165+     public  function  testValidTokenWithNbfMicrotime ()
166+     {
167+         $ payload
168+             'message '  => 'abc ' ,
169+             'nbf '  => microtime (true ), // use microtime 
170+         ];
171+         $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
172+         $ decodedJWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
173+         $ this assertEquals ('abc ' , $ decodedmessage );
174+     }
175+ 
176+     public  function  testInvalidTokenWithNbfMicrotime ()
177+     {
178+         $ this expectException (BeforeValidException::class);
179+         $ payload
180+             'message '  => 'abc ' ,
181+             'nbf '  => microtime (true ) + 20 , // use microtime in the future 
182+         ];
183+         $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
184+         JWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
185+     }
186+ 
187+     /** 
188+      * @runInSeparateProcess 
189+      */ 
145190    public  function  testValidTokenWithIatLeeway ()
146191    {
147192        JWT ::$ leeway60 ;
@@ -152,9 +197,11 @@ public function testValidTokenWithIatLeeway()
152197        $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
153198        $ decodedJWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
154199        $ this assertSame ($ decodedmessage , 'abc ' );
155-         JWT ::$ leeway0 ;
156200    }
157201
202+     /** 
203+      * @runInSeparateProcess 
204+      */ 
158205    public  function  testInvalidTokenWithIatLeeway ()
159206    {
160207        JWT ::$ leeway60 ;
@@ -165,7 +212,28 @@ public function testInvalidTokenWithIatLeeway()
165212        $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
166213        $ this expectException (BeforeValidException::class);
167214        JWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
168-         JWT ::$ leeway0 ;
215+     }
216+ 
217+     public  function  testValidTokenWithIatMicrotime ()
218+     {
219+         $ payload
220+             'message '  => 'abc ' ,
221+             'iat '  => microtime (true ), // use microtime 
222+         ];
223+         $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
224+         $ decodedJWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
225+         $ this assertEquals ('abc ' , $ decodedmessage );
226+     }
227+ 
228+     public  function  testInvalidTokenWithIatMicrotime ()
229+     {
230+         $ this expectException (BeforeValidException::class);
231+         $ payload
232+             'message '  => 'abc ' ,
233+             'iat '  => microtime (true ) + 20 , // use microtime in the future 
234+         ];
235+         $ encodedJWT ::encode ($ payload'my_key ' , 'HS256 ' );
236+         JWT ::decode ($ encodednew  Key ('my_key ' , 'HS256 ' ));
169237    }
170238
171239    public  function  testInvalidToken ()
0 commit comments