diff --git a/pkg/response/response.go b/pkg/response/response.go index a77bac6..310d06f 100644 --- a/pkg/response/response.go +++ b/pkg/response/response.go @@ -20,6 +20,7 @@ type BecknRequest struct { type Error struct { Code string `json:"code,omitempty"` Message string `json:"message,omitempty"` + Paths string `json:"paths,omitempty"` } type Message struct { @@ -55,13 +56,17 @@ var DefaultError = Error{ Message: "Internal server error", } -func Nack(ctx context.Context, tp ErrorType, body []byte) ([]byte, error) { +func Nack(ctx context.Context, tp ErrorType, paths string, body []byte) ([]byte, error) { var req BecknRequest if err := json.Unmarshal(body, &req); err != nil { return nil, fmt.Errorf("failed to parse request: %w", err) } errorObj, ok := errorMap[tp] + if paths != "" { + errorObj.Paths = paths + } + var response BecknResponse if !ok { diff --git a/pkg/response/response_test.go b/pkg/response/response_test.go index b282990..242fa72 100644 --- a/pkg/response/response_test.go +++ b/pkg/response/response_test.go @@ -18,6 +18,7 @@ func TestNack(t *testing.T) { wantErrCode string wantErrMsg string wantErr bool + path string }{ { name: "Schema validation error", @@ -27,6 +28,7 @@ func TestNack(t *testing.T) { wantErrCode: "400", wantErrMsg: "Schema validation failed", wantErr: false, + path: "test", }, { name: "Invalid request error", @@ -36,6 +38,7 @@ func TestNack(t *testing.T) { wantErrCode: "401", wantErrMsg: "Invalid request format", wantErr: false, + path: "test", }, { name: "Unknown error type", @@ -45,6 +48,7 @@ func TestNack(t *testing.T) { wantErrCode: "500", wantErrMsg: "Internal server error", wantErr: false, + path: "test", }, { name: "Empty request body", @@ -54,12 +58,14 @@ func TestNack(t *testing.T) { wantErrCode: "400", wantErrMsg: "Schema validation failed", wantErr: false, + path: "test", }, { name: "Invalid JSON", errorType: SchemaValidationErrorType, requestBody: `{invalid json}`, wantErr: true, + path: "test", }, { name: "Complex nested context", @@ -69,12 +75,13 @@ func TestNack(t *testing.T) { wantErrCode: "400", wantErrMsg: "Schema validation failed", wantErr: false, + path: "test", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - resp, err := Nack(ctx, tt.errorType, []byte(tt.requestBody)) + resp, err := Nack(ctx, tt.errorType, tt.path, []byte(tt.requestBody)) if (err != nil) != tt.wantErr { t.Errorf("Nack() error = %v, wantErr %v", err, tt.wantErr)