fix(t232): log freight import diagnostics
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
||||
"net/http/httptest"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -1122,7 +1123,10 @@ func TestFreightImportShowsStablePreflightErrorDialog(t *testing.T) {
|
||||
for _, testCase := range testCases {
|
||||
t.Run(testCase.name, func(t *testing.T) {
|
||||
service := &fakeFreightService{fakeService: &fakeService{}, err: testCase.err}
|
||||
router := newTestRouter(t, service)
|
||||
var event string
|
||||
router := newTestRouterWithLogger(t, service, func(value string) {
|
||||
event = value
|
||||
})
|
||||
page := performRequest(t, router, http.MethodGet, "/freight/import", nil, "")
|
||||
if page.Code != http.StatusOK {
|
||||
t.Fatalf("import page status = %d", page.Code)
|
||||
@@ -1147,10 +1151,44 @@ func TestFreightImportShowsStablePreflightErrorDialog(t *testing.T) {
|
||||
service.createInput.OrderNumber != "ORDER-123" {
|
||||
t.Fatalf("dialog response/input = %d / %s / %+v", response.Code, response.Body, service.createInput)
|
||||
}
|
||||
wantEvent := "freight_import_preflight_failed code=" +
|
||||
testCase.code + " status=" + strconv.Itoa(testCase.status)
|
||||
if event != wantEvent || strings.Contains(event, "private") {
|
||||
t.Fatalf("event = %q, want %q", event, wantEvent)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestFreightImportLogsUnknownFailureWithoutRawError(t *testing.T) {
|
||||
service := &fakeFreightService{
|
||||
fakeService: &fakeService{},
|
||||
err: errors.New("private ERP response with cookie and password"),
|
||||
}
|
||||
var event string
|
||||
router := newTestRouterWithLogger(t, service, func(value string) {
|
||||
event = value
|
||||
})
|
||||
page := performRequest(t, router, http.MethodGet, "/freight/import", nil, "")
|
||||
cookie := csrfCookie(t, page)
|
||||
values := url.Values{
|
||||
"csrf_token": {cookie.Value},
|
||||
"idempotency_key": {mustToken(t)},
|
||||
"mode": {"ORDER_NUMBER"},
|
||||
"order_number": {"ORDER-123"},
|
||||
}
|
||||
request := httptest.NewRequest(http.MethodPost, "/freight/import", strings.NewReader(values.Encode()))
|
||||
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
request.AddCookie(cookie)
|
||||
response := httptest.NewRecorder()
|
||||
router.ServeHTTP(response, request)
|
||||
if response.Code != http.StatusInternalServerError ||
|
||||
event != "freight_import_failed status=500" ||
|
||||
strings.Contains(event, "private") {
|
||||
t.Fatalf("response/event = %d / %q", response.Code, event)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFreightDetailCreatesProcurementTaskWithCSRF(t *testing.T) {
|
||||
const itemID = "00000000-0000-4000-8000-000000000002"
|
||||
service := &fakeProcurementService{
|
||||
@@ -1431,13 +1469,21 @@ func (service *fakeService) AuthorizeOrder(
|
||||
}
|
||||
|
||||
func newTestRouter(t *testing.T, service Service) http.Handler {
|
||||
return newTestRouterWithLogger(t, service, nil)
|
||||
}
|
||||
|
||||
func newTestRouterWithLogger(
|
||||
t *testing.T,
|
||||
service Service,
|
||||
logEvent EventLogger,
|
||||
) http.Handler {
|
||||
t.Helper()
|
||||
gin.SetMode(gin.TestMode)
|
||||
renderer, err := NewRenderer()
|
||||
if err != nil {
|
||||
t.Fatalf("NewRenderer() error = %v", err)
|
||||
}
|
||||
handler, err := NewHandler(service, renderer)
|
||||
handler, err := NewHandler(service, renderer, logEvent)
|
||||
if err != nil {
|
||||
t.Fatalf("NewHandler() error = %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user