fix(t231): expose freight preflight errors
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package httpapi
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"cmroubao/backend-api/internal/usecase"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func TestWriteUsecaseErrorUsesPreflightStatusAndCode(t *testing.T) {
|
||||
testCases := []struct {
|
||||
code string
|
||||
status int
|
||||
}{
|
||||
{"ERP_NOT_CONFIGURED", http.StatusUnprocessableEntity},
|
||||
{"ERP_LOGIN_REJECTED", http.StatusUnprocessableEntity},
|
||||
{"ERP_RESPONSE_INVALID", http.StatusBadGateway},
|
||||
{"OCR_SERVICE_INVALID", http.StatusServiceUnavailable},
|
||||
{"ERP_UNAVAILABLE", http.StatusServiceUnavailable},
|
||||
}
|
||||
for _, testCase := range testCases {
|
||||
t.Run(testCase.code, func(t *testing.T) {
|
||||
gin.SetMode(gin.TestMode)
|
||||
router := gin.New()
|
||||
router.GET("/test", func(ctx *gin.Context) {
|
||||
writeUsecaseError(ctx, &usecase.Error{
|
||||
Kind: usecase.ErrorKindUnavailable,
|
||||
Code: testCase.code,
|
||||
Message: "private upstream response is hidden",
|
||||
Fields: map[string]string{},
|
||||
})
|
||||
})
|
||||
response := httptest.NewRecorder()
|
||||
router.ServeHTTP(response, httptest.NewRequest(http.MethodGet, "/test", nil))
|
||||
if response.Code != testCase.status ||
|
||||
!strings.Contains(response.Body.String(), testCase.code) ||
|
||||
strings.Contains(response.Body.String(), "private upstream") {
|
||||
t.Fatalf("response = %d / %s", response.Code, response.Body)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user