67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package service
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestClassifyKiroHTTPErrorBadRequestCategories(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
body string
|
|
want string
|
|
}{
|
|
{
|
|
name: "schema",
|
|
body: `{"message":"Improperly formed request: inputSchema.properties must be an object"}`,
|
|
want: kiroErrorBadRequestSchema,
|
|
},
|
|
{
|
|
name: "tool pairing",
|
|
body: `{"message":"tool_use must be paired with a matching tool_result"}`,
|
|
want: kiroErrorBadRequestToolPairing,
|
|
},
|
|
{
|
|
name: "invalid model id",
|
|
body: `{"message":"invalid modelId: model not supported"}`,
|
|
want: kiroErrorBadRequestInvalidModel,
|
|
},
|
|
{
|
|
name: "invalid model upstream",
|
|
body: `{"error":{"message":"Invalid model. Please select a different model to continue.","type":"upstream_error"}}`,
|
|
want: kiroErrorBadRequestInvalidModel,
|
|
},
|
|
{
|
|
name: "invalid model reason",
|
|
body: `{"message":"model route unavailable","reason":"INVALID_MODEL_ID"}`,
|
|
want: kiroErrorBadRequestInvalidModel,
|
|
},
|
|
{
|
|
name: "auth",
|
|
body: `{"error":"invalid_grant","message":"Invalid refresh token provided"}`,
|
|
want: kiroErrorBadRequestAuth,
|
|
},
|
|
{
|
|
name: "quota",
|
|
body: `{"message":"resource has been exhausted"}`,
|
|
want: kiroErrorBadRequestQuota,
|
|
},
|
|
{
|
|
name: "unknown",
|
|
body: `{"message":"bad request"}`,
|
|
want: kiroErrorBadRequestUnknown,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
classification := classifyKiroHTTPError(http.StatusBadRequest, tt.body)
|
|
require.Equal(t, tt.want, classification.Category)
|
|
require.Equal(t, http.StatusBadRequest, classification.StatusCode)
|
|
require.Equal(t, tt.body, classification.Message)
|
|
})
|
|
}
|
|
}
|