(Feat): Initial Commit
This commit is contained in:
80
internal/api/httperrors/error_test.go
Normal file
80
internal/api/httperrors/error_test.go
Normal file
@@ -0,0 +1,80 @@
|
||||
package httperrors_test
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"allaboutapps.dev/aw/go-starter/internal/api/httperrors"
|
||||
"allaboutapps.dev/aw/go-starter/internal/types"
|
||||
"github.com/go-openapi/swag"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestHTTPErrorSimple(t *testing.T) {
|
||||
err := httperrors.NewHTTPError(http.StatusNotFound, types.PublicHTTPErrorTypeGeneric, http.StatusText(http.StatusNotFound))
|
||||
require.Equal(t, "HTTPError 404 (generic): Not Found", err.Error())
|
||||
}
|
||||
|
||||
func TestHTTPErrorDetail(t *testing.T) {
|
||||
err := httperrors.NewHTTPErrorWithDetail(http.StatusNotFound, types.PublicHTTPErrorTypeGeneric, http.StatusText(http.StatusNotFound), "ToS violation")
|
||||
require.Equal(t, "HTTPError 404 (generic): Not Found - ToS violation", err.Error())
|
||||
}
|
||||
|
||||
func TestHTTPErrorInternalError(t *testing.T) {
|
||||
err := httperrors.NewHTTPError(http.StatusInternalServerError, types.PublicHTTPErrorTypeGeneric, http.StatusText(http.StatusInternalServerError))
|
||||
|
||||
err.Internal = sql.ErrConnDone
|
||||
|
||||
require.Equal(t, "HTTPError 500 (generic): Internal Server Error, sql: connection is already closed", err.Error())
|
||||
}
|
||||
|
||||
func TestHTTPErrorAdditionalData(t *testing.T) {
|
||||
err := httperrors.NewHTTPError(http.StatusInternalServerError, types.PublicHTTPErrorTypeGeneric, http.StatusText(http.StatusInternalServerError))
|
||||
|
||||
err.AdditionalData = map[string]interface{}{
|
||||
"key1": "value1",
|
||||
"key2": "value2",
|
||||
}
|
||||
|
||||
require.Equal(t, "HTTPError 500 (generic): Internal Server Error. Additional: key1=value1, key2=value2", err.Error())
|
||||
}
|
||||
|
||||
var valErrs = append(make([]*types.HTTPValidationErrorDetail, 0, 2), &types.HTTPValidationErrorDetail{
|
||||
Key: swag.String("test1"),
|
||||
In: swag.String("body.test1"),
|
||||
Error: swag.String("ValidationError"),
|
||||
}, &types.HTTPValidationErrorDetail{
|
||||
Key: swag.String("test2"),
|
||||
In: swag.String("body.test2"),
|
||||
Error: swag.String("Validation Error"),
|
||||
})
|
||||
|
||||
func TestHTTPValidationErrorSimple(t *testing.T) {
|
||||
err := httperrors.NewHTTPValidationError(http.StatusBadRequest, types.PublicHTTPErrorTypeGeneric, http.StatusText(http.StatusBadRequest), valErrs)
|
||||
require.Equal(t, "HTTPValidationError 400 (generic): Bad Request - Validation: test1 (in body.test1): ValidationError, test2 (in body.test2): Validation Error", err.Error())
|
||||
}
|
||||
|
||||
func TestHTTPValidationErrorDetail(t *testing.T) {
|
||||
err := httperrors.NewHTTPValidationErrorWithDetail(http.StatusBadRequest, types.PublicHTTPErrorTypeGeneric, http.StatusText(http.StatusBadRequest), valErrs, "Did API spec change?")
|
||||
require.Equal(t, "HTTPValidationError 400 (generic): Bad Request - Did API spec change? - Validation: test1 (in body.test1): ValidationError, test2 (in body.test2): Validation Error", err.Error())
|
||||
}
|
||||
|
||||
func TestHTTPValidationErrorInternalError(t *testing.T) {
|
||||
err := httperrors.NewHTTPValidationError(http.StatusBadRequest, types.PublicHTTPErrorTypeGeneric, http.StatusText(http.StatusBadRequest), valErrs)
|
||||
|
||||
err.Internal = sql.ErrConnDone
|
||||
|
||||
require.Equal(t, "HTTPValidationError 400 (generic): Bad Request, sql: connection is already closed - Validation: test1 (in body.test1): ValidationError, test2 (in body.test2): Validation Error", err.Error())
|
||||
}
|
||||
|
||||
func TestHTTPValidationErrorAdditionalData(t *testing.T) {
|
||||
err := httperrors.NewHTTPValidationError(http.StatusBadRequest, types.PublicHTTPErrorTypeGeneric, http.StatusText(http.StatusBadRequest), valErrs)
|
||||
|
||||
err.AdditionalData = map[string]interface{}{
|
||||
"key1": "value1",
|
||||
"key2": "value2",
|
||||
}
|
||||
|
||||
require.Equal(t, "HTTPValidationError 400 (generic): Bad Request. Additional: key1=value1, key2=value2 - Validation: test1 (in body.test1): ValidationError, test2 (in body.test2): Validation Error", err.Error())
|
||||
}
|
||||
Reference in New Issue
Block a user