Files
chorus/portal/handler/service_error_test.go
T

46 lines
1.5 KiB
Go

package handler
import (
"net/http/httptest"
"strings"
"testing"
corerouter "git.ilapage.cn/OPC/chorus/internal/core/router"
"git.ilapage.cn/OPC/chorus/portal/service"
"github.com/gin-gonic/gin"
)
func TestMVP1ServiceErrorsHaveStableClientCodes(t *testing.T) {
gin.SetMode(gin.TestMode)
tests := []struct {
err error
code string
want int
}{
{service.ErrInvalidMetadata, "invalid_metadata", 400},
{service.ErrInvalidCapability, "invalid_capability", 400},
{service.ErrInvalidClientID, "invalid_client_id", 400},
{service.ErrImageMapping, "invalid_image_mapping", 400},
{service.ErrImagePosition, "invalid_image_position", 400},
{service.ErrImageRole, "invalid_image_role", 400},
{service.ErrImagePrimary, "invalid_primary_count", 400},
{service.ErrInvalidRoleRule, "invalid_role_rule", 400},
{service.ErrInvalidNote, "invalid_image_note", 400},
{service.ErrInvalidLimit, "invalid_limit", 400},
{service.ErrInvalidCursor, "invalid_cursor", 400},
{service.ErrCursorExpired, "cursor_expired", 400},
{corerouter.ErrRouteNotConfigured, "route_not_configured", 503},
{corerouter.ErrRouteUnavailable, "route_unavailable", 503},
}
for _, test := range tests {
t.Run(test.code, func(t *testing.T) {
response := httptest.NewRecorder()
context, _ := gin.CreateTestContext(response)
(&Handler{}).serviceError(context, test.err)
if response.Code != test.want || !strings.Contains(response.Body.String(), `"code":"`+test.code+`"`) {
t.Fatalf("response=%d %s", response.Code, response.Body.String())
}
})
}
}