@@ -5,8 +5,10 @@ import (
5
5
"encoding/base64"
6
6
"io/ioutil"
7
7
"math/rand"
8
+ "net/url"
8
9
"os"
9
10
"strings"
11
+ "time"
10
12
11
13
"github.com/aws/aws-lambda-go/events"
12
14
"github.com/aws/aws-lambda-go/lambdacontext"
@@ -64,14 +66,19 @@ var _ = Describe("RequestAccessor tests", func() {
64
66
Expect (binaryBody ).To (Equal (bodyBytes ))
65
67
})
66
68
69
+ now := time .Now ().UTC ()
70
+ urlEncodedTimestamp := url .QueryEscape (now .Format (time .RFC3339 ))
71
+
67
72
mqsRequest := getProxyRequest ("/hello" , "GET" )
68
73
mqsRequest .MultiValueQueryStringParameters = map [string ][]string {
69
- "hello" : {"1" },
70
- "world" : {"2" , "3" },
74
+ "hello" : {"1" },
75
+ "world" : {"2" , "3" },
76
+ url .QueryEscape ("urlEncoded:Timestamp" ): {urlEncodedTimestamp },
71
77
}
72
78
mqsRequest .QueryStringParameters = map [string ]string {
73
- "hello" : "1" ,
74
- "world" : "2" ,
79
+ "hello" : "1" ,
80
+ "world" : "2" ,
81
+ url .QueryEscape ("urlEncoded:Timestamp" ): urlEncodedTimestamp ,
75
82
}
76
83
It ("Populates multiple value query string correctly" , func () {
77
84
httpReq , err := accessor .EventToRequestWithContext (context .Background (), mqsRequest )
@@ -83,22 +90,28 @@ var _ = Describe("RequestAccessor tests", func() {
83
90
Expect ("GET" ).To (Equal (httpReq .Method ))
84
91
85
92
query := httpReq .URL .Query ()
86
- Expect (2 ).To (Equal (len (query )))
93
+ Expect (3 ).To (Equal (len (query )))
87
94
Expect (query ["hello" ]).ToNot (BeNil ())
88
95
Expect (query ["world" ]).ToNot (BeNil ())
96
+ Expect (query ["urlEncoded:Timestamp" ]).ToNot (BeNil ())
89
97
Expect (1 ).To (Equal (len (query ["hello" ])))
90
98
Expect (2 ).To (Equal (len (query ["world" ])))
99
+ Expect (1 ).To (Equal (len (query ["urlEncoded:Timestamp" ])))
91
100
Expect ("1" ).To (Equal (query ["hello" ][0 ]))
92
101
Expect ("2" ).To (Equal (query ["world" ][0 ]))
93
102
Expect ("3" ).To (Equal (query ["world" ][1 ]))
103
+ parsedTime , err := time .Parse (time .RFC3339 , query ["urlEncoded:Timestamp" ][0 ])
104
+ Expect (err ).To (BeNil ())
105
+ Expect (parsedTime ).To (BeTemporally ("~" , now , time .Second ))
94
106
})
95
107
96
108
// Support `QueryStringParameters` for backward compatibility.
97
109
// https://github.com/awslabs/aws-lambda-go-api-proxy/issues/37
98
110
qsRequest := getProxyRequest ("/hello" , "GET" )
99
111
qsRequest .QueryStringParameters = map [string ]string {
100
- "hello" : "1" ,
101
- "world" : "2" ,
112
+ "hello" : "1" ,
113
+ "world" : "2" ,
114
+ url .QueryEscape ("urlEncoded:Timestamp" ): urlEncodedTimestamp ,
102
115
}
103
116
It ("Populates query string correctly" , func () {
104
117
httpReq , err := accessor .EventToRequestWithContext (context .Background (), qsRequest )
@@ -109,13 +122,16 @@ var _ = Describe("RequestAccessor tests", func() {
109
122
Expect ("GET" ).To (Equal (httpReq .Method ))
110
123
111
124
query := httpReq .URL .Query ()
112
- Expect (2 ).To (Equal (len (query )))
125
+ Expect (3 ).To (Equal (len (query )))
113
126
Expect (query ["hello" ]).ToNot (BeNil ())
114
127
Expect (query ["world" ]).ToNot (BeNil ())
115
128
Expect (1 ).To (Equal (len (query ["hello" ])))
116
129
Expect (1 ).To (Equal (len (query ["world" ])))
117
130
Expect ("1" ).To (Equal (query ["hello" ][0 ]))
118
131
Expect ("2" ).To (Equal (query ["world" ][0 ]))
132
+ parsedTime , err := time .Parse (time .RFC3339 , query ["urlEncoded:Timestamp" ][0 ])
133
+ Expect (err ).To (BeNil ())
134
+ Expect (parsedTime ).To (BeTemporally ("~" , now , time .Second ))
119
135
})
120
136
121
137
mvhRequest := getProxyRequest ("/hello" , "GET" )
0 commit comments