Skip to content

Commit

Permalink
Refactor and tidy up tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nicklaw5 committed Mar 13, 2017
1 parent b3ce61c commit f876a22
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 139 deletions.
120 changes: 40 additions & 80 deletions error_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@ import (
)

func TestBadRequest(t *testing.T) {
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
req := newRequest(t, "GET")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -21,23 +18,18 @@ func TestBadRequest(t *testing.T) {
})
handler.ServeHTTP(rr, req)

if status := rr.Code; status != http.StatusBadRequest {
t.Errorf("Handler returned wrong status code: got %v wanted %v",
status, http.StatusBadRequest)
if err := validateStatusCode(rr.Code, http.StatusBadRequest); err != nil {
t.Fatal(err.Error())
}

expected := `{"success":false,"code":400,"message":"Bad request"}`
if rr.Body.String() != expected {
t.Errorf("Handler returned unexpected body: got %v wanted %v",
rr.Body.String(), expected)
if err := validateResponseBody(rr.Body.String(), expected); err != nil {
t.Fatal(err.Error())
}
}

func TestUnauthorized(t *testing.T) {
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
req := newRequest(t, "GET")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -46,23 +38,18 @@ func TestUnauthorized(t *testing.T) {
})
handler.ServeHTTP(rr, req)

if status := rr.Code; status != http.StatusUnauthorized {
t.Errorf("Handler returned wrong status code: got %v wanted %v",
status, http.StatusUnauthorized)
if err := validateStatusCode(rr.Code, http.StatusUnauthorized); err != nil {
t.Fatal(err.Error())
}

expected := `{"success":false,"code":401,"message":"Unauthorized"}`
if rr.Body.String() != expected {
t.Errorf("Handler returned unexpected body: got %v wanted %v",
rr.Body.String(), expected)
if err := validateResponseBody(rr.Body.String(), expected); err != nil {
t.Fatal(err.Error())
}
}

func TestForbidden(t *testing.T) {
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
req := newRequest(t, "GET")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -71,23 +58,18 @@ func TestForbidden(t *testing.T) {
})
handler.ServeHTTP(rr, req)

if status := rr.Code; status != http.StatusForbidden {
t.Errorf("Handler returned wrong status code: got %v wanted %v",
status, http.StatusForbidden)
if err := validateStatusCode(rr.Code, http.StatusForbidden); err != nil {
t.Fatal(err.Error())
}

expected := `{"success":false,"code":403,"message":"Forbidden"}`
if rr.Body.String() != expected {
t.Errorf("Handler returned unexpected body: got %v wanted %v",
rr.Body.String(), expected)
if err := validateResponseBody(rr.Body.String(), expected); err != nil {
t.Fatal(err.Error())
}
}

func TestNotFound(t *testing.T) {
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
req := newRequest(t, "GET")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -96,23 +78,18 @@ func TestNotFound(t *testing.T) {
})
handler.ServeHTTP(rr, req)

if status := rr.Code; status != http.StatusNotFound {
t.Errorf("Handler returned wrong status code: got %v wanted %v",
status, http.StatusNotFound)
if err := validateStatusCode(rr.Code, http.StatusNotFound); err != nil {
t.Fatal(err.Error())
}

expected := `{"success":false,"code":404,"message":"Not found"}`
if rr.Body.String() != expected {
t.Errorf("Handler returned unexpected body: got %v wanted %v",
rr.Body.String(), expected)
if err := validateResponseBody(rr.Body.String(), expected); err != nil {
t.Fatal(err.Error())
}
}

func TestMethodNotAllowed(t *testing.T) {
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
req := newRequest(t, "GET")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -121,23 +98,18 @@ func TestMethodNotAllowed(t *testing.T) {
})
handler.ServeHTTP(rr, req)

if status := rr.Code; status != http.StatusMethodNotAllowed {
t.Errorf("Handler returned wrong status code: got %v wanted %v",
status, http.StatusMethodNotAllowed)
if err := validateStatusCode(rr.Code, http.StatusMethodNotAllowed); err != nil {
t.Fatal(err.Error())
}

expected := `{"success":false,"code":405,"message":"Method not allowed"}`
if rr.Body.String() != expected {
t.Errorf("Handler returned unexpected body: got %v wanted %v",
rr.Body.String(), expected)
if err := validateResponseBody(rr.Body.String(), expected); err != nil {
t.Fatal(err.Error())
}
}

func TestUnprocessableEntity(t *testing.T) {
req, err := http.NewRequest("POST", "/", nil)
if err != nil {
t.Fatal(err)
}
req := newRequest(t, "POST")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -146,23 +118,18 @@ func TestUnprocessableEntity(t *testing.T) {
})
handler.ServeHTTP(rr, req)

if status := rr.Code; status != http.StatusUnprocessableEntity {
t.Errorf("Handler returned wrong status code: got %v wanted %v",
status, http.StatusUnprocessableEntity)
if err := validateStatusCode(rr.Code, http.StatusUnprocessableEntity); err != nil {
t.Fatal(err.Error())
}

expected := `{"success":false,"code":422,"message":"An error occured"}`
if rr.Body.String() != expected {
t.Errorf("Handler returned unexpected body: got %v wanted %v",
rr.Body.String(), expected)
if err := validateResponseBody(rr.Body.String(), expected); err != nil {
t.Fatal(err.Error())
}
}

func TestConflict(t *testing.T) {
req, err := http.NewRequest("POST", "/", nil)
if err != nil {
t.Fatal(err)
}
req := newRequest(t, "POST")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -171,23 +138,18 @@ func TestConflict(t *testing.T) {
})
handler.ServeHTTP(rr, req)

if status := rr.Code; status != http.StatusConflict {
t.Errorf("Handler returned wrong status code: got %v wanted %v",
status, http.StatusConflict)
if err := validateStatusCode(rr.Code, http.StatusConflict); err != nil {
t.Fatal(err.Error())
}

expected := `{"success":false,"code":409,"message":"An error occured"}`
if rr.Body.String() != expected {
t.Errorf("Handler returned unexpected body: got %v wanted %v",
rr.Body.String(), expected)
if err := validateResponseBody(rr.Body.String(), expected); err != nil {
t.Fatal(err.Error())
}
}

func TestInternalServerError(t *testing.T) {
req, err := http.NewRequest("POST", "/", nil)
if err != nil {
t.Fatal(err)
}
req := newRequest(t, "POST")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -196,14 +158,12 @@ func TestInternalServerError(t *testing.T) {
})
handler.ServeHTTP(rr, req)

if status := rr.Code; status != http.StatusInternalServerError {
t.Errorf("Handler returned wrong status code: got %v wanted %v",
status, http.StatusInternalServerError)
if err := validateStatusCode(rr.Code, http.StatusInternalServerError); err != nil {
t.Fatal(err.Error())
}

expected := `{"success":false,"code":500,"message":"An unexpected error occured"}`
if rr.Body.String() != expected {
t.Errorf("Handler returned unexpected body: got %v wanted %v",
rr.Body.String(), expected)
if err := validateResponseBody(rr.Body.String(), expected); err != nil {
t.Fatal(err.Error())
}
}
57 changes: 35 additions & 22 deletions response_test.go
Original file line number Diff line number Diff line change
@@ -1,18 +1,41 @@
package respond_test

import (
"errors"
"fmt"
"net/http"
"net/http/httptest"
"testing"

resp "github.com/nicklaw5/go-respond"
)

func TestSetHeaders(t *testing.T) {
req, err := http.NewRequest("GET", "/", nil)
func newRequest(t *testing.T, method string) *http.Request {
req, err := http.NewRequest(method, "/", nil)
if err != nil {
t.Fatal(err)
}
return req
}

func validateStatusCode(responseStatusCode int, expectedStatusCode int) error {
if status := responseStatusCode; status != expectedStatusCode {
return errors.New(fmt.Sprintf("Handler returned wrong status code: got %v wanted %v",
status, expectedStatusCode))
}
return nil
}

func validateResponseBody(responseBody string, expectedBody string) error {
if responseBody != expectedBody {
return errors.New(fmt.Sprintf("Handler returned unexpected body: got %v wanted %v",
responseBody, expectedBody))
}
return nil
}

func TestSetHeaders(t *testing.T) {
req := newRequest(t, "GET")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -33,22 +56,17 @@ func TestSetHeaders(t *testing.T) {
handler.ServeHTTP(rr, req)

expected := "headers-two"
if rr.Header().Get("X-Two-1") != expected {
t.Errorf("Handler returned unexpected header: got %v wanted %v",
rr.Header().Get("X-Two-1"), expected)
if err := validateResponseBody(rr.Header().Get("X-Two-1"), expected); err != nil {
t.Fatal(err.Error())
}

if rr.Header().Get("X-Two-2") != expected {
t.Errorf("Handler returned unexpected header: got %v wanted %v",
rr.Header().Get("X-Two-2"), expected)
if err := validateResponseBody(rr.Header().Get("X-Two-2"), expected); err != nil {
t.Fatal(err.Error())
}
}

func TestAddHeader(t *testing.T) {
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
req := newRequest(t, "GET")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -59,17 +77,13 @@ func TestAddHeader(t *testing.T) {
handler.ServeHTTP(rr, req)

expected := "Pong"
if rr.Header().Get("Ping") != expected {
t.Errorf("Handler returned unexpected header: got %v wanted %v",
rr.Header().Get("Ping"), expected)
if err := validateResponseBody(rr.Header().Get("Ping"), expected); err != nil {
t.Fatal(err.Error())
}
}

func TestDeleteHeader(t *testing.T) {
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
t.Fatal(err)
}
req := newRequest(t, "GET")

rr := httptest.NewRecorder()
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
Expand All @@ -80,8 +94,7 @@ func TestDeleteHeader(t *testing.T) {
handler.ServeHTTP(rr, req)

expected := ""
if rr.Header().Get("Content-Type") != expected {
t.Errorf("Handler returned unexpected header: got %v wanted %v",
rr.Header().Get("Content-Type"), expected)
if err := validateResponseBody(rr.Header().Get("Content-Type"), expected); err != nil {
t.Fatal(err.Error())
}
}

0 comments on commit f876a22

Please sign in to comment.