|
@@ -0,0 +1,57 @@
|
|
|
+package controller
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "errors"
|
|
|
+ "net/http"
|
|
|
+ "net/http/httptest"
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ "github.com/gravitl/netmaker/models"
|
|
|
+ "github.com/stretchr/testify/assert"
|
|
|
+)
|
|
|
+
|
|
|
+func TestFormatError(t *testing.T) {
|
|
|
+ response := formatError(errors.New("this is a sample error"), "badrequest")
|
|
|
+ assert.Equal(t, http.StatusBadRequest, response.Code)
|
|
|
+ assert.Equal(t, "this is a sample error", response.Message)
|
|
|
+}
|
|
|
+
|
|
|
+func TestReturnSuccessResponse(t *testing.T) {
|
|
|
+ var response models.SuccessResponse
|
|
|
+ handler := func(rw http.ResponseWriter, r *http.Request) {
|
|
|
+ returnSuccessResponse(rw, r, "This is a test message")
|
|
|
+ }
|
|
|
+ req := httptest.NewRequest(http.MethodGet, "http://example.com", nil)
|
|
|
+ w := httptest.NewRecorder()
|
|
|
+ handler(w, req)
|
|
|
+ resp := w.Result()
|
|
|
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
|
|
|
+ assert.Equal(t, "application/json", resp.Header.Get("Content-Type"))
|
|
|
+ //body, err := ioutil.ReadAll(resp.Body)
|
|
|
+ //assert.Nil(t, err)
|
|
|
+ //t.Log(body, string(body))
|
|
|
+ err := json.NewDecoder(resp.Body).Decode(&response)
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.Equal(t, http.StatusOK, response.Code)
|
|
|
+ assert.Equal(t, "This is a test message", response.Message)
|
|
|
+}
|
|
|
+
|
|
|
+func testReturnErrorResponse(t *testing.T) {
|
|
|
+ var response, errMessage models.ErrorResponse
|
|
|
+ errMessage.Code = http.StatusUnauthorized
|
|
|
+ errMessage.Message = "You are not authorized to access this endpoint"
|
|
|
+ handler := func(rw http.ResponseWriter, r *http.Request) {
|
|
|
+ returnErrorResponse(rw, r, errMessage)
|
|
|
+ }
|
|
|
+ req := httptest.NewRequest(http.MethodGet, "http://example.com", nil)
|
|
|
+ w := httptest.NewRecorder()
|
|
|
+ handler(w, req)
|
|
|
+ resp := w.Result()
|
|
|
+ assert.Equal(t, http.StatusUnauthorized, resp.StatusCode)
|
|
|
+ assert.Equal(t, "application/json", resp.Header.Get("Content-Type"))
|
|
|
+ err := json.NewDecoder(resp.Body).Decode(&response)
|
|
|
+ assert.Nil(t, err)
|
|
|
+ assert.Equal(t, http.StatusUnauthorized, response.Code)
|
|
|
+ assert.Equal(t, "You are not authorized to access this endpoint", response.Message)
|
|
|
+}
|