@@ -2,23 +2,21 @@ package fiberadapter_test
2
2
3
3
import (
4
4
"context"
5
- "log"
6
5
7
6
"github.com/aws/aws-lambda-go/events"
8
- fiberadaptor "github.com/awslabs/aws-lambda-go-api-proxy/fiber"
9
7
"github.com/gofiber/fiber/v2"
10
8
9
+ fiberadaptor "github.com/awslabs/aws-lambda-go-api-proxy/fiber"
10
+
11
11
. "github.com/onsi/ginkgo"
12
12
. "github.com/onsi/gomega"
13
13
)
14
14
15
15
var _ = Describe ("FiberLambda tests" , func () {
16
16
Context ("Simple ping request" , func () {
17
17
It ("Proxies the event correctly" , func () {
18
- log .Println ("Starting test" )
19
18
app := fiber .New ()
20
19
app .Get ("/ping" , func (c * fiber.Ctx ) error {
21
- log .Println ("Handler!!" )
22
20
return c .SendString ("pong" )
23
21
})
24
22
@@ -40,4 +38,252 @@ var _ = Describe("FiberLambda tests", func() {
40
38
Expect (resp .StatusCode ).To (Equal (200 ))
41
39
})
42
40
})
41
+
42
+ Context ("Request header" , func () {
43
+ It ("Check pass canonical header to fiber" , func () {
44
+ app := fiber .New ()
45
+ app .Post ("/canonical_header" , func (c * fiber.Ctx ) error {
46
+ Expect (c .Get (fiber .HeaderHost )).To (Equal ("localhost" ))
47
+ Expect (c .Get (fiber .HeaderContentType )).To (Equal (fiber .MIMEApplicationJSONCharsetUTF8 ))
48
+ Expect (c .Get (fiber .HeaderUserAgent )).To (Equal ("fiber" ))
49
+
50
+ Expect (c .Cookies ("a" )).To (Equal ("b" ))
51
+ Expect (c .Cookies ("b" )).To (Equal ("c" ))
52
+ Expect (c .Cookies ("c" )).To (Equal ("d" ))
53
+
54
+ Expect (c .Get (fiber .HeaderContentLength )).To (Equal ("77" ))
55
+ Expect (c .Get (fiber .HeaderConnection )).To (Equal ("Keep-Alive" ))
56
+ Expect (c .Get (fiber .HeaderKeepAlive )).To (Equal ("timeout=5, max=1000" ))
57
+ Expect (c .Get (fiber .HeaderTransferEncoding )).To (Equal ("gzip" ))
58
+
59
+ return c .Status (fiber .StatusNoContent ).Send (nil )
60
+ })
61
+
62
+ adapter := fiberadaptor .New (app )
63
+
64
+ req := events.APIGatewayProxyRequest {
65
+ Path : "/canonical_header" ,
66
+ HTTPMethod : "POST" ,
67
+ MultiValueHeaders : map [string ][]string {
68
+ fiber .HeaderHost : {"localhost" },
69
+ fiber .HeaderContentType : {fiber .MIMEApplicationJSONCharsetUTF8 },
70
+ fiber .HeaderUserAgent : {"fiber" },
71
+
72
+ "cookie" : {"a=b" , "b=c;c=d" },
73
+
74
+ fiber .HeaderContentLength : {"77" },
75
+ fiber .HeaderConnection : {"Keep-Alive" },
76
+ fiber .HeaderKeepAlive : {"timeout=5, max=1000" },
77
+ fiber .HeaderTransferEncoding : {"gzip" },
78
+ },
79
+ }
80
+
81
+ resp , err := adapter .ProxyWithContext (context .Background (), req )
82
+
83
+ Expect (err ).To (BeNil ())
84
+ Expect (resp .StatusCode ).To (Equal (fiber .StatusNoContent ))
85
+ Expect (resp .Body ).To (Equal ("" ))
86
+ })
87
+
88
+ It ("Check pass non canonical header to fiber" , func () {
89
+ app := fiber .New ()
90
+ app .Post ("/header" , func (c * fiber.Ctx ) error {
91
+ Expect (c .Get (fiber .HeaderReferer )).To (Equal ("https://github.com/gofiber/fiber" ))
92
+ Expect (c .Get (fiber .HeaderAuthorization )).To (Equal ("Bearer drink_beer_not_coffee" ))
93
+
94
+ c .Context ().Request .Header .VisitAll (func (key , value []byte ) {
95
+ if string (key ) == "K1" {
96
+ Expect (Expect (c .Get ("K1" )).To (Or (Equal ("v1" ), Equal ("v2" ))))
97
+ }
98
+ })
99
+
100
+ return c .Status (fiber .StatusNoContent ).Send (nil )
101
+ })
102
+
103
+ adapter := fiberadaptor .New (app )
104
+
105
+ req := events.APIGatewayProxyRequest {
106
+ Path : "/header" ,
107
+ HTTPMethod : "POST" ,
108
+ MultiValueHeaders : map [string ][]string {
109
+ fiber .HeaderReferer : {"https://github.com/gofiber/fiber" },
110
+ fiber .HeaderAuthorization : {"Bearer drink_beer_not_coffee" },
111
+
112
+ "k1" : {"v1" , "v2" },
113
+ },
114
+ }
115
+
116
+ resp , err := adapter .ProxyWithContext (context .Background (), req )
117
+
118
+ Expect (err ).To (BeNil ())
119
+ Expect (resp .StatusCode ).To (Equal (fiber .StatusNoContent ))
120
+ Expect (resp .Body ).To (Equal ("" ))
121
+ })
122
+ })
123
+
124
+ Context ("Response header" , func () {
125
+ It ("Check pass canonical header to fiber" , func () {
126
+ app := fiber .New ()
127
+ app .Post ("/canonical_header" , func (c * fiber.Ctx ) error {
128
+ c .Set (fiber .HeaderContentType , fiber .MIMEApplicationJSONCharsetUTF8 )
129
+ c .Set (fiber .HeaderServer , "localhost" )
130
+
131
+ c .Cookie (& fiber.Cookie {
132
+ Name : "a" ,
133
+ Value : "b" ,
134
+ HTTPOnly : true ,
135
+ })
136
+ c .Cookie (& fiber.Cookie {
137
+ Name : "b" ,
138
+ Value : "c" ,
139
+ HTTPOnly : true ,
140
+ })
141
+ c .Cookie (& fiber.Cookie {
142
+ Name : "c" ,
143
+ Value : "d" ,
144
+ HTTPOnly : true ,
145
+ })
146
+
147
+ c .Set (fiber .HeaderContentLength , "77" )
148
+ c .Set (fiber .HeaderConnection , "keep-alive" )
149
+
150
+ return c .Status (fiber .StatusNoContent ).Send (nil )
151
+ })
152
+
153
+ adapter := fiberadaptor .New (app )
154
+
155
+ req := events.APIGatewayProxyRequest {
156
+ Path : "/canonical_header" ,
157
+ HTTPMethod : "POST" ,
158
+ }
159
+
160
+ resp , err := adapter .ProxyWithContext (context .Background (), req )
161
+
162
+ Expect (err ).To (BeNil ())
163
+ Expect (resp .StatusCode ).To (Equal (fiber .StatusNoContent ))
164
+ // NOTI: core.NewProxyResponseWriter().GetProxyResponse() => Doesn't use `resp.Header`
165
+ Expect (resp .MultiValueHeaders [fiber .HeaderContentType ]).To (Equal ([]string {fiber .MIMEApplicationJSONCharsetUTF8 }))
166
+ Expect (resp .MultiValueHeaders [fiber .HeaderServer ]).To (Equal ([]string {"localhost" }))
167
+ Expect (resp .MultiValueHeaders [fiber .HeaderSetCookie ]).To (Equal ([]string {"a=b; path=/; HttpOnly; SameSite=Lax" , "b=c; path=/; HttpOnly; SameSite=Lax" , "c=d; path=/; HttpOnly; SameSite=Lax" }))
168
+ Expect (resp .MultiValueHeaders [fiber .HeaderContentLength ]).To (Equal ([]string {"77" }))
169
+ Expect (resp .MultiValueHeaders [fiber .HeaderConnection ]).To (Equal ([]string {"keep-alive" }))
170
+ Expect (resp .Body ).To (Equal ("" ))
171
+ })
172
+ It ("Check pass non canonical header to fiber" , func () {
173
+ app := fiber .New ()
174
+ app .Post ("/header" , func (c * fiber.Ctx ) error {
175
+ c .Links ("http://api.example.com/users?page=2" , "next" , "http://api.example.com/users?page=5" , "last" )
176
+ return c .Redirect ("https://github.com/gofiber/fiber" )
177
+ })
178
+
179
+ adapter := fiberadaptor .New (app )
180
+
181
+ req := events.APIGatewayProxyRequest {
182
+ Path : "/header" ,
183
+ HTTPMethod : "POST" ,
184
+ }
185
+
186
+ resp , err := adapter .ProxyWithContext (context .Background (), req )
187
+
188
+ Expect (err ).To (BeNil ())
189
+ Expect (resp .StatusCode ).To (Equal (fiber .StatusFound ))
190
+ Expect (resp .MultiValueHeaders [fiber .HeaderLocation ]).To (Equal ([]string {"https://github.com/gofiber/fiber" }))
191
+ Expect (resp .MultiValueHeaders [fiber .HeaderLink ]).To (Equal ([]string {"<http://api.example.com/users?page=2>; rel=\" next\" ,<http://api.example.com/users?page=5>; rel=\" last\" " }))
192
+ Expect (resp .Body ).To (Equal ("" ))
193
+ })
194
+ })
195
+
196
+ Context ("Next method" , func () {
197
+ It ("Check missing values in request header" , func () {
198
+ app := fiber .New ()
199
+ app .Post ("/next" , func (c * fiber.Ctx ) error {
200
+ c .Next ()
201
+ Expect (c .Get (fiber .HeaderHost )).To (Equal ("localhost" ))
202
+ Expect (c .Get (fiber .HeaderContentType )).To (Equal (fiber .MIMEApplicationJSONCharsetUTF8 ))
203
+ Expect (c .Get (fiber .HeaderUserAgent )).To (Equal ("fiber" ))
204
+
205
+ Expect (c .Cookies ("a" )).To (Equal ("b" ))
206
+ Expect (c .Cookies ("b" )).To (Equal ("c" ))
207
+ Expect (c .Cookies ("c" )).To (Equal ("d" ))
208
+
209
+ Expect (c .Get (fiber .HeaderContentLength )).To (Equal ("77" ))
210
+ Expect (c .Get (fiber .HeaderConnection )).To (Equal ("Keep-Alive" ))
211
+ Expect (c .Get (fiber .HeaderKeepAlive )).To (Equal ("timeout=5, max=1000" ))
212
+ Expect (c .Get (fiber .HeaderTransferEncoding )).To (Equal ("gzip" ))
213
+
214
+ return c .Status (fiber .StatusNoContent ).Send (nil )
215
+ })
216
+ adapter := fiberadaptor .New (app )
217
+
218
+ req := events.APIGatewayProxyRequest {
219
+ Path : "/next" ,
220
+ HTTPMethod : "POST" ,
221
+ MultiValueHeaders : map [string ][]string {
222
+ fiber .HeaderHost : {"localhost" },
223
+ fiber .HeaderContentType : {fiber .MIMEApplicationJSONCharsetUTF8 },
224
+ fiber .HeaderUserAgent : {"fiber" },
225
+
226
+ "cookie" : {"a=b" , "b=c;c=d" },
227
+
228
+ fiber .HeaderContentLength : {"77" },
229
+ fiber .HeaderConnection : {"Keep-Alive" },
230
+ fiber .HeaderKeepAlive : {"timeout=5, max=1000" },
231
+ fiber .HeaderTransferEncoding : {"gzip" },
232
+ },
233
+ }
234
+
235
+ resp , err := adapter .ProxyWithContext (context .Background (), req )
236
+
237
+ Expect (err ).To (BeNil ())
238
+ Expect (resp .StatusCode ).To (Equal (fiber .StatusNoContent ))
239
+ Expect (resp .Body ).To (Equal ("" ))
240
+ })
241
+
242
+ It ("Check missing values in response header" , func () {
243
+ app := fiber .New ()
244
+ app .Post ("/next" , func (c * fiber.Ctx ) error {
245
+ c .Set (fiber .HeaderContentType , fiber .MIMEApplicationJSONCharsetUTF8 )
246
+ c .Set (fiber .HeaderServer , "localhost" )
247
+
248
+ c .Cookie (& fiber.Cookie {
249
+ Name : "a" ,
250
+ Value : "b" ,
251
+ HTTPOnly : true ,
252
+ })
253
+ c .Cookie (& fiber.Cookie {
254
+ Name : "b" ,
255
+ Value : "c" ,
256
+ HTTPOnly : true ,
257
+ })
258
+ c .Cookie (& fiber.Cookie {
259
+ Name : "c" ,
260
+ Value : "d" ,
261
+ HTTPOnly : true ,
262
+ })
263
+
264
+ c .Set (fiber .HeaderContentLength , "77" )
265
+ c .Set (fiber .HeaderConnection , "keep-alive" )
266
+
267
+ c .Next ()
268
+ return c .Status (fiber .StatusNoContent ).Send (nil )
269
+ })
270
+ adapter := fiberadaptor .New (app )
271
+
272
+ req := events.APIGatewayProxyRequest {
273
+ Path : "/next" ,
274
+ HTTPMethod : "POST" ,
275
+ }
276
+
277
+ resp , err := adapter .ProxyWithContext (context .Background (), req )
278
+
279
+ Expect (err ).To (BeNil ())
280
+ Expect (resp .StatusCode ).To (Equal (fiber .StatusNoContent ))
281
+ Expect (resp .MultiValueHeaders [fiber .HeaderContentType ]).To (Equal ([]string {fiber .MIMEApplicationJSONCharsetUTF8 }))
282
+ Expect (resp .MultiValueHeaders [fiber .HeaderServer ]).To (Equal ([]string {"localhost" }))
283
+ Expect (resp .MultiValueHeaders [fiber .HeaderSetCookie ]).To (Equal ([]string {"a=b; path=/; HttpOnly; SameSite=Lax" , "b=c; path=/; HttpOnly; SameSite=Lax" , "c=d; path=/; HttpOnly; SameSite=Lax" }))
284
+ Expect (resp .MultiValueHeaders [fiber .HeaderContentLength ]).To (Equal ([]string {"77" }))
285
+ Expect (resp .MultiValueHeaders [fiber .HeaderConnection ]).To (Equal ([]string {"keep-alive" }))
286
+ Expect (resp .Body ).To (Equal ("" ))
287
+ })
288
+ })
43
289
})
0 commit comments