Implemented getRequestHeaders
Co-authored-by: Hector Hurtado <hector.hurtado@bbva.com>
This commit is contained in:
@@ -3,6 +3,7 @@ package data
|
|||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/textproto"
|
||||||
|
|
||||||
"github.com/BBVA/kapow/internal/server/model"
|
"github.com/BBVA/kapow/internal/server/model"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
@@ -52,13 +53,22 @@ func getRequestMatches(w http.ResponseWriter, r *http.Request, h *model.Handler)
|
|||||||
func getRequestParams(w http.ResponseWriter, r *http.Request, h *model.Handler) {
|
func getRequestParams(w http.ResponseWriter, r *http.Request, h *model.Handler) {
|
||||||
w.Header().Add("Content-Type", "application/octet-stream")
|
w.Header().Add("Content-Type", "application/octet-stream")
|
||||||
name := mux.Vars(r)["name"]
|
name := mux.Vars(r)["name"]
|
||||||
if value, ok := h.Request.URL.Query()[name]; ok {
|
if values, ok := h.Request.URL.Query()[name]; ok {
|
||||||
w.Write([]byte(value[0]))
|
w.Write([]byte(values[0]))
|
||||||
} else {
|
} else {
|
||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getRequestHeaders(w http.ResponseWriter, r *http.Request, h *model.Handler) {
|
func getRequestHeaders(w http.ResponseWriter, r *http.Request, h *model.Handler) {
|
||||||
// DELETE ON START
|
w.Header().Add("Content-Type", "application/octet-stream")
|
||||||
|
name := mux.Vars(r)["name"]
|
||||||
|
|
||||||
|
// fmt.Printf("%+v", h.Request.Header)
|
||||||
|
|
||||||
|
if values, ok := h.Request.Header[textproto.CanonicalMIMEHeaderKey(name)]; ok {
|
||||||
|
w.Write([]byte(values[0]))
|
||||||
|
} else {
|
||||||
|
w.WriteHeader(http.StatusNotFound)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -438,11 +438,11 @@ func TestGetRequestParamsReturnsTheFirstCorrectMatchValue(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetRequestHeaders200sOnHappyPath(t *testing.T) {
|
func TestGetRequestHeaders200sOnHappyPath(t *testing.T) {
|
||||||
t.Skip("******** WIP ********")
|
|
||||||
h := model.Handler{
|
h := model.Handler{
|
||||||
Request: httptest.NewRequest("GET", "/", nil),
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
Writer: httptest.NewRecorder(),
|
Writer: httptest.NewRecorder(),
|
||||||
}
|
}
|
||||||
|
h.Request.Header.Set("bar", "BAZ")
|
||||||
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()
|
||||||
|
|
||||||
@@ -450,12 +450,11 @@ func TestGetRequestHeaders200sOnHappyPath(t *testing.T) {
|
|||||||
|
|
||||||
res := w.Result()
|
res := w.Result()
|
||||||
if res.StatusCode != http.StatusOK {
|
if res.StatusCode != http.StatusOK {
|
||||||
t.Error("Status code mismatch")
|
t.Errorf("Status code mismatch. Expected: 200, Got: %d", res.StatusCode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetRequestHeadersSetsOctectStreamContentType(t *testing.T) {
|
func TestGetRequestHeadersSetsOctectStreamContentType(t *testing.T) {
|
||||||
t.Skip("******** WIP ********")
|
|
||||||
h := model.Handler{
|
h := model.Handler{
|
||||||
Request: httptest.NewRequest("GET", "/", nil),
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
Writer: httptest.NewRecorder(),
|
Writer: httptest.NewRecorder(),
|
||||||
@@ -472,7 +471,57 @@ func TestGetRequestHeadersSetsOctectStreamContentType(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetRequestHeadersReturnsTheCorrectMatchValue(t *testing.T) {
|
func TestGetRequestHeadersReturnsTheCorrectMatchValue(t *testing.T) {
|
||||||
t.Skip("******** WIP ********")
|
h := model.Handler{
|
||||||
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
|
Writer: httptest.NewRecorder(),
|
||||||
|
}
|
||||||
|
h.Request.Header.Set("Bar", "BAZ")
|
||||||
|
r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET")
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
getRequestHeaders(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 TestGetRequestHeaders200sWhenHeaderIsEmptyString(t *testing.T) {
|
||||||
|
h := model.Handler{
|
||||||
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
|
Writer: httptest.NewRecorder(),
|
||||||
|
}
|
||||||
|
h.Request.Header.Set("bar", "")
|
||||||
|
r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET")
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
getRequestHeaders(w, r, &h)
|
||||||
|
|
||||||
|
res := w.Result()
|
||||||
|
if res.StatusCode != http.StatusOK {
|
||||||
|
t.Errorf("Status code mismatch. Expected: 200, Got: %d", res.StatusCode)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetRequestHeadersReturnsEmptyBodyWhenHeaderIsEmptyString(t *testing.T) {
|
||||||
|
h := model.Handler{
|
||||||
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
|
Writer: httptest.NewRecorder(),
|
||||||
|
}
|
||||||
|
h.Request.Header.Set("bar", "")
|
||||||
|
r := createMuxRequest("/handlers/HANDLERID/request/headers/{name}", "/handlers/HANDLERID/request/headers/bar", "GET")
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
|
||||||
|
getRequestHeaders(w, r, &h)
|
||||||
|
|
||||||
|
res := w.Result()
|
||||||
|
if body, _ := ioutil.ReadAll(res.Body); string(body) != "" {
|
||||||
|
t.Errorf(`Body mismatch. Expected "". Got: %q`, string(body))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetRequestHeadersReturnsTheCorrectInsensitiveMatchValue(t *testing.T) {
|
||||||
h := model.Handler{
|
h := model.Handler{
|
||||||
Request: httptest.NewRequest("GET", "/", nil),
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
Writer: httptest.NewRecorder(),
|
Writer: httptest.NewRecorder(),
|
||||||
@@ -484,13 +533,12 @@ func TestGetRequestHeadersReturnsTheCorrectMatchValue(t *testing.T) {
|
|||||||
getRequestHeaders(w, r, &h)
|
getRequestHeaders(w, r, &h)
|
||||||
|
|
||||||
res := w.Result()
|
res := w.Result()
|
||||||
if res.Header.Get("bar") != "BAZ" {
|
if body, _ := ioutil.ReadAll(res.Body); string(body) != "BAZ" {
|
||||||
t.Errorf("Body mismatch: Expected: BAZ. Got: %s", res.Header.Get("bar"))
|
t.Errorf("Body mismatch. Expected: BAZ. Got: %v", string(body))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetRequestHeaders404sWhenParamDoesntExist(t *testing.T) {
|
func TestGetRequestHeaders404sWhenHeaderDoesntExist(t *testing.T) {
|
||||||
t.Skip("******** WIP ********")
|
|
||||||
h := model.Handler{
|
h := model.Handler{
|
||||||
Request: httptest.NewRequest("GET", "/", nil),
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
Writer: httptest.NewRecorder(),
|
Writer: httptest.NewRecorder(),
|
||||||
@@ -507,7 +555,6 @@ func TestGetRequestHeaders404sWhenParamDoesntExist(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetRequestHeadersReturnsTheFirstCorrectMatchValue(t *testing.T) {
|
func TestGetRequestHeadersReturnsTheFirstCorrectMatchValue(t *testing.T) {
|
||||||
t.Skip("******** WIP ********")
|
|
||||||
h := model.Handler{
|
h := model.Handler{
|
||||||
Request: httptest.NewRequest("GET", "/", nil),
|
Request: httptest.NewRequest("GET", "/", nil),
|
||||||
Writer: httptest.NewRecorder(),
|
Writer: httptest.NewRecorder(),
|
||||||
@@ -520,7 +567,7 @@ func TestGetRequestHeadersReturnsTheFirstCorrectMatchValue(t *testing.T) {
|
|||||||
getRequestHeaders(w, r, &h)
|
getRequestHeaders(w, r, &h)
|
||||||
|
|
||||||
res := w.Result()
|
res := w.Result()
|
||||||
if res.Header.Get("bar") != "BAZ" {
|
if body, _ := ioutil.ReadAll(res.Body); string(body) != "BAZ" {
|
||||||
t.Errorf("Body mismatch: Expected: BAZ. Got: %s", res.Header.Get("bar"))
|
t.Errorf("Body mismatch. Expected: BAZ. Got: %v", string(body))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user