63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package ezhandler_test
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"codeberg.org/danjones000/ezhandler"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
var (
|
|
errTest = errors.New("test error")
|
|
)
|
|
|
|
func TestNewHelper(t *testing.T) {
|
|
mockErrorHandler := func(w http.ResponseWriter, r *http.Request, err error) {}
|
|
helper := ezhandler.NewHelper(mockErrorHandler)
|
|
assert.NotNil(t, helper)
|
|
}
|
|
|
|
func runHelperTest(t *testing.T, name string, handlerErr, expectedErr error, expectedErrorHandlerCalled bool, handlerType string) {
|
|
t.Run(name, func(t *testing.T) {
|
|
var errorHandlerCalled bool
|
|
mockErrorHandler := func(w http.ResponseWriter, r *http.Request, err error) {
|
|
errorHandlerCalled = true
|
|
assert.Equal(t, expectedErr, err)
|
|
}
|
|
helper := ezhandler.NewHelper(mockErrorHandler)
|
|
|
|
req := httptest.NewRequest(http.MethodGet, "/", http.NoBody)
|
|
rec := httptest.NewRecorder()
|
|
|
|
var wrappedHandler http.Handler
|
|
switch handlerType {
|
|
case "Handler":
|
|
mockHandler := ezhandler.HandlerFunc(func(w http.ResponseWriter, r *http.Request) error {
|
|
return handlerErr
|
|
})
|
|
wrappedHandler = helper.Handler(mockHandler)
|
|
case "HandlerFunc":
|
|
mockHandlerFunc := ezhandler.HandlerFunc(func(w http.ResponseWriter, r *http.Request) error {
|
|
return handlerErr
|
|
})
|
|
wrappedHandler = helper.HandlerFunc(mockHandlerFunc)
|
|
}
|
|
|
|
wrappedHandler.ServeHTTP(rec, req)
|
|
|
|
assert.Equal(t, expectedErrorHandlerCalled, errorHandlerCalled)
|
|
})
|
|
}
|
|
|
|
func TestHelper_Handler(t *testing.T) {
|
|
runHelperTest(t, "no error", nil, nil, false, "Handler")
|
|
runHelperTest(t, "with error", errTest, errTest, true, "Handler")
|
|
}
|
|
|
|
func TestHelper_HandlerFunc(t *testing.T) {
|
|
runHelperTest(t, "no error", nil, nil, false, "HandlerFunc")
|
|
runHelperTest(t, "with error", errTest, errTest, true, "HandlerFunc")
|
|
}
|