diff --git a/errors/error_test.go b/errors/error_test.go index 48f1eb1..0e101b7 100644 --- a/errors/error_test.go +++ b/errors/error_test.go @@ -41,5 +41,6 @@ func TestErr(t *testing.T) { err = err.WithError(otherError) - assert.Equal(t, otherError.Error(), err.Error()) + assert.Equal(t, expectedMessage, err.Error(), "WithError should not override an explicit error message") + assert.Equal(t, otherError, errors.Unwrap(err), "WithError should set the source error for debug/logging") } diff --git a/middleware/body_decoder.go b/middleware/body_decoder.go index 465f5bf..4a09752 100644 --- a/middleware/body_decoder.go +++ b/middleware/body_decoder.go @@ -147,6 +147,15 @@ func (m BodyDecoder) Doc(builder *openapi.DocBuilder) error { builder.WithBody(m.BodyPtr, openapi.WithMimeType(contentType)) } + builder. + WithError(400, "invalid_content_type", "Unable to resolve content type"). + WithError(400, "body_error", "Failed to read request body"). + WithError(400, "invalid_body_format", "Failed to decode request body"). + WithError(400, "missing_param", "A required field is missing"). + WithError(400, "body_validation_failed", "A field does not match the required pattern"). + WithError(400, "enum_validation_failed", "A field value is not in the allowed enum values"). + WithError(400, "invalid_body", "Body validation failed") + return builder.Error() } diff --git a/middleware/path_parameters.go b/middleware/path_parameters.go index f1f6384..4d7f0d7 100644 --- a/middleware/path_parameters.go +++ b/middleware/path_parameters.go @@ -79,5 +79,9 @@ func (m PathParameters) Doc(builder *openapi.DocBuilder) error { return nil } - return builder.WithParams(m.Parameters).Error() + builder. + WithParams(m.Parameters). + WithError(400, "invalid_param_type", "A path parameter has an invalid type") + + return builder.Error() } diff --git a/middleware/query_parameters.go b/middleware/query_parameters.go index f04d309..797e5f7 100644 --- a/middleware/query_parameters.go +++ b/middleware/query_parameters.go @@ -42,5 +42,9 @@ func (m QueryParameters) Doc(builder *openapi.DocBuilder) error { return nil } - return builder.WithParams(m.Parameters).Error() + builder. + WithParams(m.Parameters). + WithError(422, "query_params_encoding", "Failed to decode query parameters") + + return builder.Error() }