openmeter / pkg /framework /commonhttp /errors_test.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 9)
fea99b3 verified
Raw
History Blame Contribute Delete
1.45 kB
package commonhttp_test
import (
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/require"
"github.com/openmeterio/openmeter/pkg/framework/commonhttp"
"github.com/openmeterio/openmeter/pkg/models"
)
func TestHandleIssueIfHTTPStatusKnown(t *testing.T) {
test_err_code := models.ErrorCode("test_err_code")
t.Run("Should hide http status code attribute", func(t *testing.T) {
err := models.NewValidationIssue(test_err_code, "something went wrong", commonhttp.WithHTTPStatusCodeAttribute(http.StatusBadRequest))
require.Error(t, err)
writer := httptest.NewRecorder()
require.True(t, commonhttp.HandleIssueIfHTTPStatusKnown(t.Context(), err, writer))
res := writer.Result()
defer res.Body.Close()
require.Equal(t, http.StatusBadRequest, res.StatusCode)
var body map[string]interface{}
require.NoError(t, json.Unmarshal(writer.Body.Bytes(), &body))
extensions, ok := body["extensions"].(map[string]interface{})
require.True(t, ok)
issues, ok := extensions["validationErrors"].([]interface{})
require.True(t, ok)
require.Len(t, issues, 1)
issue, ok := issues[0].(map[string]interface{})
require.True(t, ok)
require.NotContains(t, issue, "commonhttp.httpAttributeKey:openmeter.http.status_code")
require.Equal(t, string(test_err_code), issue["code"])
require.Contains(t, issue, "message")
require.Contains(t, issue, "severity")
require.Len(t, issue, 3)
})
}