2
0

response.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package apitest
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "net/http/httptest"
  6. "testing"
  7. "github.com/porter-dev/porter/api/types"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func AssertResponseExpected(t *testing.T, rr *httptest.ResponseRecorder, expResponse interface{}, gotTarget interface{}) {
  11. err := json.NewDecoder(rr.Body).Decode(gotTarget)
  12. if err != nil {
  13. t.Fatal(err)
  14. }
  15. assert.Equal(
  16. t,
  17. expResponse,
  18. gotTarget,
  19. "incorrect response data",
  20. )
  21. }
  22. func AssertResponseForbidden(t *testing.T, rr *httptest.ResponseRecorder) {
  23. reqErr := &types.ExternalError{}
  24. err := json.NewDecoder(rr.Result().Body).Decode(reqErr)
  25. if err != nil {
  26. t.Fatal(err)
  27. }
  28. expReqErr := &types.ExternalError{
  29. Error: "Forbidden",
  30. }
  31. assert.Equal(t, http.StatusForbidden, rr.Result().StatusCode, "status code should be forbidden")
  32. assert.Equal(t, expReqErr, reqErr, "body should be forbidden error")
  33. }
  34. func AssertResponseInternalServerError(t *testing.T, rr *httptest.ResponseRecorder) {
  35. reqErr := &types.ExternalError{}
  36. err := json.NewDecoder(rr.Result().Body).Decode(reqErr)
  37. if err != nil {
  38. t.Fatal(err)
  39. }
  40. expReqErr := &types.ExternalError{
  41. Error: "An internal error occurred.",
  42. }
  43. assert.Equal(t, http.StatusInternalServerError, rr.Result().StatusCode, "status code should be internal server error")
  44. assert.Equal(t, expReqErr, reqErr, "body should be internal server error")
  45. }
  46. func AssertResponseError(t *testing.T, rr *httptest.ResponseRecorder, statusCode int, expReqErr *types.ExternalError) {
  47. reqErr := &types.ExternalError{}
  48. err := json.NewDecoder(rr.Result().Body).Decode(reqErr)
  49. if err != nil {
  50. t.Fatal(err)
  51. }
  52. assert.Equal(t, statusCode, rr.Result().StatusCode, "status code should match")
  53. assert.Equal(t, expReqErr, reqErr, "body should be matching error")
  54. }