@@ -5,10 +5,12 @@ import (
55 "fmt"
66 "net/http"
77 "testing"
8+ "time"
89
910 assertTestify "github.com/stretchr/testify/assert"
1011 container_test "github.com/tsuru/lua-resty-libjwt/e2e/container"
1112 jwks_test "github.com/tsuru/lua-resty-libjwt/e2e/jwks"
13+ nginx_test "github.com/tsuru/lua-resty-libjwt/e2e/nginx"
1214 request_test "github.com/tsuru/lua-resty-libjwt/e2e/request"
1315)
1416
@@ -152,4 +154,62 @@ func TestNginxContainer(t *testing.T) {
152154 assert .Equal (http .StatusUnauthorized , statusCode )
153155 assert .Equal ("{\" message\" :\" token not found\" }\n " , string (body ))
154156 })
157+
158+ t .Run ("Should return an error when JWT is expired" , func (t * testing.T ) {
159+ assert := assertTestify .New (t )
160+ containerTest .Clear ()
161+ containerTest .ChangeNginxConfigReadFile ("./nginx/nginx.private.jwks.conf" )
162+ date := time .Now ()
163+ jwt , jwks , _ := jwks_test .Generate (
164+ jwks_test.JWTParams {KID : "tsuru-kid-123" , Iat : date .Add (- 2 * time .Hour ).Unix (), Exp : date .Add (- 1 * time .Hour ).Unix ()},
165+ jwks_test.JWKSParams {KID : "tsuru-kid-123" })
166+ containerTest .AddFiles ([]container_test.File {
167+ {Path : "/usr/share/tokens/jwks.json" , File : jwks },
168+ })
169+ body , statusCode , err := request_test .Do (request_test.Params {
170+ URL : URL ,
171+ HeaderKey : "Authorization" ,
172+ HeaderValue : fmt .Sprintf ("Bearer %s" , jwt ),
173+ })
174+ assert .NoError (err )
175+ assert .Equal (http .StatusUnauthorized , statusCode )
176+ assert .Equal ("{\" message\" :\" token not valid\" }\n " , string (body ))
177+ })
178+
179+ t .Run ("Should return success when a valid JWKS is provided" , func (t * testing.T ) {
180+ assert := assertTestify .New (t )
181+ containerTest .Clear ()
182+ nginxConfBytes , err := nginx_test .ReplaceNginxConfig ("./nginx/nginx.private.jwks.conf" ,
183+ []string {"\" /usr/share/tokens/jwks_1.json\" " , "\" /usr/share/tokens/jwks_2.json\" " })
184+ assert .NoError (err )
185+ containerTest .ChangeNginxConfig (nginxConfBytes )
186+ _ , jwksOne , _ := jwks_test .Generate (
187+ jwks_test.JWTParams {KID : "tsuru-kid-123" },
188+ jwks_test.JWKSParams {KID : "tsuru-kid-123" })
189+ containerTest .AddFiles ([]container_test.File {
190+ {Path : "/usr/share/tokens/jwks_1.json" , File : jwksOne },
191+ })
192+ jwtRequest , jwksRequest , _ := jwks_test .Generate (
193+ jwks_test.JWTParams {KID : "kid-123" },
194+ jwks_test.JWKSParams {KID : "kid-123" })
195+ body , statusCode , err := request_test .Do (request_test.Params {
196+ URL : URL ,
197+ HeaderKey : "Authorization" ,
198+ HeaderValue : fmt .Sprintf ("Bearer %s" , jwtRequest ),
199+ })
200+ assert .NoError (err )
201+ assert .Equal (http .StatusUnauthorized , statusCode )
202+ assert .Equal ("{\" message\" :\" token not valid\" }\n " , string (body ))
203+ containerTest .AddFiles ([]container_test.File {
204+ {Path : "/usr/share/tokens/jwks_2.json" , File : jwksRequest },
205+ })
206+ _ , statusCode , err = request_test .Do (request_test.Params {
207+ URL : URL ,
208+ HeaderKey : "Authorization" ,
209+ HeaderValue : fmt .Sprintf ("Bearer %s" , jwtRequest ),
210+ })
211+ assert .NoError (err )
212+ assert .Equal (http .StatusOK , statusCode )
213+ })
214+
155215}
0 commit comments