@@ -14,7 +14,7 @@ CREATE EXTENSION pgtap;
14
14
CREATE EXTENSION pgjwt;
15
15
16
16
BEGIN ;
17
- SELECT plan(14 );
17
+ SELECT plan(23 );
18
18
19
19
SELECT
20
20
is(sign(' {"sub":"1234567890","name":"John Doe","admin":true}' , ' secret' ),
@@ -131,5 +131,101 @@ SELECT
131
131
);
132
132
133
133
134
+ SELECT
135
+ results_eq(
136
+ $$SELECT header::text , payload::text , valid FROM verify(
137
+ E' eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJuYmYiOiJuby1kb3VibGUifQ.6TDHvMKq3Z67KaexRMuhoQ20sYSj9jConcUCO3g2bGyHXACq-FPkJIRAsy1xX90fWKieIAW_tz-4bbFLwwOTPg' ,
138
+ ' secret' , ' HS512' )$$,
139
+ $$VALUES (' {"alg":"HS512","typ":"JWT"}' , ' {"nbf":"no-double"}' , true)$$,
140
+ ' verify() should ignore a nbf claim with a invalid value'
141
+ );
142
+
143
+
144
+ SELECT
145
+ results_eq(
146
+ $$SELECT header::text , payload::text , valid FROM verify(
147
+ E' eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOiI3NXoifQ.nfXYiSNNdYNsLrQp5Zry9p0xDCh_CkMSY1dOdqDCLc1YrDxrItwEmZIlTi3BBO8_9OCameSKMyGysYGDCNoaRg' ,
148
+ ' secret' , ' HS512' )$$,
149
+ $$VALUES (' {"alg":"HS512","typ":"JWT"}' , ' {"exp":"75z"}' , true)$$,
150
+ ' verify() should ignore a exp claim with a invalid value'
151
+ );
152
+
153
+
154
+ SELECT
155
+ results_eq(
156
+ $$SELECT valid
157
+ FROM verify(sign(json_build_object(' nbf' , EXTRACT (EPOCH FROM CURRENT_TIMESTAMP ) + 1 ), ' secret' , ' HS512' ), ' secret' , ' HS512' )$$,
158
+ $$VALUES (false)$$,
159
+ ' verify() should not verify a jwt checked before its nbf claim'
160
+ );
161
+
162
+
163
+ SELECT
164
+ results_eq(
165
+ $$SELECT valid
166
+ FROM verify(sign(json_build_object(' nbf' , EXTRACT (EPOCH FROM CURRENT_TIMESTAMP ) - 1 ), ' secret' , ' HS512' ), ' secret' , ' HS512' )$$,
167
+ $$VALUES (true)$$,
168
+ ' verify() should verify a jwt checked after its nbf claim'
169
+ );
170
+
171
+
172
+ SELECT
173
+ results_eq(
174
+ $$SELECT valid
175
+ FROM verify(sign(json_build_object(' exp' , EXTRACT (EPOCH FROM CURRENT_TIMESTAMP ) - 1 ), ' secret' , ' HS512' ), ' secret' , ' HS512' )$$,
176
+ $$VALUES (false)$$,
177
+ ' verify() should not verify a jwt checked after its exp claim'
178
+ );
179
+
180
+
181
+ SELECT
182
+ results_eq(
183
+ $$SELECT valid
184
+ FROM verify(sign(json_build_object(' exp' , EXTRACT (EPOCH FROM CURRENT_TIMESTAMP ) + 1 ), ' secret' , ' HS512' ), ' secret' , ' HS512' )$$,
185
+ $$VALUES (true)$$,
186
+ ' verify() should verify a jwt checked before its exp claim'
187
+ );
188
+
189
+
190
+
191
+ SELECT
192
+ results_eq(
193
+ $$SELECT valid
194
+ FROM verify(sign(json_build_object(' exp' , EXTRACT (EPOCH FROM CURRENT_TIMESTAMP ) + 1 ), ' secret' , ' HS512' ), ' secret' , ' HS512' )$$,
195
+ $$VALUES (true)$$,
196
+ ' verify() should verify a jwt checked before its exp claim'
197
+ );
198
+
199
+ SELECT
200
+ results_eq(
201
+ $$SELECT valid
202
+ FROM verify(sign(
203
+ json_build_object(
204
+ ' nbf' , EXTRACT (EPOCH FROM CURRENT_TIMESTAMP ) - 3 ,
205
+ ' exp' , EXTRACT (EPOCH FROM CURRENT_TIMESTAMP ) - 1
206
+ ),
207
+ ' secret' , ' HS512' ), ' secret' , ' HS512' )$$,
208
+ $$VALUES (false)$$,
209
+ ' verify() should not verify a jwt checked outside of its claimed nbf-exp range'
210
+ );
211
+
212
+
213
+ SELECT
214
+ results_eq(
215
+ $$SELECT valid
216
+ FROM verify(
217
+ sign(
218
+ json_build_object(
219
+ ' nbf' , EXTRACT (EPOCH FROM CURRENT_TIMESTAMP ) - 3 ,
220
+ ' exp' , EXTRACT (EPOCH FROM CURRENT_TIMESTAMP ) + 3
221
+ ),
222
+ ' secret' , ' HS512'
223
+ ),
224
+ ' secret' , ' HS512' )$$,
225
+ $$VALUES (true)$$,
226
+ ' verify() should verify a jwt checked within its claimed nbf-exp range'
227
+ );
228
+
229
+
134
230
SELECT * FROM finish();
135
231
ROLLBACK ;
0 commit comments