diff --git a/internal/server/control/control.go b/internal/server/control/control.go index 8e48717..d948e86 100644 --- a/internal/server/control/control.go +++ b/internal/server/control/control.go @@ -3,7 +3,6 @@ package control import ( "encoding/json" "fmt" - "io" "io/ioutil" "log" "net/http" @@ -59,7 +58,14 @@ func addRoute(res http.ResponseWriter, req *http.Request) { res.WriteHeader(http.StatusBadRequest) return } - funcAdd(model.Route{}) + if route.Method == "" { + res.WriteHeader(http.StatusUnprocessableEntity) + return + } + created := funcAdd(route) + createdBytes, _ := json.Marshal(created) + res.WriteHeader(http.StatusCreated) - _, _ = io.Copy(res, req.Body) + res.Header().Set("Content-Type", "application/json") + res.Write(createdBytes) } diff --git a/internal/server/control/control_test.go b/internal/server/control/control_test.go index a7c2b00..298348b 100644 --- a/internal/server/control/control_test.go +++ b/internal/server/control/control_test.go @@ -13,7 +13,6 @@ import ( ) func TestAddRouteReturnsBadRequestWhenMalformedJSONBody(t *testing.T) { - reqPayload := `{ method": "GET", url_pattern": "/hello", @@ -33,7 +32,6 @@ func TestAddRouteReturnsBadRequestWhenMalformedJSONBody(t *testing.T) { } func TestAddRouteReturns422ErrorWhenMandatoryFieldsMissing(t *testing.T) { - t.Skip("****** WIP ******") reqPayload := `{ }` @@ -83,7 +81,7 @@ func TestAddRouteReturnsCreated(t *testing.T) { respJson := model.Route{} if err := json.Unmarshal(resp.Body.Bytes(), &respJson); err == nil { - t.Errorf("Invalid JSON response. %s", resp.Body.String()) + t.Errorf("Invalid JSON response. %s", resp.Body.String()) //FIXME: String comparsion not working } expectedRouteSpec := model.Route{Method: "GET", Pattern: "/hello", Entrypoint: "/bin/sh -c", Command: "echo Hello World | kapow set /response/body", Index: 0, ID: "ROUTE_XXXXXXXXXXXXXXXXXX"}