Chore: Move identity and errutil to apimachinery module (#89116)
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package errhttp
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"k8s.io/apiserver/pkg/endpoints/request"
|
||||
|
||||
"github.com/grafana/grafana/pkg/apimachinery/errutil"
|
||||
)
|
||||
|
||||
func TestWrite(t *testing.T) {
|
||||
// Error without k8s context
|
||||
recorder := doError(t, context.Background())
|
||||
assert.Equal(t, http.StatusGatewayTimeout, recorder.Code)
|
||||
assert.JSONEq(t, `{"message": "Timeout", "messageId": "test.thisIsExpected", "statusCode": 504}`, recorder.Body.String())
|
||||
|
||||
// Another request, but within the k8s framework
|
||||
recorder = doError(t, request.WithRequestInfo(context.Background(), &request.RequestInfo{
|
||||
APIGroup: "TestGroup",
|
||||
}))
|
||||
assert.Equal(t, http.StatusGatewayTimeout, recorder.Code)
|
||||
assert.JSONEq(t, `{
|
||||
"status": "Failure",
|
||||
"reason": "Timeout",
|
||||
"metadata": {},
|
||||
"message": "Timeout",
|
||||
"details": { "uid": "test.thisIsExpected" },
|
||||
"code": 504
|
||||
}`, recorder.Body.String())
|
||||
}
|
||||
|
||||
func doError(t *testing.T, ctx context.Context) *httptest.ResponseRecorder {
|
||||
t.Helper()
|
||||
|
||||
const msgID = "test.thisIsExpected"
|
||||
base := errutil.Timeout(msgID)
|
||||
handler := func(writer http.ResponseWriter, _ *http.Request) {
|
||||
Write(ctx, base.Errorf("got expected error"), writer)
|
||||
}
|
||||
|
||||
req := httptest.NewRequest("GET", "http://localhost:3000/fake", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
|
||||
handler(recorder, req)
|
||||
return recorder
|
||||
}
|
||||
Reference in New Issue
Block a user