Implement getRequestCookies
Co-authored-by: Hector Hurtado <hector.hurtado@bbva.com>
This commit is contained in:
@@ -69,3 +69,15 @@ func getRequestHeaders(w http.ResponseWriter, r *http.Request, h *model.Handler)
|
|||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Add to the note section of the specification the fact that
|
||||||
|
// Cookie keys are CaseSensitive
|
||||||
|
func getRequestCookies(w http.ResponseWriter, r *http.Request, h *model.Handler) {
|
||||||
|
w.Header().Add("Content-Type", "application/octet-stream")
|
||||||
|
name := mux.Vars(r)["name"]
|
||||||
|
if cookie, err := h.Request.Cookie(name); err == nil {
|
||||||
|
_, _ = w.Write([]byte(cookie.Value))
|
||||||
|
} else {
|
||||||
|
w.WriteHeader(http.StatusNotFound)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -560,7 +560,7 @@ func TestGetRequestHeadersReturnsTheFirstCorrectMatchValue(t *testing.T) {
|
|||||||
Writer: httptest.NewRecorder(),
|
Writer: httptest.NewRecorder(),
|
||||||
}
|
}
|
||||||
h.Request.Header.Set("bar", "BAZ")
|
h.Request.Header.Set("bar", "BAZ")
|
||||||
h.Request.Header.Add("bar", "BUX")
|
h.Request.Header.Add("bar", "QUX")
|
||||||
r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET")
|
r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET")
|
||||||
w := httptest.NewRecorder()
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
@@ -571,3 +571,88 @@ func TestGetRequestHeadersReturnsTheFirstCorrectMatchValue(t *testing.T) {
|
|||||||
t.Errorf("Body mismatch. Expected: BAZ. Got: %v", string(body))
|
t.Errorf("Body mismatch. Expected: BAZ. Got: %v", string(body))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetRequestCookies200sOnHappyPath(t *testing.T) {
|
||||||
|
h := model.Handler{
|
||||||
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
|
Writer: httptest.NewRecorder(),
|
||||||
|
}
|
||||||
|
h.Request.AddCookie(&http.Cookie{Name: "bar", Value: "BAZ"})
|
||||||
|
r := createMuxRequest("/handlers/HANDLERID/request/cookies/{name}", "/handlers/HANDLERID/request/cookies/bar", "GET")
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
getRequestCookies(w, r, &h)
|
||||||
|
|
||||||
|
res := w.Result()
|
||||||
|
if res.StatusCode != http.StatusOK {
|
||||||
|
t.Errorf("Status code mismatch. Expected: 200, Got: %d", res.StatusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetRequestCookiesSetsOctectStreamContentType(t *testing.T) {
|
||||||
|
h := model.Handler{
|
||||||
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
|
Writer: httptest.NewRecorder(),
|
||||||
|
}
|
||||||
|
h.Request.AddCookie(&http.Cookie{Name: "bar", Value: "BAZ"})
|
||||||
|
r := createMuxRequest("/handlers/HANDLERID/request/cookies/{name}", "/handlers/HANDLERID/request/cookies/bar", "GET")
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
getRequestCookies(w, r, &h)
|
||||||
|
|
||||||
|
res := w.Result()
|
||||||
|
if res.Header.Get("Content-Type") != "application/octet-stream" {
|
||||||
|
t.Error("Content Type mismatch")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetRequestCookiesReturnsMatchedCookieValue(t *testing.T) {
|
||||||
|
h := model.Handler{
|
||||||
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
|
Writer: httptest.NewRecorder(),
|
||||||
|
}
|
||||||
|
h.Request.AddCookie(&http.Cookie{Name: "bar", Value: "BAZ"})
|
||||||
|
r := createMuxRequest("/handlers/HANDLERID/request/cookies/{name}", "/handlers/HANDLERID/request/cookies/bar", "GET")
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
getRequestCookies(w, r, &h)
|
||||||
|
|
||||||
|
res := w.Result()
|
||||||
|
if body, _ := ioutil.ReadAll(res.Body); string(body) != "BAZ" {
|
||||||
|
t.Errorf("Body mismatch. Expected: BAZ. Got: %v", string(body))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetRequestCookies404sIfCookieDoesntExist(t *testing.T) {
|
||||||
|
h := model.Handler{
|
||||||
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
|
Writer: httptest.NewRecorder(),
|
||||||
|
}
|
||||||
|
r := createMuxRequest("/handlers/HANDLERID/request/cookies/{name}", "/handlers/HANDLERID/request/cookies/bar", "GET")
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
getRequestCookies(w, r, &h)
|
||||||
|
|
||||||
|
res := w.Result()
|
||||||
|
if res.StatusCode != http.StatusNotFound {
|
||||||
|
t.Errorf("Status code mismatch. Expected: 404, Got: %d", res.StatusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetRequestCookiesReturnsTheFirstCorrectMatchValue(t *testing.T) {
|
||||||
|
h := model.Handler{
|
||||||
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
|
Writer: httptest.NewRecorder(),
|
||||||
|
}
|
||||||
|
h.Request.AddCookie(&http.Cookie{Name: "bar", Value: "BAZ"})
|
||||||
|
h.Request.AddCookie(&http.Cookie{Name: "bar", Value: "QUX"})
|
||||||
|
r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET")
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
getRequestCookies(w, r, &h)
|
||||||
|
|
||||||
|
res := w.Result()
|
||||||
|
if body, _ := ioutil.ReadAll(res.Body); string(body) != "BAZ" {
|
||||||
|
t.Errorf("Body mismatch. Expected: BAZ. Got: %v", string(body))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user